見出し画像

【C級botter道】6話:bitFlyerAPI接続テスト(python+Docker+jupyterlab)

前回はリピート系自動売買アルゴリズムの概要を説明いたしました。

今回からはリピート系自動売買アルゴリズムを実装するにあたり、必要な外部とのAPI連携方法に関して説明したいと思います。

必要機能

リピート系自動売買アルゴリズムを実装するにあたり、下記の二つの機能が必要です。

  1. 仮想通貨取引所とのAPI連携機能

  2. LINEとのAPI連携機能

「仮想通貨取引所とのAPI連携機能」は”取引の自動化”・”ポジションの確認”・”資産残高の確認”などで必要です。
「LINEとのAPI連携機能」は”取引結果の通知”・”現状の資産残高の通知”などで必要となります。

今回の記事では1.仮想通貨取引所とのAPI連携機能に関して説明したいと思います。

bitFlyerAPI連携

今回用いる仮想通貨取引所としてはbitFlyerを用います。
厳密にはbitFlyer Lightningという取引所のAPIを用います。
bitFlyer Lightning は、暗号資産の現物・FXに対応した取引所です。

bitFlyerアカウントの作成~bitFlyer Lightning利用開始まで

下記サイトがよくまとまっておるので、こちらを参照にアカウント作成からbitFlyer Lightningの利用準備までよろしくお願いいたします。

BitFlyer APIキー発行

まずはAPIキーの発行を行いましょう。
biFlyerにログイン後、左側のメニューにある bitFlyer Lightning をクリック。

bitFlyer Lightningにログイン後、画面左上のメニューボタンをクリック。

次に、”API”をクリック。

画面下部の”新しいAPIキーを追加”をクリック。

ラベルを入力します。

次に必要な機能にチェックを入れます。
今回は入出金以外にチェックを入れます。

APIキーの発行が完了し、”API Key”と"API Secret"が表示されていることが確認できます。

Pythonで動作テスト


先ほど作成したAPIキーとpythonを用いてbitFlierと連携できるか確認します。

インスタンス作成

まずはccxtライブラリを用いて、bitFlyerインスタンスを作成します。

import time
import pandas as pd
import ccxt

apiKey = 'あなたのAPIKey'
secret = 'あなたのSecretKey'

# bitFlyerのインスタンス作成
bitflyer = ccxt.bitflyer({'apiKey':apiKey,'secret':secret})

これで下準備はできましたので、さまざまな情報を確認していきたいと思います。

マーケット情報の確認

bitFlyerが取り扱う通貨情報は以下で確認できます。

# マーケット情報
res = bitflyer.load_markets() 

# 出力
pprint(res)


板情報の取得

板情報は下記より確認できます。引数には、通貨情報(symbol)を指定しましょう。
下記の例はsymbolをビットコイン(BTC/JPY)としていますが、他の通貨コードを指定し、お好みの暗号資産情報を確認することもできます。

# 通貨選択
symbol = "BTC/JPY"

# 板情報
res = bitflyer.fetch_ticker(symbol)

# 出力
pprint(res)

残高情報の取得

bitFlyer口座内の口座残高情報(日本円、仮想通貨)は以下で確認できます。

# 残高
res = bitflyer.fetchBalance()

# 出力
pprint(res)
BTCとXRPを保有していることがわかります

仮想通貨の注文する

仮想通貨を実際に注文するコードは次のようになります。
コード実行で実際に注文が走ります。取り扱いには十分注意です。暗号資産(仮想通貨)取引は、元本を保証するものでなく、価格変動により損失が生じるリスクがあります。お取引される際には、取引内容をよく理解し、ご自身の判断で行ってください。

現物|指値注文の場合

order = bitflyer.createLimitOrder(
                symbol = 'BTC/JPY',    # 取引通貨
                price  = 6200000,      # 指値価格
                side   = 'buy',        # 購入(buy) or 売却(sell)
                amount = 0.001,        # 購入数量[BTC]
                )
# 出力
pprint(order)

現物|成行注文の場合

order = bitflyer.createMarketOrder(
                symbol = 'BTC/JPY',    # 取引通貨
                side   = 'buy',        # 購入(buy) or 売却(sell)
                amount = 0.001,        # 購入数量[BTC]
                )
# 出力
pprint(order)

注文のキャンセル

注文のキャンセルには、注文した取引IDを引数に指定し、次のように実行します。

# 引数情報
order_id = '111111111'  # 注文ID
symbol   = 'BTC/JPY'    # 取引通過

# 取引キャンセル
res = bitflyer.cancel_order(symbol = symbol,  # 取引通貨
                            id = order_id,    # 注文ID
                           )

# 出力
pprint(res)


注文情報照会

注文中の取引情報は以下を実行することで照会できます。

# 取引通貨
symbol='BTC/JPY'

# 注文照会
res = bitflyer.fetchOpenOrders(symbol)

# 出力
pprint(res)

取引履歴

約定した取引履歴は以下で確認できます。

# 取引通貨
symbol='BTC/JPY'

# 取引履歴
res = bitflyer.fetchMyTrades(symbol)

#出力
pprint(res)

まとめ

  • bitFlyerAPIキーの発行を行なった。

  • pythonを用いてbitFlyerAPIの動作確認テストを行なった。

  • 次回はLINEとのAPI連携を行いたいと思います。

この記事が参加している募集

今日の振り返り

お金について考える

この記事が気に入ったらサポートをしてみませんか?