海龟用一个称之为ATR的符号来表示波动性。ATR就是TR(True Range,实际范围)的20日平均值。TR(实际范围)=max(H-L,H-PDC,PDC-L); 式中:H-当日最高价 L-当日最低价 PDC-前个交易日的收盘价;用公式计算ATR:ATR=(19×PDATR+TR)/20 ;式中:PDATR-前个交易日的ATR值 TR-当日的实际范围,ATR就是最近20个交易日的平均波动幅度。 在软件中可以简单的自定义公式如下:
TR:MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));
ATR:EMA(TR,20); 买卖股票的数量,用下面的公式计算:单次买卖股数=帐户的1%/ATR、
{分析家版本源码}
VARIABLE:dayCount=1,PositionCount=1,SellSign=0;
VARIABLE:EntAndExitSign=1,EntPoint=0,ExitPoint=0;
VARIABLE:True=1,False=0,N=0;
TR:=MAX(HIGH,CLOSE[1])-MIN(LOW,CLOSE[1]);
IF BARPOS>=20 THEN BEGIN
IF BARPOS=20 THEN
N:=MA(TR,20);
IF DayCount=5 OR BARPOS=20 THEN BEGIN{5天调整N值}
N:=(19*N+TR)/20;{计算N值}
DayCount:=1;
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.01/N;{波动性百分比决定头寸规模}
BUY(HOW,STOP,HHV(H,20));{在20日新高STOP指令买进}
END
IF PositionCount=2 THEN BEGIN{如到第二头寸}
HOW:=CASH*0.01/N;{波动性百分比决定头寸规模}
BUY(HOW,STOP,ENTERPRICE+0.5*N);{在上头寸(即第一头寸)+0.5个N以STOP指令买进}
END
IF PositionCount=3 THEN BEGIN{如到第三头寸}
HOW:=CASH*0.01/N;
BUY(HOW,STOP,ENTERPRICE+0.5*N);{在上头寸(即第二头寸)+0.5个N以STOP指令买进}
END
IF PositionCount=4 THEN BEGIN
HOW:=CASH*0.01/N;
BUY(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*NSELL(100%,STOP,LLV(L,10));{退出离盈利头寸}
ELSE
SELL(100%,STOP,ENTERPRICE-2*N);{退出亏损头寸}
END
END;