こんにちは、DXCEL WAVEの運営者(@dxcelwave)です!
- Pythonで移動平均線を用いたFXのテクニカル分析を実践したい
- テクニカル分析をもとにFX売買意思決定を自動化したい
【FX】移動平均線とは
- 単純移動平均(SMA)
- 指数移動平均(EMA)
単純移動平均(SMA)
単純移動平均線は、単に移動平均線とも呼ばれ、当日から遡ったある一定期間の価格平均値を1日(または分・時間・週間)ずつずらし、グラフ化した曲線です。上記のような式で計算できます。
指数平滑移動平均(EMA)
指数平滑移動平均線は、個々の価格データに対する加重を「指数関数的」に減少させて、平均値を計算した曲線を差し、上記のような数式で算出可能です。
【コード全て公開】外国為替相場データを用いた移動平均線のテクニカル分析
移動平均線|スイングトレード対応
移動平均線|デイトレード対応
本記事では、Pythonで「外国為替相場データを取得」および「移動平均線を算出」し、テクニカル分析を実践する方法について解説します。その上で上図のようなグラフを算出できるようになることが目標です。
データの期間は、デイトレードおよびスイングトレード向けの移動平均線を導出方法を例に紹介しますが、スキャルピングや長期トレードにも柔軟にデータ期間を調整できるようなコード仕様になっています。
【参考】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
plotly
外国為替相場の価格推移グラフはplotly
というライブラリを用いて可視化します。
pip install plotly
【FX×Python】外為データと移動平均線によるテクニカル分析の実践
それでは実際にPythonを用いて移動平均線によるFXテクニカル分析を実践していきましょう。
Yahoo Finance|外為データ取得
外為データの取得を行います。yahoo finance
のライブラリを用いて以下のように記述します。
コード
import numpy as np
import pandas as pd
import yfinance as yf
# 外為データ取得
tks = 'USDJPY=X' # 通貨ペア
data = yf.download(tickers = tks , # 通貨ペア
period = '3mo', # データ取得期間
interval = '1d', # データ取得間隔
)
出力イメージ
print(data)
# 出力イメージ
# Open High Low Close Adj Close Volume
# Date
# 2022-03-24 121.138000 122.102997 120.980003 121.126999 121.126999 0
# 2022-03-25 122.349998 122.349998 121.217003 122.346001 122.346001 0
# 2022-03-28 122.269997 125.055000 122.158997 122.269997 122.269997 0
# 2022-03-29 123.660004 124.209000 122.057999 123.660004 123.660004 0
# 2022-03-30 123.125000 123.023003 121.316002 123.125000 123.125000 0
# ... ... ... ... ... ... ...
# 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
引数情報
外国為替相場のヒストリカルデータはyf.download()
メソッドを用いて取得可能です。「データ取得期間」「取得間隔」を変更すると、スキャルピングトレード・デイトレに適用したデータ取得もできます。
例えば、データの取得範囲は引数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ヶ月おきにデータ表示 |
通貨ペアはtickers
をもとに指定可能です。今回の例ではUSD/JPYとして設定しています。
SMA|単純移動平均線
前述で取得した外為データを用いて移動平均線を計算します。以下では単純移動平均線(SMA)の計算方法を示します。
(例)10日移動平均線
import talib
# 10日移動平均線
period = 10
# 単純移動平均線
ma_sma_10d = talib.SMA(data['Close'], # データ取得元
period) # 移動平均線の期間
(例)25日移動平均線
import talib
# 25日移動平均線
period = 25
# 単純移動平均線
ma_sma_25d = talib.SMA(data['Close'], # データ取得元
period) # 移動平均線の期間
EMA|指数平滑移動平均線
前述で取得した外為データを用いて移動平均線を計算します。以下では指数平滑移動平均線(EMA)の計算方法を示します。
(例)10日移動平均線
import talib
# 10日移動平均線
period = 10
# 指数平滑移動平均線
ma_ema_10d = talib.EMA(data['Close'], # データ取得元
period) # 移動平均線の期間
(例)25日移動平均線
import talib
# 25日移動平均線
period = 25
# 指数平滑移動平均線
ma_ema_25d = talib.EMA(data['Close'], # データ取得元
period) # 移動平均線の期間
# 出力
print(ma_ema_25d)
FX|移動平均線のグラフ
前述で取得した外為データおよび移動平均線のデータを用いて、グラフを作成します。次のようなコードを実行してみましょう。
import plotly.graph_objs as go
# グラフインスタンス
fig = go.Figure()
# ローソク足グラフ
fig.add_trace(go.Candlestick(
x=data.index, # X軸
open=data['Open'], # Y軸:始値
high=data['High'], # Y軸:高値
low=data['Low'], # Y軸:安値
close=data['Close'], # Y軸:終値
name = tks+ 'market data'), # グラフラベル
)
# 10日移動平均線
fig.add_trace(go.Scatter(x=ma_sma_10d.index, # X軸
y=ma_sma_10d, # Y軸
name="sma-10d", # グラフラベル
mode="lines"), # 折線グラフ
)
# 25日移動平均線
fig.add_trace(go.Scatter(x=ma_sma_25d.index, # X軸
y=ma_sma_25d, # Y軸
name="sma-25d", # グラフラベル
mode="lines"), # 折線グラフ
)
# グラフタイトル
fig.update_layout(title='FX: '+tks.replace('=X',''))
#Show
fig.show()
【コード全量】移動平均線採用のFXテクニカル分析
最後に本日ご紹介したコードの全量を示します。外為データの取得期間や移動平均線の計算期間を柔軟に変更することで、お好みの取引パターンに応じたテクニカル分析が実現できます。是非色々試してみましょう。
最後の例はデイトレ向けに移動平均線を算出したコードになります。
import numpy as np
import pandas as pd
import yfinance as yf
import talib
import plotly.graph_objs as go
# 外為データ取得
tks = 'USDJPY=X'
data = yf.download(tickers = tks , # 通貨ペア
period = '1d', # データ取得期間
interval = '15m', # データ表示間隔
)
# 単純移動平均線(30分移動平均線)
ma_sma_1d = talib.SMA(data['Close'], # データ取得元
2) # 移動平均線の期間
# 単純移動平均線(90分移動平均線)
ma_sma_3d = talib.SMA(data['Close'], # データ取得元
6) # 移動平均線の期間
# グラフインスタンス
fig = go.Figure()
# ローソク足グラフ
fig.add_trace(go.Candlestick(
x=data.index, # X軸
open=data['Open'], # Y軸:始値
high=data['High'], # Y軸:高値
low=data['Low'], # Y軸:安値
close=data['Close'], # Y軸:終値
name = tks+ 'market data'), # グラフラベル
)
# 10日移動平均線
fig.add_trace(go.Scatter(x=ma_sma_1d.index, # X軸
y=ma_sma_1d, # Y軸
name="sma-30m", # グラフラベル
mode="lines"), # 折線グラフ
)
# 25日移動平均線
fig.add_trace(go.Scatter(x=ma_sma_3d.index, # X軸
y=ma_sma_3d, # Y軸
name="sma-90m", # グラフラベル
mode="lines"), # 折線グラフ
)
# グラフタイトル
fig.update_layout(title='FX: '+tks.replace('=X',''))
#Show
fig.show()
【FX】シストレ実践法・その他優良情報
最後までご覧いただきありがとうございました。当サイトではFXにおける多様なシステムトレード手法の解説記事を取り扱っております。
FX・シストレ記事一覧
FXの自動売買やシステムトレードに興味がある方向けに様々な取引実践法を解説しています。
システムトレードによるFX取引解説記事
対応言語 | 記事名 |
---|---|
Python | 【FX】過去データ(ヒストリカルデータ)を大量取得する方法 |
Python | 【FX】テクニカル分析|移動平均線 |
Python | 【FX】テクニカル分析|ボリンジャーバンド |
Python | 【FX】テクニカル分析|MACD |
Python | 【FX】テクニカル分析|RSI |
【参考】仮想通貨・ビットコイン|金融投資情報
当サイトでは仮想通貨・ビットコインにおける多様な分析および自動売買手法を配信しています。ビットコイン投資にも興味がある方は是非こちらもご覧下さい。
仮想通貨・ビットコイン|情報一覧
自動売買ツールとは|超具体的実装方法
【仮想通貨】自動売買ツールの自作方法とおすすめ暗号資産取引所|無料で実践できるビットコイン自動取引の仕組みも徹底解説
「仮想通貨(暗号資産)の自動売買ツール作成に興味がある」「自動売買の仕組み・作り方を知りたい」「どこの仮想通貨取引所がおすすめなのか知りたい」本記事ではこのような要望にお応えします。
最後に
お問い合わせフォーム
上記課題に向けてご気軽にご相談下さい。
お問い合わせはこちら