花生网

标题: 请教运行模式的几种区别 [打印本页]

作者: benyip    时间: 2013-4-9 20:15     标题: 请教运行模式的几种区别

RUN_BY_BAR
RUN_BY_SERIE
RUN_EVERY_BAR
RUN_EVERY_TICK

这几种模式的写法区别:
1、技术指标:                      公式写法:
     a、逐行,tick触发: 默认方式,可不写
     b、逐行,K触发:    #RUN_EVERY_BAR
     c、逐根,tick触发: #RUN_BY_BAR
     d、逐根,K触发:    #RUN_BY_BAR #RUN_EVERY_BAR

2、智能交易:                      公式写法:
     a、逐行,tick触发: #RUN_BY_SERIE #RUN_EVERY_TICK
     b、逐行,K触发:    #RUN_BY_SERIE
     c、逐根,tick触发: #RUN_EVERY_TICK
     d、逐根,K触发:    默认方式,可不写

请问我这样理解对了吗?

作者: ptLibert    时间: 2013-4-10 13:45

run_every_bar和run_every_tick,都是针对策略的开关,逐行是不支持策略的。所以逐行下不要写这两个
智能交易,实际永远是run_by_bar所以写run_by_serie会不起作用的
作者: benyip    时间: 2013-4-10 15:23

技术指标里写RUN_BY_BAR,是tick触发,还是K触发?
是否默认就是tick触发,如果要K触发的话,是否必须自己写代码控制?
作者: ptLibert    时间: 2013-4-11 14:33

技术指标里,写run_by_bar,默认会run_every_tick。
如果想run_every_bar,需要指定
作者: xhx    时间: 2013-4-11 14:37

ptLibert 发表于 2013-4-11 14:33
技术指标里,写run_by_bar,默认会run_every_tick。
如果想run_every_bar,需要指定

我试了这个公式
#run_every_bar
variable:New_Time(0);
//New_Time := 0;
Print('##',New_Time);
Print('&&',time/100);
if New_Time = time/100 then
begin
   Print(New_Time, '++',time/100);
   exit;  
end;

ma1: Average(c,5);
New_Time := Time/100;
Print(New_Time, '--',time/100);


还是每来一笔tick执行一次,怎么能每个bar执行一次呢。
作者: ptLibert    时间: 2013-4-11 14:47

xhx 发表于 2013-4-11 14:37
我试了这个公式
#run_every_bar
variable:New_Time(0);

run_every_bar这个开关只对逐根公式有效,逐行是忽略的。所以你得加上run_by_bar 开关

作者: benyip    时间: 2013-4-11 15:12

谢谢 ptLibert 的解答,终于搞明白了。
也就是我上面列举的几种模式,不过在智能交易策略没有逐行那两种模式,所以要在技术指标K触发根本不需要自己写程序控制。呵呵!

作者: hongxing1110    时间: 2013-7-8 18:34

学习学习




欢迎光临 花生网 (http://hs633.com/) Powered by Discuz! X2