-- 作者:陈泉清
-- 发布时间:2010/6/8 16:08:36
-- [建议]完善海龟交易法则
版主请完善海龟交易法则现在缺少做空的语句这个例子较好
VARIABLE:dayCount=1,PositionCount=1,SellSign=0; VARIABLE:EntAndExitSign=1,EntPoint=0,ExitPoint=0; VARIABLE:N=0;
MA1:MA(C,5); MA3:MA(C,10);
M:=MA(TR,20); BUYHHV:=HHV(H,20); SELLLLV:=LLV(L,10);
ss:n,linethick0;
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=EntAndExitSign THEN BEGIN{说明STOP指令买进头寸成功} PositionCount:=PositionCount+1;{头寸计数} SellSign:=True;{开始以STOP卖出,如果达到指定的价格} END IF PositionCount=1 THEN BEGIN{第一头寸} HOW:=CASH(0)*0.01/N;{波动性百分比决定头寸规模} 开1:BUY(1,HOW,STOP,BUYHHV);{在20日新高STOP指令买进} END IF PositionCount=2 THEN BEGIN{如到第二头寸} HOW:=CASH(0)*0.01/N;{波动性百分比决定头寸规模} 开2:BUY(1,HOW,STOP,ENTERPRICE+0.5*N);{在上头寸(即第一头寸)+0.5个N以STOP指令买进} END IF PositionCount=3 THEN BEGIN{如到第三头寸} HOW:=CASH(0)*0.01/N; 开3:BUY(1,HOW,STOP,ENTERPRICE+0.5*N);{在上头寸(即第二头寸)+0.5个N以STOP指令买进} END IF PositionCount=4 THEN BEGIN HOW:=CASH(0)*0.01/N; 开4:BUY(1,HOW,STOP,ENTERPRICE+0.5*N); END IF SellSign=True THEN BEGIN ExitPoint:=EXITBARS+1; IF ExitPoint=EntAndExitSign THEN BEGIN {说明卖出成功} PositionCount:=1;{头寸计算复原} SellSign:=False; END IF ENTERPRICE-2*N then SELL(1,100%,STOP,SELLLLV);{退出离盈利头寸} ELSE SELL(1,100%,STOP,ENTERPRICE-2*N);{退出亏损头寸} END END;
|
-- 作者:金字塔
-- 发布时间:2010/6/9 11:40:53
--
input:trn(20,5,30),hn(20,5,30),lown(10,5,20);
VARIABLE:dayCount=1,PositionCount=1,SellSign=0,dK=0;//加多空标志,1:多,-1:空 0:空仓 VARIABLE:EntAndExitSign=1,EntPoint=0,ExitPoint=0; VARIABLE:N=0;
N:=MA(TR,trn); BUYHHV:=HHV(H,hn); SELLLLV:=LLV(L,lown);
sellshortllv:=llv(l,hn); buyshorthhv:=hhv(h,lown);
IF BARPOS>=hn THEN BEGIN IF BARPOS=hn THEN IF DayCount=hn/2 OR BARPOS=hn THEN BEGIN{hn/2天调整N值} N:=((hn-1)*N+TR)/hn;{计算N值} DayCount:=2; END DayCount:=DayCount+1; EntPoint:=ENTERBARS+1; IF EntPoint=EntAndExitSign THEN BEGIN{说明STOP指令买进头寸成功} PositionCount:=PositionCount+1;{头寸计数} SellSign:=True;{可以平仓信号,如果达到指定的价格} END IF PositionCount=1 THEN BEGIN{第一头寸} HOW:=CASH(0)*0.01/N;{波动性百分比决定头寸规模} if high=buyhhv then BEGIN dk:=1; 多开1:BUY(1,HOW,STOP,BUYHHV);{在20日新高STOP指令买进} END; if low=sellshortllv then begin dk:=-1; 空开1:buyshort(1,HOW,STOP,sellshortllv);{在20日新低STOP指令空开} end; END
IF PositionCount=2 THEN BEGIN{如到第二头寸} HOW:=CASH(0)*0.01/N;{波动性百分比决定头寸规模} if dk=1 then 多开2:BUY(1,HOW,STOP,ENTERPRICE+0.5*N);{在上头寸(即第一头寸)+0.5个N以STOP指令买进} if dk=-1 then 空开2:buyshort(1,HOW,STOP,ENTERPRICE-0.5*N); END
IF PositionCount=3 THEN BEGIN{如到第三头寸} HOW:=CASH(0)*0.01/N; if dk=1 then 多开3:BUY(1,HOW,STOP,ENTERPRICE+0.5*N);{在上头寸(即第二头寸)+0.5个N以STOP指令买进} if dk=-1 then 空开3:buyshort(1,HOW,STOP,ENTERPRICE-0.5*N); END
IF PositionCount=4 THEN BEGIN HOW:=CASH(0)*0.01/N; if dk=1 then 多开4:BUY(1,HOW,STOP,ENTERPRICE+0.5*N); if dk=-1 then 空开4:buyshort(1,HOW,STOP,ENTERPRICE-0.5*N); END
IF SellSign=True THEN BEGIN ExitPoint:=EXITBARS+1; if dk=1 then begin IF ExitPoint=EntAndExitSign THEN BEGIN {说明卖出成功} PositionCount:=1;{头寸计算复原} SellSign:=False; dk:=0; END IF ENTERPRICE-2*N then SELL(1,100%,STOP,SELLLLV);{退出离盈利头寸} ELSE SELL(1,100%,STOP,ENTERPRICE-2*N);{退出亏损头寸} end; if dk=-1 then begin IF ExitPoint=EntAndExitSign THEN BEGIN PositionCount:=1; SellSign:=False; dk:=0; END IF ENTERPRICE+2*N then sellSHORT(1,100%,STOP,BUYSHORTHHV); ELSE sellSHORT(1,100%,STOP,ENTERPRICE+2*N); END; END END;
这是4楼的,你调整好费用设置,应该可以,有问题可以提出来。
|