龙听期货论坛's Archiver

C
+
+


 微信: QQ:

龙听 发表于 2023-10-30 15:58

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]