こんにちは、DXCEL WAVEの運営者(@dxcelwave)です!
- 仮想通貨(暗号資産)や株価の自動売買に興味がある!
- Pythonでリアルタイムな価格変化を可視化して観察できるグラフを作成したい!
- 複数グラフが一度に動くアニメーショングラフを作成したい!
はじめに
今回の例では、上動画のように、仮想通貨(ビットコイン)を取り扱う取引所の価格変化をリアルタイムに比較するグラフという趣旨でプログラムの記述方法を解説します。
開発言語はPythonを用います。
なお、今回は例に仮想通貨を用いましたが、他にも株価やFX等にも応用できる内容としておりますため、それら自動売買に興味がある方も是非ご覧ください。
【参考】テクニカル分析採用の自動取引におすすめの暗号資産(仮想通貨)取引所
取引所名 | 最低取引量 | 現物取引手数料*1 | 入金手数料[円] | 入金手数料[BTC] | 出金手数料[円] | 送金手数料[BTC] | 信用取引 | API提供 | ccxt | 自動売買おすすめ |
---|---|---|---|---|---|---|---|---|---|---|
Coincheck | 0.005 BTC | 無料 | 無料 | 無料 | 407円 | 0.0005 BTC | × | ○ | ○ | ★★★★★ |
GMOコイン | 0.0001BTC | Maker:-0.01% Taker:0.05% | 無料 | 無料 | 0円/ 400円(大口出金) | 無料 | ○ | ○ | × | ★★★★☆ |
bitbank | 0.0001BTC | Maker:-0.02% Taker:0.12% | 無料 | 無料 | 550円/ 770円(3万円以上) | 0.0006 BTC | × | ○ | ○ | ★★★★☆ |
BITPOINT | 0.0001 BTC | 無料 | 無料 | 無料 | 330 円 | 無料 | × | ○ | × | ★★★☆☆ |
- 現物取引手数料の対象通貨はBTC/JPY。手数料は約定数量 × 上記記載の割合[%]として算出可能。
テクニカル分析を活用した自動取引を実践した場合、短期間での暗号資産の取引回数が増加する傾向にあります。さらに、自動取引の期間にデイトレードを採用した場合、なおさら増加すると言えます。
したがって、テクニカルトレードで取引利益を最大化したい場合は「取引手数料が安い取引所を選択する」ことを推奨します。
上記に示した暗号資産(仮想通貨)取引所は全てテクニカルトレードと相性が良いおすすめ取引所です。また、以下には仮想通貨の自動取引を実践する上で必須となるAPI利用方法についても言及しています。
APIの利用方法をマスターすると自動取引で実現できる幅も広がります。是非合わせてご参考下さい。
Pythonで暗号資産取引所のビットコイン価格変化をリアルタイムに解析
それでは実際にPythonプログラムを構築していきましょう!以下プログラムの構築手順を示します。
- 必要なPythonライブラリ呼出
- 価格データを取得する関数作成
- ビットコイン価格変化をリアルタイムに可視化する関数作成
- 実行関数を記述
今回使用するビットコイン価格のデータは、CoincheckとGMOコインから取得しています。
「仮想通貨の自動売買ツールを作成したい!」「他にも自動売買のノウハウを知りたい!」等の興味があれば、下記の記事で実際に自動売買ツールの作成体験ができます。是非合わせてご覧ください。
【Python】GMOコインAPIで仮想通貨取引の自動売買|ビットコイン等の板情報・残高・現物信用注文の自動化方法解説
本記事は「仮想通貨の自動売買に興味がある」「自動売買ツールを自作したい」という方を対象としたプログラム解説記事です。
【Python】コインチェックAPIの取得と自動売買の実践手順|Coincheck仮想通貨・ビットコイン取引機能入門
「Coincheck APIの取得方法」および「Python環境でAPI機能を利用する方法」を解説します。仮想通貨(ビットコイン等)の自動売買ツールを自作したい方必見です。
必要な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 | 【BitTrade】 APIで仮想通貨取引の自動化 |
Python | 【bitbank】 APIで仮想通貨取引の自動化 |
Python | 【Coincheck】APIで仮想通貨取引の自動化 |
Python | 【bitFlyer】APIで仮想通貨取引を自動化 |
Python | 【BITPOINT】APIで仮想通貨取引の自動化 |
機械学習やテクニカル分析を採用した仮想通貨取引の解説記事
対応言語 | 記事名 | 指標 |
---|---|---|
共通 | 自動売買の種類・自作時のポイント | 全て |
Python | リアルタイムチャート分析基礎 | トレンド |
Python | 移動平均線 | トレンド |
Python | ゴールデンクロス・デッドクロス | トレンド |
Python | アービトラージ(裁定取引) | 時間・値幅 |
Python | ボリンジャーバンド | オシレータ |
Python | MACD | オシレータ |
Python | RSI | オシレータ |
Python | 時系列予測モデルの構築 | 機械学習・AI |
【オシレータ】:現在の相場に対する買われすぎ・売られすぎの判断に有効
その他仮想通貨自動トレード解説記事
対応言語 | 記事名 |
---|---|
Python | 【データ収集】仮想通貨の過去データを大量取得する方法 |
Python | 【初心者向け】ccxtを活用した仮想通貨の自動取引 |
Node.js | 【初心者向け】ccxtを活用した仮想通貨の自動取引 |
最後に
お問い合わせフォーム
上記課題に向けてご気軽にご相談下さい。
お問い合わせはこちら