【Python】BITPOINT APIの使い方解説|ビットポイントでの仮想通貨・ビットコイン取引の自動化入門

当ページには広告が含まれています。

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

こんな方に向けた記事です
  • 暗号資産(仮想通貨)の自動取引に興味がある
  • Python環境でのBITPOINT APIの利用方法が知りたい
目次

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

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

システム化された自動取引ツールを作成することで、手動操作による手間削減はもちろんのこと、仮想通貨収益化プロセスの効率化にも繋がります。

自動取引ツールの実装には「取引所が提供するAPI」の利用方法をマスターする必要があります。

本記事では仮想通貨の自動取引ツール作成に挑戦してみたい方向けに、Python環境でBITPOINTのAPIを活用する方法について解説します。

なお、後述のPythonプログラムは、ビットコインを例に言及しますが、ビットコイン以外の通貨にも横展開できる内容となっております。ビットトコイン以外の自作ツールを作成したい方も必見です!

様々な仮想通貨の自動売買手法はこちらの記事で解説しています。合わせてご覧下さい。

ビットポイント(BITPOINT)取引所とは

【引用】公式

BITPOINT(ビットポイント)は、株式会社ビットポイントジャパンが運営する国内資本の暗号資産(仮想通貨)取引所です。

Webやアプリ上での取引操作の使い勝手が良く、セキュリティもしっかりしているため、国内取引所の中でも非常に評判高い取引所の1つとして位置づけられています。

BITPOINTはSMART APIを提供しており、そのAPI機能を用いることでBITPOINT上での暗号資産取引を効率的に行うことができるようになります。

本記事ではPython環境でBITPOINTのSMART APIを活用する方法について解説します。

なお、この記事はBITPOINTで実際に取引をされている方向けの内容となっておりますため、一度BITPOINTのサービス概要を知った上で後述の内容を読まれると理解が深まるかもしれません。

BITPOINTの口座開設が未済の方はこちら

【参考】主要な仮想通貨取引所の比較情報

スクロールできます
取引所名最低取引量現物取引手数料*1入金手数料[円]入金手数料[BTC]出金手数料[円]送金手数料[BTC]信用取引API提供ccxt自動売買おすすめ
0.005 BTC無料無料無料407円0.0005 BTC×★★★★★
0.0001BTCMaker:-0.01%
Taker:0.05%
無料無料0円/
400円(大口出金)
無料×★★★★☆
0.0001BTCMaker:-0.02%
Taker:0.12%
無料無料550円/
770円(3万円以上)
0.0006 BTC×★★★★☆
0.0001 BTC無料無料無料330 円無料××★★★☆☆
表:暗号資産取引所の比較表(最低取引量の単位はBTCで記載)
補足
  1. 現物取引手数料の対象通貨はBTC/JPY。手数料は約定数量 × 上記記載の割合[%]として算出可能。

BITPOINT取引所は取引手数料や入出金手数料が無料であり、最低取引数量も低く少額な取引が可能なことから、仮想通貨取引をこれから始めたい初学者の方におすすめな取引所と言えます。

【Python】BITPOINT APIの使い方解説とビットコイン自動売買実践

Python環境で次のようなBITPOINT API機能を活用する方法について言及します。

No作成する自動売買機能
1取引通貨情報の取得
2板情報の取得
3最良気配情報の取得
4直近24時間の価格情報を取得

現在Private APIの利用が制限されているため、API認証なしで使える機能を中心に解説します。

Python環境設定

事前にrequestsモジュールをインストールしておきましょう!

pip install requests

取引通貨情報の取得

BITPOINTが取り扱う暗号資産情報は下記を実行することで確認可能です。

import requests
import json

def exchange_info():
    base_url = 'https://smartapi.bitpoint.co.jp/bpj-smart-api'
    path     = "/api/exchangeInfo"
    result = requests.get(base_url+path)
    return result.json()

# 関数実行
exchange_info()
# 出力イメージ
# {'timezone': 'UTC',
#  'serverTime': 1649335579934,
#  'rateLimits': [{'rateLimitType': 'REQUEST_WEIGHT',
#    'interval': 'MINUTE',
#    'limit': 2147483647},
#   {'rateLimitType': 'ORDERS', 'interval': 'SECOND', 'limit': 2147483647},
#   {'rateLimitType': 'ORDERS', 'interval': 'DAY', 'limit': 2147483647}],
#  'exchangeFilters': [],
#  'symbols': [{'symbol': 'JMYJPY',
#    'status': 'TRADING',
#    'baseAsset': 'JMY',
#    'baseAssetPrecision': 2,
#    'quoteAsset': 'JPY',
#    'quotePrecision': 0,
#    'orderTypes': ['LIMIT', 'MARKET', 'STOP_MARKET'],
#    'icebergAllowed': False},
#   {'symbol': 'BTCJPY',
#    'status': 'TRADING',
#    'baseAsset': 'BTC',
#    'baseAssetPrecision': 4,
#    'quoteAsset': 'JPY',
#    'quotePrecision': 0,
#    'orderTypes': ['LIMIT', 'MARKET', 'STOP_MARKET'],
#    'icebergAllowed': False},
#   {'symbol': 'DEPJPY',
#    'status': 'TRADING',
#    'baseAsset': 'DEP',
#    'baseAssetPrecision': 2,
#    'quoteAsset': 'JPY',
#    'quotePrecision': 0,
#    'orderTypes': ['LIMIT', 'MARKET', 'STOP_MARKET'],
#    'icebergAllowed': False}]}

板情報の取得

板情報は、引数に通貨情報(symbol)を渡して次のように実行すると確認できます。

