こんにちは、DXCEL WAVEの運営者(@dxcelwave)です!
- PythonでMACDを用いたFXのテクニカル分析を実践したい
- システムトレードにテクニカル分析を適用しFX買い・売りシグナルの取得を自動化したい
【FX】MACDとは
MACD(Moving Average Convergence Divergence)とは、移動平均線を応用したテクニカル分析指標です。
シグナル線とMACD線という2つを用いて外為相場が現在「買い」「売り」どちらに傾いているのか判断する手法です。
- MACDの線(赤線)がシグナル線(青線)を上から下に抜けた時、「売り」と判断
- MACDの線(赤線)がシグナル線(青線)を下から上に抜けた時、「買い」と判断
MACD線とシグナル線の求め方
短長2つの移動平均の乖離幅を1つの線で表現したものがMACD線です。また、MACD線の値をさらに対象期間で平均したのがシグナル線です。計算式は以下のように示されます。
MACD線 = 短期指数移動平均 – 長期指数移動平均 = 短長期移動平均の乖離幅
シグナル線 = (短期指数指数移動平均 – 長期指数移動平均)(MACD)の指数平滑移動平均線
MACDのチャートを見ると、MACDとシグナル線2本で表現されることが分かります。MACDは買い・売りのサインが判断しやすいのが特徴であり、初心者の方にも使い勝手も良いオシレータ系指標であると言えます。
【コード全量公開】MACDを用いたFXテクニカル分析
本記事ではPythonをもとに、MACDを用いて外国為替相場のテクニカル分析を実施し、最終アウトプットとして上図のようなグラフを出力できるようになることを目指したものです。
【参考】FX取引をこれから始めたい方向け
FX取引をこれから始めてみたい方向けにおすすめの口座開設先をご紹介します。使い勝手の良い管理画面や非常に見やすいチャート画面を活用し、取引チャンスを見逃したくない方はDMM FXがおすすめです。
【事前準備】Python環境の構築
Pythonでテクニカル分析を行うにあたり、いくつか事前準備が必要になります。
次に示すPythonライブラリを予めインストールしましょう。
Ta-Lib
Ta-Libはテクニカル分析に役立つライブラリです。以下の手順に従いインストールしましょう。
共通
最も簡単な方法はAnaconda
をインストールしてTa-Libを使用する方法です。
① Anacondaをインストール
② Anacondaプロンプトを開き、以下を実行
conda install -c conda-forge ta-lib
Mac OSの方はこちら
①Ta-Lib本体をインストール
brew install ta-lib
②Ta-Lib Pythonパッケージをインストール
pip install TA-Lib
yfinance
外国為替相場データの抽出には、yfinance
を用います。
pip install yfinance
mlpfinance
外国為替相場の価格推移グラフを可視化する手段としてmplfinance
を用います。
pip install mplfinance
【FX×Python実践】MACDによる外為相場のテクニカル分析
それでは実際にPythonプログラミングによるMADCを用いた外為相場テクニカル分析を行なっていきます。この方法を学ぶことで、FX自動売買における買い・売りシグナルの自動取得ができるようになるでしょう。
Yahoo Finance|外為データ取得
外為相場データを取得します。yahoo finance
の関数をもとに次のように記述します。
コード
import numpy as np
import pandas as pd
import yfinance as yf
data = yf.download(tickers = 'USDJPY=X', # 通貨ペア
period = '6mo', # データ取得期間
interval = '1d', # データ表示間隔
)
出力イメージ
print(data)
# 出力イメージ
# Open High Low Close Adj Close Volume
# Date
# 2022-06-20 135.276001 135.412003 134.548996 135.276001 135.276001 0
# 2022-06-21 135.087006 136.328995 134.945007 135.087006 135.087006 0
# 2022-06-22 136.268997 136.595001 135.751007 136.268997 136.268997 0
# 2022-06-23 136.024002 136.181000 134.294006 136.024002 136.024002 0
# 2022-06-24 134.839996 135.272003 134.369995 134.839996 134.839996 0
引数情報
通貨ペアはtickers
に指定しましょう。今回の例ではUSD/JPY
を設定しています。
yf.download()
を用いてFX相場データは取得できます。「データ取得期間」「取得間隔」を調整すると、スキャルピングトレード・デイトレに適用したデータが取得も可能です。
データの取得範囲はperiod
で調整します。
period = “15m” | 直近15分のデータ取得 |
period = “1d” | 直近1日のデータ取得 |
period = “1mo” | 直近1ヶ月のデータ取得 |
period = “3mo” | 直近3ヶ月のデータ取得 |
period = “1y” | 直近1年のデータ取得 |
データ取得間隔はinterval
で調整します。
period = “1m” | 1分間間隔でデータ表示 |
period = “15m” | 15分間間隔でデータ表示 |
period = “1d” | 1日おきにデータ表示 |
period = “10d” | 10日おきにデータ表示 |
period = “1mo” | 1ヶ月おきにデータ表示 |
MACD
前述で取得した外為相場のデータを用いてMACDとシグナルを計算します。
import talib
# 引数情報
fast_period = 10 # 短期指数移動平均線(EMA)の期間
slow_period = 25 # 長期指数移動平均線(EMA)の期間
signal_period = 8 # シグナル (MACDの指数平滑移動平均線)の期間
macd, macd_signal, macd_hist = talib.MACD(data['Close'], # データ取得元
fast_period, # 短期EMAの期間
slow_period, # 長期EMAの期間
signal_period) # シグナルの期間
# データ追加
data['macd'] = macd
data['macd_signal'] = macd_signal
FX|外為相場の推移とMACD
最後は前述の計算結果を用いてグラフを描画してみましょう。
import mplfinance as mpf
# データ分析範囲(直近6ヶ月分を指定)
period = 30 * 6
data = data.tail(period)
# グラフ可視化
graph = [
mpf.make_addplot(data['macd'], panel=2, color='red'),
mpf.make_addplot(data['macd_signal'], panel=2, color='blue'),
]
mpf.plot(data, # データ
type='candle', # グラフの種類('candle', 'line'等が指定可能)
volume=True, # 出来高の表示有無
mav=(5,15), # 移動平均線(短期移動平均線の日数、長期移動平均線の日数)
style='yahoo', # グラフスタイル(詳しくはこちらを参照:https://github.com/matplotlib/mplfinance/blob/master/examples/styles.ipynb)
addplot=graph, # 連結するグラフ情報
figratio=(12,9), # グラフ縦横の比率
)
【コード全量】MACDのFXテクニカル分析
最後に本日ご紹介したコードの全量を示します。外為相場データの取得期間やMACDのパラメータ(EMAの計算期間など)を柔軟に調整することで、お好みの取引パターンに応じたテクニカル分析が可能になるはずです。
import numpy as np
import pandas as pd
import yfinance as yf
import talib
data = yf.download(tickers = 'USDJPY=X', # 通貨ペア
period = '6mo', # データ取得期間
interval = '1d', # データ表示間隔
)
# 引数情報
fast_period = 10 # 短期指数移動平均線(EMA)の期間
slow_period = 25 # 長期指数移動平均線(EMA)の期間
signal_period = 8 # シグナル (MACDの指数平滑移動平均線)の期間
macd, macd_signal, macd_hist = talib.MACD(data['Close'], # データ取得元
fast_period, # 短期EMAの期間
slow_period, # 長期EMAの期間
signal_period) # シグナルの期間
# データ追加
data['macd'] = macd
data['macd_signal'] = macd_signal
import mplfinance as mpf
# データ分析範囲(直近6ヶ月分を指定)
period = 30 * 6
data = data.tail(period)
# グラフ可視化
graph = [
mpf.make_addplot(data['macd'], panel=2, color='red'),
mpf.make_addplot(data['macd_signal'], panel=2, color='blue'),
]
mpf.plot(data, # データ
type='candle', # グラフの種類('candle', 'line'等が指定可能)
volume=True, # 出来高の表示有無
mav=(5,15), # 移動平均線(短期移動平均線の日数、長期移動平均線の日数)
style='yahoo', # グラフスタイル
addplot=graph, # 連結するグラフ情報
figratio=(12,9), # グラフ縦横の比率
)
【FX】シストレ実践法・その他優良情報
最後までご覧いただきありがとうございました。当サイトではFXにおける多様なシステムトレード手法の解説記事を取り扱っております。
FX・シストレ記事一覧
FXの自動売買やシステムトレードに興味がある方向けに様々な取引実践法を解説しています。
システムトレードによるFX取引解説記事
対応言語 | 記事名 |
---|---|
Python | 【FX】過去データ(ヒストリカルデータ)を大量取得する方法 |
Python | 【FX】テクニカル分析|移動平均線 |
Python | 【FX】テクニカル分析|ボリンジャーバンド |
Python | 【FX】テクニカル分析|MACD |
Python | 【FX】テクニカル分析|RSI |
【参考】仮想通貨・ビットコイン|金融投資情報
当サイトでは仮想通貨・ビットコインにおける多様な分析および自動売買手法を配信しています。ビットコイン投資にも興味がある方は是非こちらもご覧下さい。
仮想通貨・ビットコイン|情報一覧
自動売買ツールとは|超具体的実装方法
【仮想通貨】自動売買ツールの自作方法とおすすめ暗号資産取引所|無料で実践できるビットコイン自動取引の仕組みも徹底解説
「仮想通貨(暗号資産)の自動売買ツール作成に興味がある」「自動売買の仕組み・作り方を知りたい」「どこの仮想通貨取引所がおすすめなのか知りたい」本記事ではこのような要望にお応えします。
最後に
お問い合わせフォーム
上記課題に向けてご気軽にご相談下さい。
お問い合わせはこちら