|
7楼
楼主 |
发表于 2011-12-27 21:54:38
|
只看该作者
本帖最后由 火焰之神 于 2015-4-8 16:55 编辑
七、把各种模型组合成一个模型的方法,适用于所有模型,即便是“即时下单模型”
说明:因为图表交易同一根K线出现2个开多信号的话,只会开一次,另外一个无法执行,但是可以做历时回测
组合起来的模型,加入后台下单语句,就可以用于后台下单,当然,后台下单用“后台下单模板”会更好用。
方法原理:计算每个时点要下单的手数和方向,再根据holding判断出要平仓和开仓的数量,然后再下单。
看起来很多,其实很简单,最基本得模块就是蓝色部分
input:cang1(1,0,10,1),cang2(1,0,10,1);
variable:cc1=0,cc2=0;
/////////////////////////////////模型1——10周期反手
hi:=ref(hhv(h,10),1);
lo:=ref(llv(l,10),1);
if cc1>0 and l pc:=min(max(holding,0),cang1);
kc:=cang1-pc;
if pc>0 then sell(1,cang1,limitr,min(o,lo-0.2)-0.6);
if kc>0 then buyshort(1,cang1,limitr,min(o,lo-0.2)-0.6);
cc1:=0;
end
if cc1<0 and h>hi then begin
pc:=min(abs(min(holding,0)),cang1);
kc:=cang1-pc;
if pc>0 then sellshort(1,cang1,limitr,max(o,hi+0.2)+0.6);
if kc>0 then buy(1,cang1,limitr,max(o,hi+0.2)+0.6);
cc1:=0;
end
if cc1=0 and h>hi then begin
pc:=min(abs(min(holding,0)),cang1);
kc:=cang1-pc;
if pc>0 then sellshort(1,cang1,limitr,max(o,hi+0.2)+0.6);
if kc>0 then buy(1,cang1,limitr,max(o,hi+0.2)+0.6);
cc1:=1;
end
if cc1=0 and l0 then sell(1,cang1,limitr,min(o,lo-0.2)-0.6);
if kc>0 then buyshort(1,cang1,limitr,min(o,lo-0.2)-0.6);
cc1:=-1;
end
/////////////////////////////////以上是模型1
/////////////////////////////////模型2——20周期反手
hi:=ref(hhv(h,20),1);
lo:=ref(llv(l,20),1);
if cc2>0 and l0 then sell(1,cang2,limitr,min(o,lo-0.2)-0.6);
if kc>0 then buyshort(1,cang2,limitr,min(o,lo-0.2)-0.6);
cc2:=0;
end
if cc2<0 and h>hi then begin
pc:=min(abs(min(holding,0)),cang2);
kc:=cang2-pc;
if pc>0 then sellshort(1,cang2,limitr,max(o,hi+0.2)+0.6);
if kc>0 then buy(1,cang2,limitr,max(o,hi+0.2)+0.6);
cc2:=0;
end
if cc2=0 and h>hi then begin
pc:=min(abs(min(holding,0)),cang2);
kc:=cang2-pc;
if pc>0 then sellshort(1,cang2,limitr,max(o,hi+0.2)+0.6);
if kc>0 then buy(1,cang2,limitr,max(o,hi+0.2)+0.6);
cc2:=1;
end
if cc2=0 and l0 then sell(1,cang2,limitr,min(o,lo-0.2)-0.6);
if kc>0 then buyshort(1,cang2,limitr,min(o,lo-0.2)-0.6);
cc2:=-1;
end
/////////////////////////////////以上是模型2
//有更多的模型,往后面添加即可
|
|