技術指標教室|動量指標 AROON

  • Post author:
  • Reading time:5 mins read

TA-Lib(Technical Analysis Library)是一個開源的技術分析模組,可以免費使用,用於計算股票技術指標。包含了超過 200 種技術指標的實現,包括常見的指標如移動平均線(Moving Average)、布林通道 (Bollinger Bands)、RSI 和 MACD 等,以及較少使用的指標如 KST、Vortex Indicator 和 Chande Momentum Oscillator等。
這麼好用的模組,你使用到多少呢?除了耳熟能詳的KD、RSI和MACD?還有許多你沒聽過的技術指標~越少人用的指標是否越有效?值得挖寶,技術指標教室將逐一探索較少見的指標,例如這次要介紹的動量指標「AROON」。

Momentum indicators(動量指標)是什麼?

動量指標的核心含義是:「如果股票的價格正在上漲,那麼它就具有正的動量,反之亦然。因此,動量指標通常用於確定股票的趨勢,並預測價格的未来變化。

常見的動量指標包括相對强弱指標(Relative Strength Index,RSI)和快速隨機指標(Fast Stochastic Oscillator)等。這些指標通常使用股票的收盤架或成交量来计算,並與股票的過去一段時間的價格或成交量進行比較。

Aroon 技術指標是什麼?

AROON 是一種股票技術指標,用於評估股票或其他市場資產的趨勢強度和持續時間。 Aroon指標包括兩條曲線:Aroon Up和Aroon Down。 Aroon Up指標衡量股票在過去多少天內出現過新高,而Aroon Down指標則衡量股票在過去多少天內出現過新低。

AROON 技術指標公式

AROON 指標可以用於識別股票的趨勢轉折點,並評估趨勢的強度和持續時間。它也可以與其他技術指標一起使用,以更精確地分析市場趨勢。

Aroon Up指標的公式如下:

Aroon Up = (Number of periods – Days since the highest high) / Number of periods x 100

Aroon Down指標的公式如下:

Aroon Down = (Number of periods – Days since the lowest low) / Number of periods x 100

在這些公式中,「Number of periods」是指要使用的時間段數量,通常為25天或50天。「Days since the highest high」是指自上一個新高以來的天數,而「Days since the lowest low」則是指自上一個新低以來的天數。

為了計算Aroon Up和Aroon Down指標,需要對股票的每一天的最高價和最低價進行追蹤,並計算自上一個新高或新低以來的天數。然後,可以使用公式計算 Aroon Up 和 Aroon Down 指標的值。

比方計算25天內的 AROON,若最高價出現在第3天,則 Aroon Up 為 12 (3/25*100),若最高價出現在最近一日,則 Aroon Up 為 100。若最低價出現在第10天,則 Aroon DOWN 為 40 (10/25*100)。

Ta-lib 的 AROON 函數如下:

aroondown, aroonup = AROON(high, low, timeperiod=14)

AROON技術指標分析應用

Aroon Up 和 Aroon Down 指標的值介於0到100之間,Aroon Up 越大代表股價在越近期創新高。Aroon Down 越大代表股價在越近期創新低。
AroonOsc 為延伸應用,定義為 Aroon Up 與 Aroon Down 相減。

當 AroonOsc 為正數時,代表創高日離近期較近,創低日較近期較遠,通常意味著股票正在處於創高的強勢過程,而當 AroonOsc 為負數 時,則意味著股票正在下跌創低的過程。

當 Aroon Up 指標向下跌破 50 時,表示向上的趨勢正在失去動力;當 Aroon Down 指标向下跌破50時,表示向下的趨勢正在失去動力;如果兩個指標都在低位,表示股價没有明確的趨勢;如果指標在70 以上,表示趨勢十分强烈;如果在30 以下,表明相反的趨勢正在醞釀。通常來說,AroonOsc 在0附近時,是典型的無趨勢特徵,股票處於盤整階段 (參考來源)。

FinLab 量化平台實驗 AROON 指標選股

第一次接觸該指標,不知道怎麼做才最好?
可以使用 FinLab 模組的選股條件組合優化器,將可能的條件都先寫出來,最後讓組合優化器將個條件組合全跑一遍,看哪一種效果最好。這次實驗的條件都以AROON指標相關,實驗市場通常使用的條件。

實驗條件

持有條件

  • AROON 指標週期設定25日
  • aroonup > aroondown : 創高日比創低日較近期發生
  • aroonup > 70
  • aroondown < 30
  • 每月換股

出場條件

  • aroonup < aroondown : 創低日比創高日較近期發生

程式範例

from finlab.backtest import sim
from finlab import data
from finlab.optimize.combinations import sim_conditions

with data.universe(market='TSE_OTC'):
    close = data.get("price:收盤價")
    aroondown, aroonup = data.indicator("AROON", adjust_price=True, timeperiod=25)
    c1 = aroonup > aroondown
    c2 = aroonup > 70
    c3 = aroondown < 30
    exits = aroonup < aroondown

    conditions = {'c1':c1, 'c2':c2, 'c3':c3}
    report_collection = sim_conditions(conditions=conditions, resample='M', hold_until={'exit':exits, 'stop_loss':0.1}, position_limit=0.1, upload=False)

# 策略分組指標報告
report_collection.plot_creturns().show()
report_collection.plot_stats('bar').show()
report_collection.plot_stats('heatmap')

回測結果

newplot 43
newplot 45

aroonup > aroondown 的條件回測效果最好,但年化報酬只有6%,同樣都是股價創新高的動能因子,AROON指標跟先前介紹的「創新高延續度動能策略」相比,實在遜色太多,若依照市場一般的參數使用,無法得到太好的效果,有帶進一步的優化研究。

相關資源


Ben

Python 軟體工程師與量化策略研究員。 鑽研資料工程、網頁後端、資料視覺化、量化交易策略開發。 投資主力在台股市場,量化策略為主、質化分析為輔,追求人機攜做最佳化。逐步將觸角延伸到總經、美股、加密貨幣,朝更全方位的交易人邁進。