【Python×仮想通貨】MACDを活用した自動売買|ビットコインのテクニカル分析・取引入門

こんにちは、Kosei(@kay_diacc2)です!

こんな方におすすめ!
  • テクニカル分析を採用した仮想通貨の自動売買に興味がある
  • PythonでMACDを用いた仮想通貨のテクニカル分析を実践したい
目次

MACDとは

MACD(Moving Average Convergence Divergence)とは、移動平均線を応用したテクニカル分析指標です。

MACD線とシグナル線という2つの線を用いて相場が「買い」なのか「売り」なのか洞察する手法です。

【参考】MACDグラフの見方
  • MACDの線(赤線)シグナル線(青線)を上から下に抜けた時、「売り」と判断
  • MACDの線(赤線)シグナル線(青線)を下から上に抜けた時、「買い」と判断

MACD線とシグナル線の求め方

長短2つの移動平均の乖離幅を1つの線で表現したものがMACD線であり、MACD線の値をさらにある期間で平均したのがシグナル線です。計算式は次のように表せます。

MACD線の求め方

MACD線 = 短期指数移動平均 – 長期指数移動平均 = 短長期移動平均の乖離幅

シグナル線の求め方

シグナル線 = (短期指数指数移動平均 – 長期指数移動平均)(MACD)の指数平滑移動平均線

MACDチャートは、MACDとシグナル線2本で表現されるため、売買のサインがわかりやすいのが特徴です。

【参考】テクニカル分析採用の自動取引におすすめの暗号資産(仮想通貨)取引所

スクロールできます
取引所名最低取引量現物取引手数料*1入金手数料[円]入金手数料[BTC]出金手数料[円]送金手数料[BTC]信用取引API提供ccxt自動売買おすすめ
0.0001BTCMaker:-0.01%
Taker:0.05%
無料無料0円/
400円(大口出金)
無料×★★★★★
0.0001BTCMaker:-0.02%
Taker:0.12%
無料無料550円/
770円(3万円以上)
0.0006 BTC×★★★★☆
bitFlyer*20.001 BTC0.01〜0.15%0〜330 円無料220〜770 円0.0004 BTC★★★★☆
0.0001 BTC無料無料無料330 円無料××★★★★☆
0.0001 BTC無料無料無料330 円0.0005 BTC★★★★★
0.005 BTC無料無料無料407円0.0005 BTC×★★★★★
表:暗号資産取引所の比較表(最低取引量の単位はBTCで記載)
補足
  1. 現物取引手数料の対象通貨はBTC/JPY。手数料は約定数量 × 上記記載の割合[%]として算出可能。
  2. bitFlyerの取引手数料はLightningBTC現物の手数料を表示
  3. 期間限定で4/22〜6/30に口座開設&72時間以内入金を行うと、対象者全員に2,500円相当のビットコインプレゼントとのこと!

テクニカル分析を活用した自動取引を実践した場合、短期間での暗号資産の取引回数が増加する傾向にあります。さらに、自動取引の期間にデイトレードを採用した場合、なおさら増加すると言えます。

したがって、テクニカルトレードで取引利益を最大化したい場合は「取引手数料が安い取引所を選択する」ことを推奨します。

上記に示した暗号資産(仮想通貨)取引所は全てテクニカルトレードと相性が良いおすすめ取引所です。また、以下には仮想通貨の自動取引を実践する上で必須となるAPI利用方法についても言及しています。

APIの利用方法をマスターすると自動取引で実現できる幅も広がります。是非合わせてご参考下さい。

スクロールできます
API利用手順確認API利用手順確認API利用手順確認API利用手順確認API利用手順確認

【コード全て公開】MACDテクニカル分析イメージ

本記事では、上図に示すような、 MACDを取り入れた仮想通貨のテクニカル分析結果をPythonプログラミングで可視化する方法について解説します。

【事前準備】Python環境の構築

Python環境を構築します。次のようなパッケージを事前にインストールしましょう。

TA-Lib

Ta-Libはテクニカル分析結果を算出するためのパッケージです。以下、ご自身のOSに合ったインストール方法をご覧ください。

Yahoo Finance

仮想通貨の価格データは、Yahooファイナンスのパッケージを用いて取得します。

pip install yfinance

mlpfinance

テクニカルチャートの可視化にはmplfinanceを用います。

pip install mplfinance

【Python実践】MACDを用いた仮想通貨のテクニカル分析

実際にMACD採用のテクニカルチャートをPythonプログラムで構築します。

Pythonライブラリ呼出

はじめに、次のようなPythonライブラリをインポートしましょう。

import talib
import numpy as np
import pandas as pd
import yfinance
import mplfinance as mpf

【データ取得】ビットコイン価格

ビットコイン価格データは次のように取得します。関数の出力イメージも合わせて紹介します。

# 引数情報
symbol = "BTC-JPY"  # 仮想通貨の銘柄を指定
period = "max"      # データ取得範囲を指定

# データ取得
Ticker = yfinance.Ticker(symbol)
data =   Ticker.history(period=period)
# 出力
print(data)

# データ出力イメージ
#                  Open       High        Low      Close         Volume
# Date                                                                    
# 2022-04-09  5256719.0  5319470.5  5244432.5  5318888.5  1995512135224   
# 2022-04-10  5318758.5  5381188.5  5225232.0  5250627.0  2196213819980   
# 2022-04-11  5249802.0  5290610.0  4938846.0  4959208.0  4260034978571   
# 2022-04-12  4960690.5  5074956.0  4941561.0  5032681.0  3886899801959   
# 2022-04-13  5028289.0  5041876.0  4988700.0  5034410.0  3811091415040   

