こんにちは、DXCEL WAVEの運営者(@dxcelwave)です!
- 仮想通貨・ビットコインの自動取引に興味がある
- PythonでbitFlyer APIを活用しチャート分析を行い、ビットコイン注文するまでを全て自動化したい
暗号資産(仮想通貨)の自動取引とは
仮想通貨の自動取引とは、通貨情報参照・決済・送金等の取引関連操作をプログラムで代替すること。
自動取引の実装により、手動操作による手間削減はもちろんのこと、仮想通貨収益化プロセスの効率化も大幅に期待できます。
仮想通貨自動売買の実現には「取引所が提供するAPI」の利用が必須となります。APIと聞くと、難しく感じるかもしれませんが、利用方法さえ分かれば意外と簡単に概念も理解できるはずです。本記事でAPI概要説明は割愛していますが、以下の記事で自動売買の仕組みからAPIの概要に至るまで幅広く丁寧に解説しています。
【仮想通貨】自動売買ツールの自作方法とおすすめ暗号資産取引所|無料で実践できるビットコイン自動取引の仕組みも徹底解説
「仮想通貨(暗号資産)の自動売買ツール作成に興味がある」「自動売買の仕組み・作り方を知りたい」「どこの仮想通貨取引所がおすすめなのか知りたい」本記事ではこのような要望にお応えします。
【bitFlyer】仮想通貨チャート分析からビットコイン注文を全自動化する方法
本記事では「暗号資産(仮想通貨)取引所からデータを取得し、チャート分析で買いサインを検知し、ビットコインを購入する」に至る全プロセスをPythonで自動化する方法について解説します。
今回例では、仮想通貨(暗号資産)取引所にbitFlyerを採用します。
Bitcoin 日本語情報サイトの調べによると、bitFlyerでのビットコイン取引量は2016-2021年にかけて6年連続で国内No1(※国内暗号資産交換業者における 2016年-2021 年の年間出来高(差金決済/先物取引を含む))を保持しているとのことです。また、セキュリティ面で非常に安心できる取引所であると言えます。
【事前準備】bitFlyerでの仮想通貨チャート分析〜ビットコイン注文自動化
bitFlyer APIを活用してチャート分析・ビットコイン注文プロセスを自動化するに際して、以下2点の事前準備が必要となります。
- bitFlyerのAPI情報を取得する
- Pythonライブラリをインストールする
bitFlyer API情報を取得
仮想通貨の自動売買を実現するには、暗号資産取引所のAPIの利用が必須になります。
APIを活用するには、事前に暗号資産取引所の口座開設を行なっておく必要があります。口座開設はスマホと本人確認書類さえあれば10分で手続き完了でき、即日口座開設および暗号資産取引も瞬時に開始できます。
bitFlyer APIを活用したビットコイン自動売買ツールを作成する上で必要となる「API情報の取得方法」は、以下の記事にて丁寧解説しています。併せてご覧下さい。
Pythonライブラリをインストールする|ccxt・TA-Lib
以下のPythonライブラリを活用してbitFlyer APIを利用できるようにします。
ccxt
仮想通貨取引所のAPIを手軽に活用できるようになるPythonライブラリです。ターミナルやコマンドプロンプトから以下を実行するとインストールできます。
pip3 install ccxt
ccxtは仮想通貨の自動売買ツールを作成する上で非常に有効なライブラリです。当サイトではccxtで活用できる自動取引機能を詳しく解説しております。興味がある方は併せてご覧下さい。
【Python×API】ccxtを活用した仮想通貨・ビットコイン取引の自動売買|板情報・価格・注文・約定
仮想通貨の自動売買・取引支援を行うツール開発にあたり、非常に便利なccxtライブラリについてご紹介します。記事前半では「ccxtとは何か」解説し、後半では「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
【Python】bitFlyer APIでチャート分析とビットコイン売買を自動実行
それでは実際にbitFlyer APIを活用してチャート分析とビットコイン売買を自動で実践する方法について解説していきます。
【実践】暗号資産取引所のAPI情報を設定する
はじめに、APIを活用するためのコードを以下に示します。
bitFlyer取引所で取得したAPIキーは以下の"bitFlyerのAPIキー"
部分に、シークレットキーは"bitFlyerのシークレットキー"
部分に書き換えた上でコードを実行しましょう。
import ccxt
import pandas as pd
from time import sleep
import talib
# 取引所APIキー
base = ccxt.bitflyer({'apiKey':"bitFlyerのAPIキー",
'secret':"bitFlyerのシークレットキー",
})
bitFlyerで活用できるAPI機能は本記事で紹介する以外にも沢山あります。bitFlyer APIで実現できる仮想通貨取引機能についてさらに詳しく知りたい方はこちらの記事もご覧ください。
【Python】bitFlyer API取得手順・ビットコイン自動売買実践|仮想通貨の取引自動化・シストレ入門
「仮想通貨の自動売買に興味がある」「bitFlyer APIの取得手順が知りたい」「Python環境でAPI機能を利用する方法が知りたい」このような要望にお応えします。
【実践】仮想通貨の価格情報からボリンジャーバンドでの買いサインを検知する
テクニカル分析手法は「ボリンジャーバンド」を採用しています。ビットコイン価格がボリンジャーバンド-2σを下回ることを「買いサイン」として検知するよう設計しており、Pythonコードで書くと以下のように記述できます。
# リアルタイムビットコイン価格
btc_price = []
# ビットコイン購入サイン
buy_order = False
while buy_order==False:
"""
********************************************************************
データ取得
********************************************************************
"""
# ビットコイン価格
ticker = base.fetch_ticker(symbol="BTC/JPY")
# ビットコイン購入価格
btc_price.append(ticker["ask"])
# ボリンジャーバンド引数情報
period = 20 # データ取得期間
bbup = 2 # upper-band:標準偏差
bbdwn = 2 # down-band:標準偏差
ma_type = 0 # 移動平均線(0:単純移動平均)
# ボリンジャーバンド指標獲得
bb_up, bb_middle, bb_down = talib.BBANDS(pd.Series(btc_price), # データ
timeperiod=period, # 標準偏差計算期間
nbdevup=bbup, # 標準偏差(σ)*bb_up
nbdevdn=bbdwn, # 標準偏差(-σ)*bb_dwn
matype=ma_type) # 移動平均の種類
"""
********************************************************************
テクニカル分析|リアルタイム移動平均線(ゴールデンクロス検知)
********************************************************************
"""
# ローバンド(-2σ)を検知
if len(btc_price)>30:
if btc_price[-1] < bb_down[len(bb_down)-1]:
# 購入サインON
buy_order = True
# 待機時間
sleep(2)
ボリンジャーバンドによる買いサインが立ったタイミングでbuy_order = True
というフラグが立つようにコーディングしています。なお、ボリンジャーバンドの意味やプログラミング概念について詳しく知りたい方はこちらの記事も併せてご覧下さい。
【Python×仮想通貨】ボリンジャーバンドを活用した自動売買
テクニカル分析を採用した仮想通貨の自動売買に興味がある方向けに、Pythonによるボリンジャーバンドを用いたリアルタイム分析手法について解説します。
ボリンジャーバンド以外のテクニカル手法を活用して仮想通貨の自動取引を実現したい方は、本記事最下部の「テクニカル分析を採用した仮想通貨取引の解説記事」をご覧下さい。buy_order
直前のコードをカスタマイズすることで、お好みのテクニカル手法が実行できるでしょう。
【実践】仮想通貨チャート分析結果をもとにビットコインを注文
前述で検知した買いサインbuy_order = True
をトリガーとして、bitFlyerでビットコインを自動注文するコードを以下に示します。
コード
コード実行で実際に注文が走ります。取り扱いには十分注意です。暗号資産(仮想通貨)取引は、元本を保証するものでなく、価格変動により損失が生じるリスクがあります。お取引される際には、取引内容をよく理解し、ご自身の判断で行ってください。
"""
********************************************************************
ビットコイン購入注文
********************************************************************
"""
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'}
【bitFlyer×Python】ボリンジャーバンド買いサイン検知・仮想通貨自動売買
最後に本日ご紹介したコードを全量以下に示します。APIキーおよびシークレットキーさえ書き換えれば簡単に動作確認できるようになっていますため、お手元にコピペしてまずは動かしてみましょう。
import ccxt
import pandas as pd
from time import sleep
import talib
# 取引所APIキー
base = ccxt.bitflyer({'apiKey':"bitFlyerのAPIキー",
'secret':"bitFlyerのシークレットキー",
})
# リアルタイムビットコイン価格
btc_price = []
# ビットコイン購入サイン
buy_order = False
while buy_order==False:
"""
********************************************************************
データ取得
********************************************************************
"""
# ビットコイン価格
ticker = base.fetch_ticker(symbol="BTC/JPY")
# ビットコイン購入価格
btc_price.append(ticker["ask"])
# ボリンジャーバンド引数情報
period = 20 # データ取得期間
bbup = 2 # upper-band:標準偏差
bbdwn = 2 # down-band:標準偏差
ma_type = 0 # 移動平均線(0:単純移動平均)
# ボリンジャーバンド指標獲得
bb_up, bb_middle, bb_down = talib.BBANDS(pd.Series(btc_price), # データ
timeperiod=period, # 標準偏差計算期間
nbdevup=bbup, # 標準偏差(σ)*bb_up
nbdevdn=bbdwn, # 標準偏差(-σ)*bb_dwn
matype=ma_type) # 移動平均の種類
"""
********************************************************************
テクニカル分析|リアルタイム移動平均線(ゴールデンクロス検知)
********************************************************************
"""
# ローバンド(-2σ)を検知
if len(btc_price)>30:
if btc_price[-1] < bb_down[len(bb_down)-1]:
# 購入サインON
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を活用した仮想通貨の自動取引 |
最後に
お問い合わせフォーム
上記課題に向けてご気軽にご相談下さい。
お問い合わせはこちら