欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件金字塔软件问题提交 → 海龟系统总是无法成交

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有3539人关注过本帖平板打印复制链接

主题:海龟系统总是无法成交

美女呀,离线,留言给我吧!
zymg
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:5 积分:30 威望:0 精华:0 注册:2012/11/19 11:13:41
海龟系统总是无法成交  发帖心情 Post By:2012/11/19 11:21:05 [只看该作者]

初学者写了个海龟交易的公式,但是总是没有信号,查看运行时变量,发现POSITIONCOUNT总是为1而DK总是为0,和我预想的完全不一样,不知道问题出在哪里,把代码贴出了,请高手指教,谢谢

VARIABLE:DayCount=1,positionCount=0,dk=0;       //DayCount是计算第几个周期,positionCount是计算头寸数量,dk为-1开空1开多
VARIABLE:EntPoint=0,ExitPoint=0,sellSign=0;      //sellSign为0不可平仓,为1则可以;EntPoint用于判定本周期有没有开仓;sellSign为1时表示可以平仓

M:=MA(TR,20);             //计算20天内的TR值的简单平均
BUYHHV:=HHV(H,20);        //20天最高价的最高价     
BUYLLV:=LLV(L,20);       //20天最低价的最低价

SELLHHV:=HHV(H,10);      //10日最高价
SELLLLV:=LLV(L,10);      //10日最低价

IF BARPOS>=21 THEN BEGIN 
IF BARPOS=21 THEN 
N:=M;
IF DayCount=6 OR BARPOS=21 THEN BEGIN{5天调整N值} 
N:=(19*N+TR)/20;{计算N值} 
DayCount:=2;
END
DayCount:=DayCount+1;
EntPoint:=ENTERBARS+1;
IF EntPoint=1 THEN BEGIN   //本周期有开仓操作(上周期的信号)
sellSign:=1;         //可以平仓了
positionCount:=positionCount+1;      //头寸加1
END

IF positionCount=0 THEN BEGIN   //第一头寸
HOW:=CASH(0)*0.01/N;   //头寸规模
IF HIGH>=BUYHHV THEN BEGIN
开多1:BUY(1,HOW,MARKET);
dk:=1;
END
IF LOW<=BUYLLV THEN BEGIN
开空1:BUYSHORT(1,HOW,MARKET);
dk:=-1;
END
END
IF positionCount=1 THEN BEGIN   //第二头寸
HOW:=CASH(0)*0.01/N;   //头寸规模
IF dk=1 THEN
开多2:BUY(HIGH>=ENTERPRICE+0.5*N,HOW,MARKET);
IF dk=-1 THEN
开空2:BUYSHORT(LOW<=ENTERPRICE-0.5*N,HOW,MARKET);
END
IF positionCount=2 THEN BEGIN   //第三头寸
HOW:=CASH(0)*0.01/N;   //头寸规模
IF dk=1 THEN
开多3:BUY(HIGH>=ENTERPRICE+0.5*N,HOW,MARKET);
IF dk=-1 THEN
开空3:BUYSHORT(LOW<=ENTERPRICE-0.5*N,HOW,MARKET);
END
ExitPoint:=EXITBARS+1;
IF ExitPoint=1 THEN BEGIN    //本周期有平仓(上周期的信号)
positionCount:=0;     //头寸复原
sellSign:=0;
dk:=0;
END
IF sellSign=1 THEN BEGIN
IF dk=1 THEN
IF ENTERPRICE-2*N then SELL(LOW<=SELLLLV,100%,MARKET);//退出离盈利头寸
    ELSE SELL(L<=ENTERPRICE-2*N,0,MARKET); //退出亏损头寸
IF dk=-1 THEN
IF ENTERPRICE+2*N then SELLSHORT(LOW<=SELLHHV,100%,MARKET);//退出离盈利头寸
    ELSE SELLSHORT(H>=ENTERPRICE+2*N,0,MARKET); //退出亏损头寸
END
END


查看使用道具详细信息
获赠金币帖,共获得 0 个金币
 回到顶部