こんにちは、DXCEL WAVEの運営者(@dxcelwave)です!
- 仮想通貨・ビットコインの自動取引に興味がある
- テクニカル分析から仮想通貨注文に至るまでの全てのプロセスをPythonで自動化したい
暗号資産(仮想通貨)の自動取引とは
仮想通貨の自動取引とは、通貨情報参照・決済・送金等の取引関連操作をプログラムで代替すること。
自動取引の実装により、手動操作による手間削減はもちろんのこと、仮想通貨収益化プロセスの効率化も大幅に期待できます。
仮想通貨自動売買の実現には「取引所が提供するAPI」の利用が必須となります。APIと聞くと、難しく感じるかもしれませんが、利用方法さえ分かれば意外と簡単に概念も理解できるはずです。本記事でAPI概要説明は割愛していますが、以下の記事で自動売買の仕組みからAPIの概要に至るまで幅広く丁寧に解説しています。
【仮想通貨】自動売買ツールの自作方法とおすすめ暗号資産取引所|無料で実践できるビットコイン自動取引の仕組みも徹底解説
「仮想通貨(暗号資産)の自動売買ツール作成に興味がある」「自動売買の仕組み・作り方を知りたい」「どこの仮想通貨取引所がおすすめなのか知りたい」本記事ではこのような要望にお応えします。
【概要】仮想通貨チャート分析からビットコイン注文を全自動化する方法
本記事では上図に示すような「仮想通貨取引所からデータを取得し、テクニカル分析で買いサインを検知し、ビットコインを購入する」に至る全プロセスをPythonで自動化する方法について解説します。
今回例では、仮想通貨(暗号資産)取引所にCoincheckを採用します。Coincheckが提供するAPI機能は使い勝手が良く、仮想通貨取引初心者にも優しい仕様であるため、こちらを採用しています。
なお、Coincheck以外の取引所APIを活用しても実装できるよう後述していますため、是非その点も踏まえて確認してみて下さい。
【参考】テクニカル分析採用の自動取引におすすめの暗号資産(仮想通貨)取引所
取引所名 | 最低取引量 | 現物取引手数料*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での仮想通貨取引自動化に際して、2点事前に対応すべき環境設定事項があります。
- 暗号資産取引所のAPI情報を取得する
- Pythonライブラリをインストールする
【準備事項】仮想通貨(暗号資産)取引所のAPI情報を取得
今回解説する仮想通貨自動取引機能を実現するには、暗号資産取引所のAPIの利用が必須になります。
APIを活用するには、事前に暗号資産取引所の口座開設を行なっておく必要があります。口座開設はスマホと本人確認書類さえあれば10分で手続き完了でき、即日口座開設および暗号資産取引も瞬時に開始できます。
今回はCoinckeckのAPIを活用します。API情報の取得方法は以下をご参考ください。
【準備事項】Pythonライブラリをインストールする
次のようなPythonライブラリを活用して仮想通貨自動取引を実現します。
インストールが未済の方は、事前に対応しておきましょう。
ccxt
仮想通貨取引所のAPIを手軽に活用できるようになるPythonライブラリです。ターミナルやコマンドプロンプトから以下を実行するとインストールできます。
pip3 install ccxt
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
【Python実践】テクニカル分析で買いサイン検知・ビットコイン注文自動化
それでは実際に暗号資産(仮想通貨)取引所から取得したデータをもとに、テクニカル分析を実践し、ビットコインを注文するためのプログラムを構築していきます。
【実践】暗号資産取引所のAPI情報を設定する
はじめに、APIを活用するためのコードを以下に示します。
Coincheck取引所で取得したAPIキーは以下の"コインチェックのAPIキー"
部分に、シークレットキーは"コインチェックのシークレットキー"
部分に書き換えた上でコードを実行しましょう。
import ccxt
import pandas as pd
from time import sleep
import talib
# 取引所APIキー
base = ccxt.coincheck({'apiKey':"コインチェックのAPIキー",
'secret':"コインチェックのシークレットキー",
})
CoincheckのAPI取得方法およびAPI機能概要について詳しく知りたい方はこちらの記事もご覧ください。
【Python】コインチェックAPIの取得と自動売買の実践手順|Coincheck仮想通貨・ビットコイン取引機能入門
「Coincheck APIの取得方法」および「Python環境でAPI機能を利用する方法」を解説します。仮想通貨(ビットコイン等)の自動売買ツールを自作したい方必見です。
またCoincheck APIを呼び出すためのメソッドとしてccxtを活用しています。
ccxtで取引所指定方法を変更すると(例えば、bitFlyerやBitTradeに変更)、簡単にお好み取引所専用の自動売買ツールを作成することもできます。
ccxtについて詳しく知りたい方はこちらの記事をご覧ください。
【Python×API】ccxtを活用した仮想通貨・ビットコイン取引の自動売買|板情報・価格・注文・約定
仮想通貨の自動売買・取引支援を行うツール開発にあたり、非常に便利なccxtライブラリについてご紹介します。記事前半では「ccxtとは何か」解説し、後半では「pythonを用いたプログラム構築方法」を紹介しています。
【実践】仮想通貨の価格情報から移動平均線・ゴールデンクロスを検知する
テクニカル分析手法は「移動平均線を用いたゴールデンクロス」を採用しています。ゴールデンクロスをもとに買いサインを検知するイメージであり、Pythonコードで書くと以下のように記述できます。
# リアルタイムビットコイン価格
btc_price = []
# ビットコイン購入サイン
buy_order = False
while buy_order==False:
"""
********************************************************************
データ取得
********************************************************************
"""
# ビットコイン価格
ticker = base.fetch_ticker(symbol="BTC/JPY")
# ビットコイン購入価格
btc_price.append(ticker["ask"])
# 短期移動平均線(5s)
Ema_5s = talib.EMA(pd.Series(btc_price), # データ
5) # 移動平均
# 長期移動平均線(20s)
Ema_20s = talib.EMA(pd.Series(btc_price), # データ
20) # 移動平均
# 進捗
if len(Ema_20s)>21:
print("最新価格: " + "5s移動平均("+str(Ema_5s[len(Ema_5s)-1])+")" + ", 20s移動平均("+str(Ema_20s[len(Ema_20s)-1])+")")
"""
********************************************************************
テクニカル分析|リアルタイム移動平均線(ゴールデンクロス検知)
********************************************************************
"""
# 上昇トレンド検知
if len(btc_price)>30:
if (Ema_5s[len(Ema_5s)-2] - Ema_20s[len(Ema_20s)-2] <0) & (Ema_5s[len(Ema_5s)-1] - Ema_20s[len(Ema_20s)-1] >0):
# メッセージ
print("ゴールデンクロス発生")
# 購入サイン更新
buy_order = True
# 待機時間
sleep(2)
上記の例では数秒間隔でCoincheckからビットコイン価格を取得しながら、短期移動平均線(Ema_5s)と長期移動平均線(Ema_20s)を計算し、ゴールデンクロスを導出しています。
また、ゴールデンクロスが検知できたタイミングで買いサインbuy_order = True
というフラグが立つようにコーディングしています。
ゴールデンクロスを採用したテクニカル分析について詳しく知りたい方はこちらの記事をご覧下さい。
【仮想通貨】移動平均線・ゴールデンクロス・デッドクロスをリアルタイムに可視化|Python・自動売買ツール作成
「仮想通貨(暗号資産)や株価の自動売買に興味がある」「移動平均線やゴールデンクロスを表現する方法を知りたい」本記事ではこれらの要望にお応えします。
ゴールデンクロス以外のテクニカル手法を活用して仮想通貨の自動取引を実現したい方は、本記事最下部の「テクニカル分析を採用した仮想通貨取引の解説記事」をご覧下さい。
【実践】仮想通貨チャート分析結果をもとにビットコインを注文
前述のテクニカル分析でゴールデンクロスを検知するとbuy_order = True
というフラグが立つよう設定されています。そのフラグが立ったことをトリガーとしてビットコインが自動購入されるコードを以下に示します。
コード
ビットコイン購入は、ccxtのcreate_order()
メソッドに対して指値価格と取引量[BTC]を与えることで実現できます。このコードを実行すると、実際に注文が走ります。コード実行の際は注意が必要です。
"""
********************************************************************
ビットコイン購入注文
********************************************************************
"""
if buy_order == True:
# 注文価格・数量設定
price_value = btc_price[-1] # 指値価格[円/BTC]
amount_value = 0.005 # 取引数量[BTC]
# 注文実行
order = base.create_order(
symbol = 'BTC/JPY', # 取引通貨
type = 'limit', # 注文種別(limit:指値注文, market:成行注文)
side = 'buy', # 買い注文
amount = amount_value, # 取引数量
price =price_value, # 指値価格
)
# 結果出力
print(order)
出力イメージ
ビットコインの注文が正常に走ると、以下のような出力結果が得られます。
# 出力イメージ
# {'info': {'success': True,
# 'id': 'xxxxxxxx',
# 'amount': '0.005',
# 'rate': '2000000.0',
# 'order_type': 'buy',
# 'pair': 'btc_jpy',
# 'created_at': '2022-08-09T23:01:55.000Z',
# 'market_buy_amount': None,
# 'stop_loss_rate': None},
# 'id': 'xxxxxxx'}
【Python】ゴールデンクロス買いサイン検知・ビットコイン自動売買
本日ご紹介したコードを全て以下にまとめました。API情報の書き換え部分さえ修正いただければ、ほぼコピペで利用できるコードとなっています。すぐに自動取引したい・動作確認を優先したい方はこちらを活用ください。
import ccxt
import pandas as pd
from time import sleep
import talib
# 取引所APIキー
base = ccxt.coincheck({'apiKey':"コインチェックのAPIキー",
'secret':"コインチェックのシークレットキー",
})
# リアルタイムビットコイン価格
btc_price = []
# ビットコイン購入サイン
buy_order = False
while buy_order==False:
"""
********************************************************************
データ取得
********************************************************************
"""
# ビットコイン価格
ticker = base.fetch_ticker(symbol="BTC/JPY")
# ビットコイン購入価格
btc_price.append(ticker["ask"])
# 短期移動平均線(5s)
Ema_5s = talib.EMA(pd.Series(btc_price), # データ
5) # 移動平均
# 長期移動平均線(20s)
Ema_20s = talib.EMA(pd.Series(btc_price), # データ
20) # 移動平均
# 進捗
if len(Ema_20s)>21:
print("最新価格: " + "5s移動平均("+str(Ema_5s[len(Ema_5s)-1])+")" + ", 20s移動平均("+str(Ema_20s[len(Ema_20s)-1])+")")
"""
********************************************************************
テクニカル分析|リアルタイム移動平均線(ゴールデンクロス検知)
********************************************************************
"""
# 上昇トレンド検知
if len(btc_price)>30:
if (Ema_5s[len(Ema_5s)-2] - Ema_20s[len(Ema_20s)-2] <0) & (Ema_5s[len(Ema_5s)-2] - Ema_20s[len(Ema_20s)-1] >0):
# メッセージ
print("ゴールデンクロス発生")
# 購入サイン更新
buy_order = True
# 待機時間
sleep(2)
"""
********************************************************************
ビットコイン購入注文
********************************************************************
"""
if buy_order == True:
# 注文価格・数量設定
price_value = btc_price[-1] # 指値価格[円/BTC]
amount_value = 0.005 # 取引数量[BTC]
# 注文実行
order = base.create_order(
symbol = 'BTC/JPY', # 取引通貨
type = 'limit', # 注文種別(limit:指値注文, market:成行注文)
side = 'buy', # 買い注文
amount = amount_value, # 取引数量
price =price_value, # 指値価格
)
# 結果出力
print(order)
【仮想通貨・ビットコイン】自動取引実践法・その他優良情報
最後までご覧いただきありがとうございました。当サイトでは仮想通貨・ビットコインにおける多様な自動取引手法の解説記事を多数取り扱っております。
取引所別: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を活用した仮想通貨の自動取引 |
最後に
お問い合わせフォーム
上記課題に向けてご気軽にご相談下さい。
お問い合わせはこちら