- UID
- 2
- 积分
- 2874604
- 威望
- 1387331 布
- 龙e币
- 1487273 刀
- 在线时间
- 13155 小时
- 注册时间
- 2009-12-3
- 最后登录
- 2024-11-24
|
multicharts 如何DIY日内分时线
分时线,为当日成交的平均价格,即总成交金额/总成交量。
由于MC上无成交金额字段,因此只能使用逐笔tick累加的方式计算总成交金额。总成交金额 = Σ (每笔成交价格*每笔成交量);总成交量 = Σ (每笔成交量)。
因此分时线需要使用1 Tick周期图表,累积计算当日的总成交金额,除以当日的总成交量即可。
具体代码参考后面的说明。
- 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);
复制代码 注释版(不要直接在MC中使用,中文会显示乱码,虽然不影响正常使用):- 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); // 画线
复制代码 |
论坛官方微信、群(期货热点、量化探讨、开户与绑定实盘)
|