multicharts 如何DIY日内分时线
分时线,为当日成交的平均价格,即总成交金额/总成交量。由于MC上无成交金额字段,因此只能使用逐笔tick累加的方式计算总成交金额。总成交金额 = Σ (每笔成交价格*每笔成交量);总成交量 = Σ (每笔成交量)。
因此分时线需要使用1 Tick周期图表,累积计算当日的总成交金额,除以当日的总成交量即可。
具体代码参考后面的说明。
[img]http://p.algo2.net/2023/1030/6a45d3c801681.png[/img][code]
var: a1(0), cjl(0), avgline(0) ;
condition1 = ( time_s > 145000 and time_s < 152000 ) ;
condition2 = ( time_s > 205900 and time_s < 210100 ) or ( time_s > 085900 and time_s < 090100 ) ;
if condition1[1] and condition2 then begin
a1 = close*Ticks ;
cjl = Ticks ;
end
else begin
a1 = a1 + close*Ticks;
cjl = cjl + Ticks;
end ;
if cjl<>0 then avgline = a1/cjl else avgline = close ;
Plot1(avgline);
[/code]注释版(不要直接在MC中使用,中文会显示乱码,虽然不影响正常使用):[code]
var: a1(0), cjl(0), avgline(0) ; //定义3个变量,a1为总成交金额,计算方式为累加每笔的成交金额;cjl为总的成交量,累加计算出的每笔成交量;avgline为计算的实时的分时线价格;
condition1 = ( time_s > 145000 and time_s < 152000 ) ; // 判断该笔tick的时间是否在收盘的时段范围
condition2 = ( time_s > 205900 and time_s < 210100 ) or ( time_s > 085900 and time_s < 090100 ) ; // 判断该笔tick的时间是否在开盘的时段范围
if condition1[1] and condition2 then begin // 如果上一笔tick的时间是在每天收盘时间,且当前的tick是每日的开市时间,那么代表这笔tick即为当日的开盘tick
a1 = close*Ticks ; // 在开盘第一笔tick的时候,将a1和cjl重新开始计算
cjl = Ticks ;
end
else begin
a1 = a1 + close*Ticks; // 在第二笔及后续的tick的时候,a1和cjl分别进行累加
cjl = cjl + Ticks;
end ;
if cjl<>0 then avgline = a1/cjl else avgline = close ; // 计算a1和cjl的比值,即可得到当日的均价
Plot1(avgline); // 画线
[/code]
页:
[1]