Python量化交易基礎講堂-TA-Lib庫量價指標分析

《Python實戰-構建基於股票的量化交易系統》小冊子主要側重於 Python 實戰講解,但在內容設計上提供了前置基礎章節幫助讀者快速掌握基礎工具的使用。bash

同時咱們會持續更新一些關於Python和量化相關擴展文章,幫助你們夯實基礎和增值學習效果。在小冊子《股票數據可視化:自定義Matplotlib版股票行情界面》一節中使用TA-Lib庫實現MACD指標,其實TA-Lib的10個功能組,以下所示:函數

  • Overlap Studies(重疊研究)
  • Momentum Indicators(動量指標)
  • Volume Indicators(交易量指標)
  • Cycle Indicators(週期指標)
  • Price Transform(價格變換)
  • Volatility Indicators(波動率指標)
  • Pattern Recognition(模式識別)
  • Statistic Functions(統計函數)
  • Math Transform(數學變換)
  • Math Operators(數學運算)

本次專欄篇咱們來介紹下Volume Indicators——成交量指標。工具

成交量指當日成交的股票總手數(1手=100股),它可以真實地反映市場的內在動能,將量和價的變化相結合分析有助於掌握價格走勢本質上的強弱度,好比一般所說的量價背離就是確認趨勢反轉的可靠線索。所以,成交量指標是交易決策時的重要依據,也是各類技術指標分析時不可或缺的參照。 TA-Lib的成交量指標主要包括'AD', 'ADOSC', 'OBV'這三個指標,以下所示:學習

print(talib.get_function_groups()['Volume Indicators']) # ['AD', 'ADOSC', 'OBV']
複製代碼

接下來咱們分別介紹如何使用TA-Lib實現這三個指標。ui

AD - Chaikin A/D Linespa

Chaikin Accumulation/Distribution Line由Marc Chaikin提出,計算公式爲:AD=前一日AD值+(CLV*成交量)設計

CLV = ((Close-Low)-(High-Close))/( High - Low)code

從公式中可知,它以當日收盤價與最高價、最低價的關係來估算一段時間內股票累積的成交量,以此分析多空雙方力量的變化,可以有效地尋找突破的趨勢或者提早預測反轉。orm

TA-Lib提供AD指標的調用接口爲:real = AD(high, low, close, volume)。咱們用例程來了解下具體的實現,以下所示:cdn

# 計算AD線
AD = talib.AD(df_stock.High, df_stock.Low, df_stock.Close, df_stock.Volume)
df_AD = pd.DataFrame(AD, index=df_stock.index, columns=['AD'])
df_AD.loc['2018-01-01':'2019-01-01'].plot(figsize=(16, 6))
plt.show()

複製代碼

在實際應用時的判斷依據爲:當A/D線在上升時說明多方佔優點,交易者在收集該股票;當A/D線在降低時,說明空方佔優點,交易者在派發該股票。若是A/D線上升的同時,價格也在上升,則說明上升趨勢被確認,產生買入信號;若是A/D線降低的同時,價格也在降低,則說明降低趨勢被確認,產生賣出信號;若是A/D線降低的同時,價格在上升,兩者產生背離,說明價格的上升趨勢減弱,有可能反轉下跌;若是A/D線上升的同時,價格在降低,兩者產生背離,說明價格的降低趨勢減弱,有可能反轉回升。實際操做中,能夠與一些反轉指標共同使用。

ADOSC - Chaikin A/D Oscillator

Chaikin A/D Oscillator是在AD指標的基礎上計算長短週期的AD差,用於進一步觀察市場中資金流動狀況,計算公式爲:fastperiod AD - slowperiod AD。

從公式中可知,該指標相似於雙均線交叉的判斷,當短時間均線穿越長期均線看多,即數值爲正時看多,反之依然。所以操做時可遵循數值由正變負時賣出,由負變正時買進的原則。

TA-Lib提供ADOSC指標的調用接口爲:real = ADOSC(high, low, close, volume, fastperiod=3, slowperiod=10)。咱們用例程來了解下具體的實現,以下所示:

# 計算ADOSC線
ADOSC = talib.ADOSC(df_stock.High, df_stock.Low, df_stock.Close, df_stock.Volume, fastperiod=3, slowperiod=10)
df_ADOSC = pd.DataFrame(ADOSC, index=df_stock.index, columns=['ADOSC'])
df_ADOSC.loc['2018-01-01':'2019-01-01'].plot(figsize=(16, 6))
plt.show()
複製代碼

OBV - On Balance Volume On Balance Volume由 Joe Granville 提出,主要計算累積的成交量,以某日爲基期,逐日累計每日股票總成交量。若隔日指數或股票上漲,則基期OBV加上本日成交量爲本日OBV。隔日指數或股票下跌, 則基期OBV減去本日成交量爲本日OBV。

TA-Lib提供ADOSC指標的調用接口爲:real = OBV(close, volume)。咱們用例程來了解下具體的實現,以下所示:

# 計算OBC線
OBV = talib.OBV(df_stock.Close, df_stock.Volume)
df_OBV = pd.DataFrame(OBV, index=df_stock.index, columns=['ADOSC'])
df_OBV.loc['2018-01-01':'2019-01-01'].plot(figsize=(16, 6))
plt.show()
複製代碼

在實際應用時的判斷依據爲:當OBV指標增大時,說明累積成交量在增長,能夠推測當前的價格變化爲正值,當期的股價是上升的;累積成交量的增大也體現了市場的活躍度增長,短時間內股票價格可能繼續上升,釋放出買入信號;當OBV指標減少時,說明累積成交量在減少,能夠推測當前的價格變化爲負值,當期的股價是下跌的;市場的活躍度減弱,短時間內股票價格可能還會下跌,釋放出賣出信號。

接下來咱們結合K線和成交量來觀察'AD', 'ADOSC', 'OBV'這三個指標的變化。咱們能夠調用小冊子《股票數據可視化:自定義Matplotlib版股票行情界面》的代碼分別繪製上證綜指、浙大網新的量價技術分析圖,以下所示:

關於完整代碼能夠加入小冊子交流羣獲取。更多的量化交易內容歡迎你們訂閱小冊子閱讀

相關文章
相關標籤/搜索