CryptocurrencyPython

【Python|ccxt】bitbank(ビットバンク)でビットコイン自動取引ツールの作成方法【準備編】

Cryptocurrency

どうも、月見(@Suzuka14144156)です。

解決するお悩み
  • ビットコイン自動取引したいけどやり方がわからない
  • 簡単な方法で、自動取引したいけど、やり方がわからない
  • プログラミングが苦手

ビットコイン自動取引ツールの概要

暗号資産取引所から、APIを使って、データを取得し、注文をします。

ビットコイン自動取引ツールの作成方法 ~準備~

bitbankの口座開設

今回の記事では、bitbankの口座開設の必要があります。

もし、口座をお持ちでない方は、口座開設ください。

Pythonの準備

そもそもPythonをインストールできていない方は、以下の記事を参考にしてまずは、インストールください。

ccxtのインストール

  • 「検索」から「コマンドプロンプト」起動

コマンドプロンプトにて、以下を入力し、エンターを押す。

pip install ccxt

Successfully installed ccxt-2.1.25 cryptography-38.0.3 setuptools-65.5.1と表示されればインストール成功です。

インスタンス化

取引所に接続して取引を開始するには、ccxt ライブラリから取引所クラスをインスタンス化する必要があります。

import ccxt
print (ccxt.exchanges)

これを実行すると、様々な取引所の名前が表示されるはず。

これができていれば、これまでの環境設定が上手くいっている証拠です。

bitbankでビットコイン自動取引ツールの作成方法

bitbankからAPIキーを取得

  • 「人間」のマークをクリック
  • 「API」をクリック
  • 「APIキーの発行」をクリック
  • 必要項目を入力し、「確認する」をクリック

  • アクセスキーとシークレットアクセスキーが発行されます

シークレットアクセスキーは他人に教えないように!

パブリックキーでの情報取得

まずは、市場の情報の取得方法を解説します。

import ccxt
from datetime import datetime
import calendar
bb = ccxt.bitbank()
#マーケット情報
markets = bb.load_markets() 
print(markets)
print('-'*100)
#板情報
ticker = bb.fetch_ticker(symbol='BTC/JPY')
print(ticker)
print('-'*100)
#注文量
orderbook = bb.fetchOrderBook(symbol="BTC/JPY")
print(orderbook)
print('-'*100)
#ローソク足
datenow = datetime.utcnow()
unixtime = calendar.timegm(datenow.utctimetuple())
#60分前の情報を取得
minute = 60
since = (unixtime - 60 * minute) * 1000
candles = bb.fetch_ohlcv(symbol='BTC/JPY',     # 暗号資産[通貨]
                           timeframe = '1h',    # 時間足('1m', '5m', '1h', '1d')
                           since=since,          # 取得開始時刻(Unix Timeミリ秒)
                           limit=None,           # 取得件数(デフォルト:100、最大:500)
                           params={}             # 各種パラメータ
                          )
print(candles)
print('-'*100)

#マーケット情報

市場で扱っている銘柄を取得できます。

以下コードを実行して得られるビットコインの情報です。

