【仮想通貨】複数取引所のビットコイン価格変動をリアルタイムに分析|Python・自動売買ツール作成

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

こんな方におすすめ!
  • 仮想通貨(暗号資産)や株価の自動売買に興味がある!
  • Pythonでリアルタイムな価格変化を可視化して観察できるグラフを作成したい!
  • 複数グラフが一度に動くアニメーショングラフを作成したい!
目次

はじめに

今回の例では、上動画のように、仮想通貨(ビットコイン)を取り扱う取引所の価格変化をリアルタイムに比較するグラフという趣旨でプログラムの記述方法を解説します。

開発言語はPythonを用います。

なお、今回は例に仮想通貨を用いましたが、他にも株価やFX等にも応用できる内容としておりますため、それら自動売買に興味がある方も是非ご覧ください。

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

スクロールできます
取引所名最低取引量現物取引手数料*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利用手順確認

Pythonで暗号資産取引所のビットコイン価格変化をリアルタイムに解析

それでは実際にPythonプログラムを構築していきましょう!以下プログラムの構築手順を示します。

  1. 必要なPythonライブラリ呼出
  2. 価格データを取得する関数作成
  3. ビットコイン価格変化をリアルタイムに可視化する関数作成
  4. 実行関数を記述

今回使用するビットコイン価格のデータは、から取得しています。

仮想通貨の自動売買ツールを作成したい!」「他にも自動売買のノウハウを知りたい!」等の興味があれば、下記の記事で実際に自動売買ツールの作成体験ができます。是非合わせてご覧ください。

必要なPythonライブラリを呼出

まずPythonプログラム構築に必要なライブラリを記述します。

必要なモジュールをインストールした後、下記のようにコードを記述してみましょう!

【Pythonライブラリのインストール未済の方】下記をインストールしましょう!

pip install ccxt
pip install matplotlib

上記インストール後以下のコードを記載しましょう!

import ccxt
import json
import requests
from time import sleep
from itertools import count
import matplotlib.pyplot as plt
import matplotlib as mpl
from matplotlib.animation import FuncAnimation
plt.style.use('fivethirtyeight')
mpl.use('TkAgg')

価格データを取得する関数作成

続いてグラフを描くために必要なビットコイン価格情報を取得するコードを記載します。

今回は仮想通貨を例としていますが、この関数の出力値を株価やFX等に書き換えるだけで後述のコードが別の自動売買ツールにも応用できるようになります。

# GMOコイン 板情報
def gmo_table():
    ita_prep = requests.get('https://api.coin.z.com/public/v1/ticker?symbol=BTC')
    ita = ita_prep.json()['data'][0]
    return ita

# Coincheck 板情報
base = ccxt.coincheck()
def coin_table():
    ticker = base.fetch_ticker(symbol='BTC/JPY')
    return ticker

関数の中身は、各取引所のパブリックAPIを用いて仮想通貨の価格データを取得し、ビットコイン価格の取得結果を出力しています。

ビットコイン価格変化をリアルタイムに可視化する関数作成

今回の趣旨であるビットコイン価格変化をリアルタイムで表現するグラフの出力関数を作成します。

以下のように記述しましょう。

x      = []      # x軸
index  = count() # x軸(カウント)
y_gmo  = []      # gmo(ask)
y_coin = []      # coincheck(ask

# グラフ可視化関数
def animate(i):
    gmo_ask =  float(gmo_table()["ask"])       # GMOコイン(買値)
    coincheck_ask = float(coin_table()["ask"]) # Coin Check(買値)

    # リスト格納
    x.append(next(index))
    y_gmo.append(gmo_ask)
    y_coin.append(coincheck_ask)

    # グラフ設定
    plt.cla()
    plt.title("Compare Ask")
    plt.xlabel("Time")
    plt.ylabel("Bitcoin[BTC]")
    plt.plot(x,y_gmo ,label="GMO Coin")
    plt.plot(x,y_coin ,label="Coin Check")
    plt.legend(loc="upper left")
    plt.tight_layout()

実行関数の記述

最後にPythonスクリプトを実行するためのコードを以下のように記載します。

# アニメーショングラフ適用(インターバル:2秒)
ani = FuncAnimation(plt.gcf(),animate,interval=1000)

# グラフ表示
plt.tight_layout()
plt.show()

これでスクリプトが完成です!ターミナルまたはコマンドプロンプトを開き、作成したPythonスクリプトを実行しましょう。

本記事でご紹介したビットコインチャート分析コードの全量掲載

今回ご紹介したコードを全て下記にまとめました。

まずはコピペで動作確認してみたいという方はこちらを活用してみて下さい。

import ccxt
import json
import requests
from time import sleep
from itertools import count
import matplotlib.pyplot as plt
import matplotlib as mpl
from matplotlib.animation import FuncAnimation
plt.style.use('fivethirtyeight')
mpl.use('TkAgg')

# GMOコイン 板情報
def gmo_table():
    ita_prep = requests.get('https://api.coin.z.com/public/v1/ticker?symbol=BTC')
    ita = ita_prep.json()['data'][0]
    return ita

# Coincheck 板情報
base = ccxt.coincheck()
def coin_table():
    ticker = base.fetch_ticker(symbol='BTC/JPY')
    return ticker

x      = []      # x軸
index  = count() # x軸(カウント)
y_gmo  = []      # gmo(ask)
y_coin = []      # coincheck(ask

# グラフ可視化関数
def animate(i):
    gmo_ask =  float(gmo_table()["ask"])       # GMOコイン(買値)
    coincheck_ask = float(coin_table()["ask"]) # Coin Check(買値)

    # リスト格納
    x.append(next(index))
    y_gmo.append(gmo_ask)
    y_coin.append(coincheck_ask)

    # グラフ設定
    plt.cla()
    plt.title("Compare Ask")
    plt.xlabel("Time")
    plt.ylabel("Bitcoin[BTC]")
    plt.plot(x,y_gmo ,label="GMO Coin")
    plt.plot(x,y_coin ,label="Coin Check")
    plt.legend(loc="upper left")
    plt.tight_layout()

# アニメーショングラフ適用(インターバル:2秒)
ani = FuncAnimation(plt.gcf(),animate,interval=1000)

# グラフ表示
plt.tight_layout()
plt.show()

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

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

取引所別: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をコピーしました!
目次
閉じる