-- 作者:racky2016
-- 发布时间:2018/8/8 9:53:18
-- 序列模型中的IF
后台程序化交易中,需要用序列模型。其它语句一般都没问题,但有IF的语句出现之后,都会有提示说“你当前的公式似乎应该使用K线计算模式进行,是否切换到逐K模式”
IF TBUYHOLDINGEX( ZH1,PZ1 ,0 )<10 THEN BEGIN 阳线加仓:TBUY(CLOSE>OPEN,2,LMT,CLOSE,0,ZH1,PZ1); 阴线加仓:TBUY(CLOSE<OPEN,1,LMT,CLOSE,0,ZH1,PZ1); END
IF TIME>=150000 THEN BEGIN TSELL(1,0,MKT,0,ZH1,PZ1); END
|
-- 作者:racky2016
-- 发布时间:2018/8/8 10:07:17
--
那改造一下是不是就可以,比如这样写:
CONDSELL2:=time>=150000; TSELL(CONDSELL2,TBUYHOLDINGEX( ZH1,PZ1 ,0 ),MKT,0,ZH1,PZ1);
|
-- 作者:racky2016
-- 发布时间:2018/8/8 10:38:25
--
以下是引用banzhuan在2018/8/8 10:04:12的发言: IF语句工作机制是每周期都去执行一次,所以只能用在逐K线模式下
谢谢,这个“每周期执行一次”是什么含义呢?
是指每来一个新tick/新K执行一次全部K刷新呢(注1),还是指如果序列模式只有最后1K作为条件不符合要求(注2)?
也就是说,如果只是后者原因,那么作为一个用来控制交易而非回测的后台程序,是不是也可以接受?
注1:
新的tick来时, 序列模式:仅刷最新的K线; 逐K模式:从第一根到最新的一根K线都刷; 逐K模式+仅刷最后一根K线:仅刷最新的K线;
新的K线生成那一刻, 序列模式:仅刷最新的K线; 逐K模式:从第一根到最新的一根K线都刷; 逐K模式+仅刷最后一根K线:从第一根到最新的一根K线都刷;
注2:
序列模式计算时,控制语句条件允许使用序列变量,由于序列模式只执行一次控制语句解析,对于序列变量,仅取最后一个数据做为条件判断。
|