商品
一覧

English

MQL5の書き方(for MQL4デザイナー)

 

2024.05

林貴晴/AMSER Inc.

MT5とPythonの連携②

MetaTrader 5(MT5)とPythonを連携させることで、チャートパターンの認識とその視覚化が行えるようになります。この記事では、Technical Analysis Library(TA-Lib)を用いて、はらみ足を検出する具体的な方法とコードについて詳しく解説します。

はらみ足
はらみ足はチャートパターンの一つで、あるローソク足の実体(開始価格と終了価格の間の太い部分)の中に、次のローソク足の実体が完全に収まる状況を指します。このパターンは市場参加者間の合意形成が不確実になったことを示し、トレンドの逆転の兆しと見なされます。

使用するライブラリとその役割について
MetaTrader5 : MT5と連携を可能にするライブラリ
Pandas : データの操作と分析を効率的に行うためのライブラリ
TA-Lib : 様々なインジケータやチャートパターン認識に使用されるライブラリ
mplfinance: ローソク足チャートをはじめとする金融チャートを簡単に表示させるためのライブラリ

 

コードと解説

これから、各ステップを順に追ってコードの解説を行っていきます。理解を深めるため、必要なライブラリのインポートは各セクションの開始前に行います。

1. MT5への接続
initialize 関数を使ってMT5サーバーに接続します。これにより、MT5アカウントを通じて取引データにアクセスできるようになります。詳しくは「MT5とPythonの連携①」をご確認ください。

import MetaTrader5 as mt5
mt5.initialize()
                    
 

2. データの取得
通貨ペアを指定します。通貨ペア名にはサフィックスが必要です。
copy_rates_from_pos 関数を使用して、USD/JPY ペアの過去100時間のデータを1時間足で取得します。

symbol = "USDJPY.ps01"
rates = mt5.copy_rates_from_pos(symbol, mt5.TIMEFRAME_H1, 0, 100)
                  
 

3. データフレームへの変換
取得したデータを pandas データフレームに変換し、時間列を日時オブジェクトに変換してインデックスに設定します。

import pandas as pd
df = pd.DataFrame(rates)
df['time'] = pd.to_datetime(df['time'], unit='s')
df.set_index('time', inplace=True)
                
 

4. はらみ足パターンの検出
talib.CDLHARAMI 関数を使用してはらみ足パターンを検出します。この関数は各キャンドルに対してパターンを評価し、該当するキャンドルには非ゼロの値を割り当てます。

import talib
df['inside_bar'] = talib.CDLHARAMI(df['open'], df['high'], df['low'], df['close'])
            
 

5. ローソク足チャートの設定と壁画
mplfinance を使用して、はらみ足パターンが存在する位置にマーカーを配置したローソク足チャートを描画します。

import mplfinance as mpf
apd = mpf.make_addplot(df['inside_bar'] != 0, type='scatter', markersize=200, marker='.', color='blue')
mpf.plot(df, type='candle', style='charles', addplot=apd, title=f'{symbol} H1', ylabel='Price')
            
 

6. MT5の終了
終了コードです。

mt5.shutdown()
            
 

完成コード

import MetaTrader5 as mt5
import pandas as pd
import talib
import mplfinance as mpf
            
 

# MT5に接続

mt5.initialize()
            
 

# データの取得

                symbol = "USDJPY.ps01"
                rates = mt5.copy_rates_from_pos(symbol, mt5.TIMEFRAME_H1, 0, 100)
            
 

# データフレームに変換

df = pd.DataFrame(rates)
df['time'] = pd.to_datetime(df['time'], unit='s')
df.set_index('time', inplace=True)
            
 

# はらみ足パターンの検出

df['inside_bar'] = talib.CDLHARAMI(df['open'], df['high'], df['low'], df['close'])
            
 

# ローソク足チャートの設定

apd = mpf.make_addplot(df['inside_bar'] != 0, type='scatter', markersize=200, marker='.', color='blue')
            
 

# ローソク足チャートの描画

mpf.plot(df, type='candle', style='charles', addplot=apd, title=f'{symbol} H1', ylabel='Price')
            
 

# MT5の終了

                mt5.shutdown()
            
 

結果
pはらみ足が検出された箇所には青い点を表示しました。

TA-Libには200以上のインジケータが含まれており、そのうち60以上がチャートパターンを認識するためのものです。インストール後に「help(talib)」コマンドを使用すると、利用可能なインジケータの一覧を確認できます。インジケータ名の前に「CDL(Candlestick)」が付されているものは、チャートパターン認識のインジケータです。 この記事では、MT5とPythonを連携させて、MT5単体では実現が困難なチャートパターン認識の方法を紹介しました。

 

執筆者紹介
林貴晴

林 貴晴(AMSER株式会社代表取締役)

内資系薬品会社で約10年勤務の後、
外資系製薬会社(現IQVIA及びGSK)で合計約10年を勤務
その後EA AMSERを開発し、その成績を評価され、株式会社ゴゴジャンの部長として抜擢。
現在はAMSER株式会社代表取締役。