ADX上漲:ADX高於25,通常證明具備趨勢,趨勢發展的力度上漲,可參考結合趨勢指標;
ADX下跌:ADX低於20,通常證明缺少趨勢,趨勢發展的可能性低,可參考結合震盪指標。
指數平滑移動平均線 (EMA) 將過去某特定時間內的價格取其平均值,它比重以平均線的長度設定,愈近期的收市價,對市況影響愈重要。如較前的收市價數據沒有移動,他們只會有輕微的影響。
指數移動平均線的公式如下:
計算方式:
1.以當天收盤價當第1天指數平均線 數值得EXP
2.今日指數移動平均值=(今日收盤價 -前一日之EXP)*Y+ 前一日之EXP
3.Y=指數係數(Exponential Percentag-e)=2/(期間N+1)
上揚的移動平均線可看做是股價維持多頭的支撐線,股價回跌至平均線附近,均線自然會產生支撐股價的力量,便是買進時機;這是平均線「平均成本」的觀念產生助漲功效。
下彎的移動平均線可看做是股價維持空頭的壓力線,當股價再度上昇至平均線附近,股價可能會突破均線後再跌破,或只是到達平均線下方便再度回落,最好不要燥進,以免進入平均線的助跌效應範圍。
平均趨向指標ADX與指數移動平均線是兩個常用來追蹤趨勢的技術指標,本篇介紹將兩者一起應用所開發的交易策略( EMA & ADX 組合)
{系統參數與變數}
input:EntryType(10),ExitType(5);
vars:NBarL(30),NBarS(18),TradeProfit(0.045),TradeStopLoss(0.01),
ATRs_L(6.7),ATRs_S(8.8);
vars: IsBalanceDay(False),MP(0),PF(0),PL(0);
vars: AvgLen(30), ADXLen(12), EntryBar(2);
Vars: UpperMA(0), LowerMA(0), ADXValue(0), ChanSpread(0), BuySetup(False), SellSetup(False), BuyTarget(0), SellTarget(0), MROBS(0), MROSS(0);
MP = MarketPosition ;
if DAYofMonth(Date) > 14 and DAYofMonth(Date) < 22 and DAYofWeek(Date)= 3 then isBalanceDay = True else isBalanceDay =False ;
PF = AvgPrice*TradeProfit ;
PL = AvgPrice*TradeStopLoss ;
{利用K棒高低價的指數平均數作通道}
UpperMA = XAverage(High, AvgLen)[1];
LowerMA = XAverage(Low, AvgLen)[1];
ADXValue = ADX(ADXLen);
ChanSpread = (UpperMA - LowerMA) / 2;
{買方環境建立 - 收盤價大於高通道 且 ADX 上升}
BuySetup = Close > UpperMA AND ADXValue > ADXValue[1];
{多方進場價計算}
IF BuySetup Then BuyTarget = Close + ChanSpread;
{賣方環境建立 - 收盤價小於低通道 且 ADX 上升}
SellSetup = Close < LowerMA AND ADXValue > ADXValue[1];
{空方進場價計算}
IF SellSetup Then SellTarget = Close - ChanSpread;
{ 條件成立後,幾根K棒內有效 }
MROBS = MRO(BuySetup, EntryBar, 1);
MROSS = MRO(SellSetup, EntryBar, 1);
{策略1 - 收盤價+通道寬度/2 為進場價格}
if EntryType = 1 then Begin
IF MROBS <> -1 AND MP <> 1 Then Buy Next Bar at BuyTarget Stop;
IF MROSS <> -1 AND MP <> -1 Then Sell Next Bar at SellTarget Stop;
end;
{策略2 - 收盤價突破 N 根K棒高低點作進場價格}
if EntryType = 2 then Begin
IF MROBS <> -1 AND MP <> 1 Then Buy Next Bar at Highest(High,HighBar) Stop;
IF MROSS <> -1 AND MP <> -1 Then Sell Next Bar at Lowest(Low,LowBar) Stop;
end;
{出場規則}
if ExitType = 6 then Begin
ExitLong Next Bar at LowerMA-1 Stop;
ExitShort Next Bar at UpperMA+1 Point Stop;
end;
if ExitType = 1 then SetStopLoss(PL * BigPointValue) ;
if ExitType = 2 then Begin
SetStopLoss(PL * BigPointValue) ;
setProfitTarget(PF * BigPointValue) ;
end;
if ExitType = 3 then Begin
if MP > 0 and BarsSinceEntry = NBarL then ExitLong next bar at Market ;
if MP < 0 and BarsSinceEntry = NBarS then ExitShort next bar at Market ;
end;
if ExitType = 4 then Begin SetStopLoss(PL * BigPointValue) ; setProfitTarget(PF * BigPointValue) ;
if MP > 0 and BarsSinceEntry = NBarL then {Sell } ExitLong next bar at Market ;
if MP < 0 and BarsSinceEntry = NBarS then {Buy} ExitShort next bar at Market ;
end;
{ 結算日增加 20150224 }
if IsBalanceDay or Date = 1150224 then setExitonClose ;
在相同的邏輯條件下,不同的進場價格顯示出明顯的差異,可見即使是耳熟能詳的傳統指標也能有獲利的能力! 如果我們再多觀察ADX指標的變化,可以發現當 ADX 的數值在某一數值以下才進場時 ,即使是策略一也能有績效提升30%達 200 W左右的改善喔
0 意見:
張貼留言