PythonでTA-Libを使ってADXを取得してみた

TA-Lib

PythonでTA-Libを使ってADX(+DI,-DI)を取得してみました。ADXとは何か、またPythonのTA-Libを使ってどのようにADXを取得するか記載します。

ADX(Wilder)とは何か

ADXは、平均方向性指標(Average Directional Index)の略称であり、J. Welles Wilderによって開発されたテクニカル分析ツールです。ADXは、市場のトレンドの強さや方向性を示すために使用されます。通常、ADXは、+DI(プラス方向性指標)と-DI(マイナス方向性指標)とともに使用され、これらの線の相対的な位置と動きを分析することによって、トレンドの強さや方向性を評価します。ADX Wilderは、Wilderが開発したADXのバージョンであり、トレンドの方向性と強さを計算するための特定の方法を指します。

TA-Libを使ったADX Wilder の取得方法

PythonにTA-Libをインストールしていない場合はインストールします。
インストール方法はWindowsのPythonにTA-Libをインストールする方法 (argentinajapan.com)を参考にして下さい。

ソースコード

まず、TA-Libをインポートします。

import talib as ta

ADX(Wilder)+DI,-DI 取得処理を以下のように記載します。(以下の例では期間14で取得しています)

df['adx14']=ta.ADX(df['high'],df['low'],df['close'],timeperiod=14)
df['pDI']=ta.PLUS_DI(df['high'],df['low'],df['close'],timeperiod=14)
df['mDI']=ta.MINUS_DI(df['high'],df['low'],df['close'],timeperiod=14)

因みに df[‘high’]はMT5で求めた高値、df[‘low’]は低値、df[‘close’]は終値になります。
以下にMT5から2024/1/8 10:00から 2024/1/8 13:59までまでドル円(USDJPY)のデータを1分単位で取得して、これに対して期間14のADX(Wilder),+DI,-DIを取得するプログラム例を記載します。
尚取得したデータ最後の10行のデータ(2024/1/8 13:50から13:50のデータ)を表示させます。

import MetaTrader5 as mt5
import pandas as pd
from datetime import datetime
import pytz
import numpy as np

#Ta-Lib インポート
import talib as ta

#loginidにはMT5にログインするためのID,servernameにはMT5のサーバー名,passwordにはそのパスワードを入力してください。
if mt5.initialize(login=loginid, server="servername",password="password") == False:
    print (mt5.last_error())
    exit()
 
timezone = pytz.timezone("Etc/UTC")
date_from = datetime(2024, 1, 8, 10,30, tzinfo=timezone) #2024/1/8 10:30
date_to = datetime(2024, 1, 8, 13, 59, tzinfo=timezone) #2024/1/8 13:59

ticks = mt5.copy_rates_range("USDJPY",mt5.TIMEFRAME_M1,date_from,date_to)
mt5.shutdown()
df = pd.DataFrame(ticks)
df['time']=pd.to_datetime(df['time'], unit='s')

df['adx14']=ta.ADX(df['high'],df['low'],df['close'],timeperiod=14)
df['pDI']=ta.PLUS_DI(df['high'],df['low'],df['close'],timeperiod=14)
df['mDI']=ta.MINUS_DI(df['high'],df['low'],df['close'],timeperiod=14)

print(df.tail(10))

実行結果

                   time     open     high      low    close  tick_volume  spread  real_volume      adx14        pDI        mDI
200 2024-01-08 13:50:00  144.552  144.552  144.517  144.526          105       3            0  24.345420  31.168367  14.315884
201 2024-01-08 13:51:00  144.526  144.558  144.526  144.538           87       3            0  25.409152  30.171404  13.166586
202 2024-01-08 13:52:00  144.537  144.545  144.524  144.543           87       3            0  26.274426  28.551471  12.971002
203 2024-01-08 13:53:00  144.543  144.567  144.542  144.559           84       3            0  27.646038  32.380049  12.135649
204 2024-01-08 13:54:00  144.559  144.566  144.553  144.558           77       3            0  28.919677  31.252916  11.713213
205 2024-01-08 13:55:00  144.558  144.559  144.537  144.542           47       3            0  29.094712  29.388517  15.353021
206 2024-01-08 13:56:00  144.542  144.554  144.535  144.536           69       3            0  29.136334  27.843652  15.099296
207 2024-01-08 13:57:00  144.536  144.571  144.522  144.569          100       3            0  29.704944  28.716346  13.175701
208 2024-01-08 13:58:00  144.569  144.587  144.565  144.583           67       3            0  30.667005  31.270038  12.411194
209 2024-01-08 13:59:00  144.583  144.587  144.575  144.583           47       3            0  31.560347  30.239358  12.002113

無事データが取得できました。

最後に

ここで取得したデータ結果をMT5のADXと比較したい場合は、MT5のADX(Wilder)インディケータを挿入して こちらのものを比較してください。MT5のADXと比較すると値がまったく異なります。

タイトルとURLをコピーしました