【テクニカル指標導出】MACD線とシグナル線

取得した仮想通貨の価格データを用いてMACD線とシグナル線を計算するコードを示します。

# 引数情報
fast_period   = 12    # 短期指数移動平均線(EMA)の期間
slow_period   = 26    # 長期指数移動平均線(EMA)の期間
signal_period = 9     # シグナル (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

MACD線とシグナル線の計算には、TA-LibライブラリのMACD()メソッドを用います。

引数には各種移動平均線の日数を指定しましょう。

グラフ可視化

前述で導出したMACD線とシグナル線を用いてグラフを描画します。次のように実行しましょう。

# データ分析範囲(直近3ヶ月分を指定)
period = 90
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='charles',   # グラフスタイル(詳しくはこちらを参照:https://github.com/matplotlib/mplfinance/blob/master/examples/styles.ipynb)
         addplot=graph,     # 連結するグラフ情報
         figratio=(12,9),   # グラフ縦横の比率
         savefig='MACD.png' # 画像保存
        )

【まとめ】プログラミングコード全量

最後に本記事でご紹介したプログラミングコードを全てまとめ、下記にまとめて示します。

import talib
import numpy as np
import pandas as pd
import yfinance
import mplfinance as mpf

# 引数情報
symbol = "BTC-JPY"  # 仮想通貨の銘柄を指定
period = "max"      # データ取得範囲を指定

# データ取得
Ticker = yfinance.Ticker(symbol)
data =   Ticker.history(period=period)


# 引数情報
fast_period   = 12    # 短期指数移動平均線(EMA)の期間
slow_period   = 26    # 長期指数移動平均線(EMA)の期間
signal_period = 9     # シグナル (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


# データ分析範囲(直近3ヶ月分を指定)
period = 90
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='charles',   # グラフスタイル(詳しくはこちらを参照:https://github.com/matplotlib/mplfinance/blob/master/examples/styles.ipynb)
         addplot=graph,     # 連結するグラフ情報
         figratio=(12,9),   # グラフ縦横の比率
         savefig='MACD.png' # 画像保存
        )

【仮想通貨・ビットコイン】自動取引実践法・その他優良情報

最後までご覧いただきありがとうございました。当サイトでは仮想通貨・ビットコインにおける多様な自動取引手法の解説記事を多数取り扱っております。

取引所別:APIの取得手順と使い方の解説記事

スクロールできます
対応言語記事名
Python【GMOコイン】 APIで仮想通貨取引の自動化
Python【Huobi Japan】 APIで仮想通貨取引の自動化
Python【bitbank】 APIで仮想通貨取引の自動化
Python【Coincheck】APIで仮想通貨取引の自動化
Python【BITPOINT】APIで仮想通貨取引の自動化

テクニカル分析を採用した仮想通貨取引の解説記事

スクロールできます
対応言語記事名指標
共通自動売買の種類・自作時のポイント全て
Pythonリアルタイムチャート分析基礎トレンド
Python移動平均線トレンド
Pythonゴールデンクロス・デッドクロストレンド
Pythonアービトラージ(裁定取引)時間・値幅
Pythonボリンジャーバンドオシレータ
PythonMACDオシレータ
PythonRSIオシレータ
【トレンド】:値動きが上昇・下降どちらのトレンドなのか判断に有効
【オシレータ】:現在の相場に対する買われすぎ・売られすぎの判断に有効

その他仮想通貨自動トレード解説記事

スクロールできます
対応言語記事名
Python【データ収集】仮想通貨の過去データを大量取得する方法
Python【初心者向け】ccxtを活用した仮想通貨の自動取引
Node.js【初心者向け】ccxtを活用した仮想通貨の自動取引

最後に

【仮想通貨・ビットコイン】自動取引実践法・その他優良情報

最後までご覧いただきありがとうございました。当サイトでは仮想通貨・ビットコインにおける多様な自動取引手法の解説記事を多数取り扱っております。

取引所別:APIの取得手順と使い方の解説記事

スクロールできます
対応言語記事名
Python【GMOコイン】 APIで仮想通貨取引の自動化
Python【Huobi Japan】 APIで仮想通貨取引の自動化
Python【bitbank】 APIで仮想通貨取引の自動化
Python【Coincheck】APIで仮想通貨取引の自動化
Python【BITPOINT】APIで仮想通貨取引の自動化

テクニカル分析を採用した仮想通貨取引の解説記事

スクロールできます
対応言語記事名指標
共通自動売買の種類・自作時のポイント全て
Pythonリアルタイムチャート分析基礎トレンド
Python移動平均線トレンド
Pythonゴールデンクロス・デッドクロストレンド
Pythonアービトラージ(裁定取引)時間・値幅
Pythonボリンジャーバンドオシレータ
PythonMACDオシレータ
PythonRSIオシレータ
【トレンド】:値動きが上昇・下降どちらのトレンドなのか判断に有効
【オシレータ】:現在の相場に対する買われすぎ・売られすぎの判断に有効

その他仮想通貨自動トレード解説記事

スクロールできます
対応言語記事名
Python【データ収集】仮想通貨の過去データを大量取得する方法
Python【初心者向け】ccxtを活用した仮想通貨の自動取引
Node.js【初心者向け】ccxtを活用した仮想通貨の自動取引

最後に

この記事が気に入ったら
フォローしてね!

本記事をシェア!
URLをコピーする
URLをコピーしました!
目次
閉じる