2024.05
林貴晴/AMSER Inc.
はらみ足
はらみ足はチャートパターンの一つで、あるローソク足の実体(開始価格と終了価格の間の太い部分)の中に、次のローソク足の実体が完全に収まる状況を指します。このパターンは市場参加者間の合意形成が不確実になったことを示し、トレンドの逆転の兆しと見なされます。
使用するライブラリとその役割について
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株式会社代表取締役。