以下是“K线”转换成“固定轮询模式”或者“混合模式”的方法
一,“K线走完模式”转换成“固定轮询模式”或者“混合模式”的方法
以便把各个模型放在同一个框架内进行图表程序化交易
举例:
均线交叉模型(K线走完模型):
runmode:0;
ma5:=ma(c,5);
ma20:=ma(c,20);
entertime:=time>100000 and time<144500;
if holding>0 and ma5<ma20 then sell(1,1,market);
if holding<0 and ma5>ma20 then sellshort(1,1,market);
if holding=0 and ma5>ma20 and entertime then buy(1,1,market);
if holding=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);但这种方法碰到大型的、复杂的模型时,容易出错
可采用这种方法,把holding用全局变量cc替换,然后加入红色部分代码,红色部分代码要放在信号语句的前面:
runmode:0;
variable:cc=0;
ma5:=ma(c,5);
ma20:=ma(c,20);
entertime:=time>100000 and time<144500;
if holding>0 and cc<=0 then sell(1,1,limitr,o);
if holding<0 and cc>=0 then sellshort(1,1,limitr,o);
if holding=0 and cc>0 then buy(1,1,limitr,o);
if holding=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 holding>0 and cc<=0 then sell(1,1,limitr,o);
if holding<0 and cc>=0 then sellshort(1,1,limitr,o);
if holding=0 and cc>0 then buy(1,1,limitr,o);
if holding=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
ps:好多朋友问这个是什么软件 我也忘了说啦。我用的金字塔