import requests
import json

def ita_info(symbol):
    base_url = 'https://smartapi.bitpoint.co.jp/bpj-smart-api'
    path     = '/api/depth?symbol='+symbol
    ita = requests.get(base_url+path)
    return ita.json()

# 引数情報
symbol = "BTCJPY"

# 関数実行
ita_info(symbol)
# 出力イメージ
# {'lastUpdateId': '1649335737467',
#  'bids': [{'price': '5411780.43000000', 'qty': '0.00150000', 'ignore': False},
#   {'price': '5410000.00000000', 'qty': '0.00100000', 'ignore': False},
#   {'price': '5405407.01000000', 'qty': '1.74040000', 'ignore': False},
#   {'price': '5404525.03000000', 'qty': '0.00130000', 'ignore': False},
#   {'price': '5403574.46000000', 'qty': '0.00160000', 'ignore': False}],
#  'asks': [{'price': '5424538.62000000', 'qty': '0.00280000', 'ignore': False},
#   {'price': '5424580.68000000', 'qty': '0.00260000', 'ignore': False},
#   {'price': '5424598.95000000', 'qty': '0.00470000', 'ignore': False},
#   {'price': '5424996.44000000', 'qty': '0.00120000', 'ignore': False},
#   {'price': '5425122.49000000', 'qty': '0.00290000', 'ignore': False}]}

最良気配情報の取得

最良気配情報を確認したい場合、次のように実行します。

import requests
import json

def ticker_info():
    base_url = 'https://smartapi.bitpoint.co.jp/bpj-smart-api'
    path     = '/api/ticker/bookTicker'
    result = requests.get(base_url+path)
    return result.json()

# 関数実行
ticker_info()
# 出力イメージ
# {'bookTicker': [{'symbol': 'JMYJPY',
#    'bidPrice': '3.67330000',
#    'bidQty': '28190.59000000',
#    'askPrice': '3.76630000',
#    'askQty': '71692.65000000'},
#   {'symbol': 'BTCJPY',
#    'bidPrice': '5400000.01000000',
#    'bidQty': '1.74310000',
#    'askPrice': '5417552.51000000',
#    'askQty': '0.10540000'},
#   {'symbol': 'BCHJPY',
#    'bidPrice': '41431.33000000',
#    'bidQty': '23.46310000',
#    'askPrice': '41827.88000000',
#    'askQty': '99.03990000'},
#   {'symbol': 'DEPJPY',
#    'bidPrice': '3.38190000',
#    'bidQty': '106975.04000000',
#    'askPrice': '3.47400000',
#    'askQty': '16951.82000000'}]}

直近24時間の価格情報を取得

直近24時間における仮想通貨の価格情報を確認したい場合、次のコードが有効です。

import requests
import json

def price24h():
    base_url = 'https://smartapi.bitpoint.co.jp/bpj-smart-api'
    path     = '/api/ticker/24hr'
    result = requests.get(base_url+path)
    return result.json()

# 関数実行
price24h()
# 出力イメージ
# {'statistics': [{'symbol': 'DOTJPY',
#    'priceChange': None,
#    'priceChangePercent': None,
#    'weightedAvgPrice': None,
#    'prevClosePrice': None,
#    'lastPrice': None,
#    'lastQty': None,
#    'bidPrice': '2489.32000000',
#    'askPrice': '2541.31000000',
#    'openPrice': None,
#    'highPrice': None,
#    'lowPrice': None,
#    'volume': None,
#    'openTime': None,
#    'closeTime': None,
#    'firstId': None,
#    'lastId': None,
#    'count': None},
#   {'symbol': 'BTCJPY',
#    'priceChange': '-148000.00000000',
#    'priceChangePercent': '-2.74',
#    'weightedAvgPrice': '5381268.35527075',
#    'prevClosePrice': '5550000.00000000',
#    'lastPrice': '5410000.00000000',
#    'lastQty': '0.00100000',
#    'bidPrice': '5394151.92000000',
#    'askPrice': '5412886.07000000',
#    'openPrice': '5558000.00000000',
#    'highPrice': '5558909.63000000',
#    'lowPrice': '5280800.01000000',
#    'volume': '8.73330000',
#    'openTime': '1649250155298',
#    'closeTime': '1649336213295',
#    'firstId': '2022040701900006234',
#    'lastId': '2022040801900007533',
#    'count': '314'},
#   {'symbol': 'DEPJPY',
#    'priceChange': None,
#    'priceChangePercent': None,
#    'weightedAvgPrice': None,
#    'prevClosePrice': None,
#    'lastPrice': None,
#    'lastQty': None,
#    'bidPrice': '3.39450000',
#    'askPrice': '3.48690000',
#    'openPrice': None,
#    'highPrice': None,
#    'lowPrice': None,
#    'volume': None,
#    'openTime': None,
#    'closeTime': None,
#    'firstId': None,
#    'lastId': None,
#    'count': None}]}
合わせて読みたい

暗号資産の取引経験があり、レバレッジ取引もしたい方には、のAPIもおすすめです。

レバレッジ取引のAPI機能を活用すると、自作ツールでできることが大幅に広がります。

【仮想通貨・ビットコイン】自動取引実践法・その他優良情報

最後までご覧いただきありがとうございました。当サイトでは仮想通貨・ビットコインにおける多様な自動取引手法の解説記事を多数取り扱っております。

取引所別:APIの取得手順と使い方の解説記事

スクロールできます
対応言語記事名
Python【GMOコイン】 APIで仮想通貨取引の自動化
Python【BitTrade】 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を活用した仮想通貨の自動取引

最後に

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

本記事をシェア!
目次