学了金字塔学写策略,不知哪里出了问题,请帮忙,谢谢!!!
具体如下:
三日k线高低点突破隔日交易(图表)
一、开仓:
开多:=H> REF(H,2) AND (REF(H,2)>= REF(H,1));
// 价格高于前天并且前天最高高于或等于昨天最高;
开空:= L< REF(L,2) AND(REF(L,2)<= REF(L,1)) ;
// 价格低于前天并且前天最低低于或等于昨天最低;
隔夜跳空开仓:
ZS:=X ; //先设一个止损幅度
跳空高于前天最高价开多:
开多:=open>ref(h,2) and ref(h,2)>=ref(h,1);
开仓价:=open+zs;
跳空低于前天最低价开空:
开空:=open<ref(h,2) and ref(h,2)<=ref(h,1);
开仓价:=open-zs;
出场:
止损:
ZS:=X; //止损幅度
开仓当天及第二天止损:
多单止损: = 开仓价- ZS; //突破高点时开仓价
空单止损: = 开仓价 + ZS; //突破低点时开仓价
要求:当天同方向突破两次开仓被止损两次后不再开仓(程序仍运行,两次后反方向突破仍可开仓);第二天仍以前一天开仓时的止损点位(点数)为止损条件,被止损则第二天不再开仓,程序停止运行;
开仓第三天则以突破高低点为止盈条件:
多单止盈: =L<ref(L,1); //低点低于前一天最低价;
空单止盈: = H>ref(H,1); //高点高于前一天最高价;
注意:
开仓后第二天跳空高开或低开,开盘价超过止损价位(多单低于前一天最低价、空单高于前一天最高价)无条件立即止损;
第三天或以后跳空高开或低开,开盘价超过止盈价位(多单低于前一天最低价、空单高于前一天最高价)无条件立即止盈。
自己学写如下,不知哪里出错,请帮忙指出,谢谢!!!
//声明变量
variable: myprice =0 ; //开仓价格
variable: exprice =0 ;
variable:n=0;
variable:m=0;
variable:bj=0;
//准备需要计算的变量
H2 := REF(H,2) ;
L2 := REF(L,2) ;
H1:=ref(H,1);
L1:=ref(L,1);
ZS:=30; //止损,根据不同品种设定
SS:=1 ; //开仓手数
DZY:=L<ref(L,1);//多止盈
KZY:=H>ref(H,1);//空止盈
dzs:=c<myprice-zs;//多止损
kzs:=c>myprice+zs;//空止损
//开多
if h2>=h1 and bj=0 then begin
myprice:=if(o<=h2 and h>h2,h2+mindiff,h2);
myprice:=if(o>h2,o+zs,h2);
buy(n<=2,ss,limitr,myprice);
n:=n+1;
end
//开空
if h2<=h1 and bj=0 then begin
myprice:=if(o>=h2 and h<h2,h2-mindiff,h2);
myprice:=if(o<h2,o-zs,h2);
buyshort(m<=2,ss,limitr,myprice);
m:=m+1;
end
//止损
if dzs then begin
exprice:=if(enterbars<1,myprice-zs,myprice-zs-mindiff);
exprice:=if(enterbars=1 and o<(myprice-zs),o-mindiff,o);
sell(holding>0,0,limitr,exprice);
end
if kzs and enterbars<=1 then begin
exprice:=if(enterbars<1,myprice+zs,myprice+zs+mindiff);
exprice:=if(enterbars=1 and o>(myprice+zs),o+mindiff,o);
sellshort(holding<0,0,limitr,exprice);
end
//止盈
if dzy and enterbars>1 then begin
sell(1,0,market);
end
if kzy and enterbars>1 then begin
sellshort(1,0,market);
end