{‘BTC/JPY’: {‘id’: ‘btc_jpy’, ‘symbol’: ‘BTC/JPY’, ‘base’: ‘BTC’, ‘quote’: ‘JPY’, ‘baseId’: ‘btc’, ‘quoteId’: ‘jpy’, ‘active’: True, ‘type’: ‘spot’, ‘linear’: None, ‘inverse’: None, ‘spot’: True, ‘swap’: False, ‘future’: False, ‘option’: False, ‘margin’: False, ‘contract’: False, ‘contractSize’: None, ‘expiry’: None, ‘expiryDatetime’: None, ‘optionType’: None, ‘strike’: None, ‘settle’: None, ‘settleId’: None, ‘precision’: {‘amount’: 0.0001, ‘price’: 1.0}, ‘limits’: {‘amount’: {‘min’: 0.0001, ‘max’: 1000.0}, ‘price’: {‘min’: None, ‘max’: None}, ‘cost’: {‘min’: None, ‘max’: None}, ‘leverage’: {‘min’: None, ‘max’: None}}, ‘info’: {‘name’: ‘btc_jpy’, ‘base_asset’: ‘btc’, ‘quote_asset’: ‘jpy’, ‘maker_fee_rate_base’: ‘0’, ‘taker_fee_rate_base’: ‘0’, ‘maker_fee_rate_quote’: ‘-0.0002’, ‘taker_fee_rate_quote’: ‘0.0012’, ‘unit_amount’: ‘0.0001’, ‘limit_max_amount’: ‘1000’, ‘market_max_amount’: ’10’, ‘market_allowance_rate’: ‘0.2’, ‘price_digits’: ‘0’, ‘amount_digits’: ‘4’, ‘is_enabled’: True, ‘stop_order’: False, ‘stop_order_and_cancel’: False}, ‘percentage’: True, ‘taker’: 0.0012, ‘maker’: -0.0002}

#板情報

例では、BTCのいた情報を取得しています。

btcの価格などのいた情報を取得できます。

{‘symbol’: ‘BTC/JPY’, ‘timestamp’: 1667658270469, ‘datetime’: ‘2022-11-05T14:24:30.469Z’, ‘high’: 3146615.0, ‘low’: 3044075.0, ‘bid’: 3120000.0, ‘bidVolume’: None, ‘ask’: 3120001.0, ‘askVolume’: None, ‘vwap’: None, ‘open’: None, ‘close’: 3120000.0, ‘last’: 3120000.0, ‘previousClose’: None, ‘change’: None, ‘percentage’: None, ‘average’: None, ‘baseVolume’: 270.8276, ‘quoteVolume’: None, ‘info’: {‘sell’: ‘3120001’, ‘buy’: ‘3120000’, ‘open’: ‘3101831’, ‘high’: ‘3146615’, ‘low’: ‘3044075’, ‘last’: ‘3120000’, ‘vol’: ‘270.8276’, ‘timestamp’: ‘1667658270469’}}

#注文量

以下に示すように注文量を取得できます。

{‘symbol’: ‘BTC/JPY’, ‘bids’: [[3142606.0, 0.02], [3142444.0, 0.06107], ・・・

#ローソク足

  • UTC timestamp
  • Open(開始値)
  • High(最高値)
  • Low(最安値)
  • Close(終値)
  • Volume(出来高)

を以下のように取得できます。

[[1667617200000, 3142082.0, 3143322.0, 3142082.0, 3142644.0, 0.27468778]]

なので、ローソク足は、binanceを使うなどほかの取引所からとってきた方がよさそう。

プライベートキーでの情報取得と注文方法

プライベートキーを使うときは、以下が必要となります。

  • アクセスキーとシークレットアクセスキーをコピーペーストして、貼り付けること
  • 貼り付け箇所は、以下のコードの’アクセスキーを入力’と ‘シークレットキーを入力’です

口座残高の取得

import ccxt
from datetime import datetime
import calendar
bb = ccxt.bitbank({
    'apiKey': 'アクセスキーを入力',
    'secret': 'シークレットキーを入力',
})
balance = cc.fetch_balance()

注文

#注文
order = bb.create_order(
                symbol = 'BTC/JPY',    #通貨
                type   = 'limit',      #注文方法:market(成行)、limit(指値)
                price  = 3000000,      #指値の場合価格を指定
                side   = 'buy',        #購入(buy) or 売却(sell)
                amount = 0.005,        #購入数量[BTC]
                )
print(order)

注文のキャンセル

#注文した際のIDの入力
order_id = 'idを入力'
cancel_order = bb.cancel_order(
                symbol = "BTC/JPY",
                id = order_id,)
#出力
print(cancel_order)

注文の確認

注文内容の照会は、下記のように通貨レートを引数で渡すことで取得できます。

open_order = bb.fetch_open_orders(symbol = 'BTC/JPY')
print(open_order)

約定の確認

約定後の取引内容の取得は、通貨レートを引数で渡して下記のように実行します。

trades = bb.fetch_my_trades(symbol = 'BTC/JPY')
print(trades)

まとめ

bitbankでビットコイン自動取引ツールの作成方法について解説しました。

Pythonでcctxというライブライを使う方法が様々な取引所に対応できてオススメです。

今回の記事は、以上です。

最後までお読みいただきありがとうございました。

次の記事は、こちらで、実際に自動取引を実装した内容になります。

コメント

タイトルとURLをコピーしました