我改了个(改动的地方红色标识),不过还是跟海龟交易的原模型有些出入,放出来请高手指导,以期抛砖引玉
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:=ref(HHV(H,20),1);
SELLLLV:=ref(LLV(L,10),1);
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;
IF EntPoint=EntAndExitSign THEN
BEGIN{说明STOP指令买进头寸成功}
PositionCount:=PositionCount+1;{头寸计数}
SellSign:=True;{开始以STOP卖出,如果达到指定的价格}
END
{第一头寸}
IF PositionCount=1 THEN
BEGIN
HOW:=CASH(0)*0.01/N;{波动性百分比决定头寸规模}
h20:buyhhv,linethick0;
开1:BUY(c>=buyhhv,HOW,thisclose);{在20日新高STOP指令买进}
END
{如到第二头寸}
IF PositionCount=2 THEN
BEGIN
HOW:=CASH(0)*0.01/N;{波动性百分比决定头寸规模}
开2:BUY(c>ENTERPRICE+0.5*N,HOW,thisclose);{在上头寸(即第一头寸)+0.5个N以STOP指令买进}
END
{如到第三头寸}
IF PositionCount=3 THEN
BEGIN
HOW:=CASH(0)*0.01/N;
开3:BUY(c>ENTERPRICE+0.5*N,HOW,thisclose);{在上头寸(即第二头寸)+0.5个N以STOP指令买进}
END
IF PositionCount=4 THEN
BEGIN
HOW:=CASH(0)*0.01/N;
开4:BUY(c>ENTERPRICE+0.5*N,HOW,thisclose);
END
IF SellSign=True THEN
BEGIN
ExitPoint:=EXITBARS;
{说明卖出成功}
IF ExitPoint=EntAndExitSign THEN
BEGIN
PositionCount:=1;{头寸计算复原}
SellSign:=False;
END
IF ENTERPRICE-2*N then SELL(c<sellllv,100%,thisclose);{退出离盈利头寸}
ELSE
SELL(c<ENTERPRICE-2*N,100%,thisclose);{退出亏损头寸}
END
END;