以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  策略编写求助区  (http://weistock.com/bbs/list.asp?boardid=11)
----  [求助]  (http://weistock.com/bbs/dispbbs.asp?boardid=11&id=78859)

--  作者:agebar
--  发布时间:2015/5/21 12:03:54
--  [求助]

学了金字塔学写策略,不知哪里出了问题,请帮忙,谢谢!!!

 

具体如下:

 

 

三日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);    //高点高于前一天最高价;

注意:

开仓后第二天跳空高开或低开,开盘价超过止损价位(多单低于前一天最低价、空单高于前一天最高价)无条件立即止损;

第三天或以后跳空高开或低开,开盘价超过止盈价位(多单低于前一天最低价、空单高于前一天最高价)无条件立即止盈。


--  作者:agebar
--  发布时间:2015/5/21 12:05:21
--  

自己学写如下,不知哪里出错,请帮忙指出,谢谢!!!

 

//声明变量
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