サムネがコーヒーの記事は書きかけです。

BitFliyerAPIを使用してPythonから仮想通貨の自動売買をする方法

パッケージのインストール

PIPを使用して以下のパッケージをインストールしておきます。

pip install ccxt

API KeyとSecretの取得

Bitflyerライトニングにアクセスして、以下の画面からAPIを選択します。

出てくるAPI KeyとAPI Secretをそれぞれコピーして、Pythonの変数に格納します。

API_Key = "*******"
API_AcessKey = "***********"

Pythonコード

ここからは、Pythonで情報を取ってきて取引を行うまでをやってみます。

モジュールのインポート

import ccxt
import time 
from pprint import pprint

APIを使用した自分のアカウントへの接続

BitFlyerインスタンスを生成します。

API_Key = "*******"
API_Secret = "***********"
bitflyer = ccxt.bitflyer({'apiKey':API_Key ,'secret':API_Secret})

マーケット情報の取得

market_info = bitflyer.load_markets() 
print(market_info)

通貨ペアシンボルの取得

この後で使う通貨ペアの全シンボルを取得します。

symbols = market_info.keys()
print(symbols)
>>>
dict_keys(['BTC/JPY',
 'XRP/JPY', 
'ETH/JPY', 
'XLM/JPY', 
'MONA/JPY', 
'ETH/BTC', 
'BCH/BTC', 
'BTC/USD',
 'ETH/USD',
'BTC/EUR', 
'ETH/EUR', 
'BTC/JPY:JPY',
 'BTC/JPY:JPY-230804',
 'BTC/JPY:JPY-230811', 
'BTC/JPY:JPY-230929'])

通貨情報の取得

通貨ペアを指定して、通貨の情報を取得します。ここではステラルーメン(XLM/JPY)についてみていきます。

symbol = "XLM/JPY"
XLM = bitflyer.fetch_ticker(symbol)
print(XLM)
>>>
{'symbol': 'XLM/JPY', 'timestamp': 1690727555533, 'datetime': '2023-07-30T14:32:35.533Z', 'high': None, 'low': None, 'bid': 22.362, 'bidVolume': None, 'ask': 22.435, 'askVolume': None, 'vwap': None, 'open': None, 'close': 22.392, 'last': 22.392, 'previousClose': None, 'change': None, 'percentage': None, 'average': None, 'baseVolume': 1315308.3023683, 'quoteVolume': None, 'info': {'product_code': 'XLM_JPY', 'state': 'RUNNING', 'timestamp': '2023-07-30T14:32:35.533', 'tick_id': '11745106', 'best_bid': '22.362', 'best_ask': '22.435', 'best_bid_size': '669.46', 'best_ask_size': '3847.4840962', 'total_bid_depth': '2014576.9771738', 'total_ask_depth': '1399888.2058747', 'market_bid_size': '0.0', 'market_ask_size': '0.0', 'ltp': '22.392', 'volume': '1315308.3023683', 'volume_by_product': '1315308.3023683'}}

返り値として辞書型が返されるので、キーを使用して各値にアクセスします。

例えば,bid,askを拾ってくる場合は以下のようにします。

XLM_ask, XLM_bid = XLM["ask"], XLM["bid"]
print(XLM_ask,XLM_bid)
>>>
22.367 22.343

日本円残高の取得

以下のようにして、日本円の残高を取得できます。

BALANCE_JPY = bitflyer.fetch_balance()["info"][0]["available"]

成行注文(買い)

この関数が実行されると、注文確定となるので注意してください。

def buy(amount: float,symbol: str) -> None:
    order_buy = bitflyer.create_market_order(
                    symbol = symbol,   
                    side   = 'buy',        
                    amount = amount,       
                    )
    pprint(order_buy)

例えば、10 XLMを買う場合、以下のようにします。

buy(10, "XLM/JPY")

成行注文 (売り)

この関数が実行されると、注文確定となるので注意してください。

def sell(amount: float, symbol: str) -> None:
    order_buy = bitflyer.create_market_order(
                    symbol = symbol,   
                    side   = 'sell',        
                    amount = amount,       
                    )
    pprint(order_buy)

例えば、10XLMを売る場合、以下のようにします。

sell(10, "XLM/JPY")

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です