版主请完善海龟交易法则现在缺少做空的语句这个例子较好
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;
http://www.weistock.com/bbs/dispbbs.asp?BoardID=4&ID=246
提交问题之前,用户可否利用论坛搜索功能先查一遍
http://www.weistock.com/bbs/dispbbs.asp?BoardID=4&ID=246
提交问题之前,用户可否利用论坛搜索功能先查一遍
这个帖子我看过好象存在问题还请管理员把金字塔中的海龟交易法则完善好吗
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楼的,你调整好费用设置,应该可以,有问题可以提出来。
版主您好;请问费用如何设置
还有个问题 (if dk=1 then 多开2:BUY(1,HOW,STOP,ENTERPRICE+0.5*N);{在上头寸(即第一头寸)+0.5个N以STOP指令买进} )这句中的红色的1
如何理解
系统公式编辑中右上角[费用设置],按实际情况设置
红色的1 ,表示总是真,因为前面已经有条件了。