【Python】bitFlyerで仮想通貨チャート分析・注文を全自動化|暗号資産取引所APIでビットコイン自動売買実践

こんにちは、DXCEL WAVEの運営者(@dxcelwave)です!

こんな方におすすめ!
  • 仮想通貨・ビットコインの自動取引に興味がある
  • PythonでbitFlyer APIを活用しチャート分析を行い、ビットコイン注文するまでを全て自動化したい
目次

暗号資産(仮想通貨)の自動取引とは

仮想通貨の自動取引とは、通貨情報参照・決済・送金等の取引関連操作をプログラムで代替すること

自動取引の実装により、手動操作による手間削減はもちろんのこと、仮想通貨収益化プロセスの効率化も大幅に期待できます。

仮想通貨自動売買の実現には「取引所が提供するAPI」の利用が必須となります。APIと聞くと、難しく感じるかもしれませんが、利用方法さえ分かれば意外と簡単に概念も理解できるはずです。本記事でAPI概要説明は割愛していますが、以下の記事で自動売買の仕組みからAPIの概要に至るまで幅広く丁寧に解説しています。

【bitFlyer】仮想通貨チャート分析からビットコイン注文を全自動化する方法

本記事では「暗号資産(仮想通貨)取引所からデータを取得し、チャート分析で買いサインを検知し、ビットコインを購入する」に至る全プロセスをPythonで自動化する方法について解説します。

今回例では、仮想通貨(暗号資産)取引所にを採用します。

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で活用できる自動取引機能を詳しく解説しております。興味がある方は併せてご覧下さい。

TA-Lib

Ta-Libはテクニカル分析に用いるPythonライブラリです。OSに合ったインストール方法を選択しましょう。

【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で実現できる仮想通貨取引機能についてさらに詳しく知りたい方はこちらの記事もご覧ください。

【実践】仮想通貨の価格情報からボリンジャーバンドでの買いサインを検知する

テクニカル分析手法は「ボリンジャーバンド」を採用しています。ビットコイン価格がボリンジャーバンド-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というフラグが立つようにコーディングしています。なお、ボリンジャーバンドの意味やプログラミング概念について詳しく知りたい方はこちらの記事も併せてご覧下さい。

ボリンジャーバンド以外のテクニカル手法を活用して仮想通貨の自動取引を実現したい方は、本記事最下部の「テクニカル分析を採用した仮想通貨取引の解説記事」をご覧下さい。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【Huobi Japan】 APIで仮想通貨取引の自動化
Python【bitbank】 APIで仮想通貨取引の自動化
Python【Coincheck】APIで仮想通貨取引の自動化
Python【bitFlyer】APIで仮想通貨取引を自動化
Python【BITPOINT】APIで仮想通貨取引の自動化

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

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

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

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

最後に

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

本記事をシェア!
目次