以下是“K线走完模式”转换成“固定轮询模式”或者“混合模式”的方法

“K线走完模式”转换成“固定轮询模式”或者“混合模式”的方法
 以便把各个模型放在同一个框架内进行图表程序化交易
 举例:
 均线交叉模型(K线走完模型):
runmode:0;
 ma5:=ma(c,5);
 ma20:=ma(c,20);
 entertime:=time>100000 and time<144500;
 if hulding>0 and ma5<ma20 then sell(1,1,market);
 if hulding<0 and ma5>ma20 then sellshort(1,1,market);
 if hulding=0 and ma5>ma20 and entertime then buy(1,1,market);
 if hulding=0 and ma5<ma20 and entertime then buyshort(1,1,market);
 if time>=150000 then begin
 sell(1,1,market);
 sellshort(1,1,market);
 end

简单的改法,自然是把各个条件“过去化”,如:ma5 改为 ref(ma(c,5),1);但这种方法碰到大型的、复杂的模型时,容易出错
 可采用这种方法,把hulding用全局变量cc替换,然后加入红色部分代码,红色部分代码要放在信号语句的前面:
runmode:0;
 variable:cc=0;
 ma5:=ma(c,5);
 ma20:=ma(c,20);
 entertime:=time>100000 and time<144500;
 if hulding>0 and cc<=0 then sell(1,1,limitr,o);
 if hulding<0 and cc>=0 then sellshort(1,1,limitr,o);
 if hulding=0 and cc>0 then buy(1,1,limitr,o);
 if hulding=0 and cc<0 then buyshort(1,1,limitr,o);
 if cc>0 and ma5<ma20 then cc:=0;
 if cc<0 and ma5>ma20 then cc:=0;
 if cc=0 and ma5>ma20 and entertime then cc:=1;
 if cc=0 and ma5<ma20 and entertime then cc:=-1;
 if time>=150000 then begin
 cc:=0;
 end

那么,如果是 K线走完模式和盘中模式并存,怎么做呢?也简单,就是在“开盘价下单语句”后面加入蓝色部分的“盘中下单语句”就行了
 如下:
runmode:0;
 variable:zs=0,cc=0;
 ma5:=ma(c,5);
 ma20:=ma(c,20);
 entertime:=time>100000 and time<144500;
 if hulding>0 and cc<=0 then sell(1,1,limitr,o);
 if hulding<0 and cc>=0 then sellshort(1,1,limitr,o);
 if hulding=0 and cc>0 then buy(1,1,limitr,o);
 if hulding=0 and cc<0 then buyshort(1,1,limitr,o);
 if cc>0 and l<zs then begin
 sell(1,1,limitr,min(o,zs-0.6));
 cc:=0;
 end
 if cc<0 and h>zs then begin
 sellshort(1,1,limitr,max(o,zs+0.6));
 cc:=0;
 end
 if cc>0 and ma5<ma20 then cc:=0;
 if cc<0 and ma5>ma20 then cc:=0;
 if cc=0 and ma5>ma20 and entertime then begin
 cc:=1;
 zs:=c-10;
 end
 if cc=0 and ma5<ma20 and entertime then begin
 cc:=-1;
 zs:=c+10;
 end
 if time>=150000 then begin
 cc:=0;
 end

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。