こんにちは、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のサービス概要を知った上で後述の内容を読まれると理解が深まるかもしれません。
【参考】主要な仮想通貨取引所の比較情報
取引所名 | 最低取引量 | 現物取引手数料*1 | 入金手数料[円] | 入金手数料[BTC] | 出金手数料[円] | 送金手数料[BTC] | 信用取引 | API提供 | ccxt | 自動売買おすすめ |
---|---|---|---|---|---|---|---|---|---|---|
Coincheck | 0.005 BTC | 無料 | 無料 | 無料 | 407円 | 0.0005 BTC | × | ○ | ○ | ★★★★★ |
GMOコイン | 0.0001BTC | Maker:-0.01% Taker:0.05% | 無料 | 無料 | 0円/ 400円(大口出金) | 無料 | ○ | ○ | × | ★★★★☆ |
bitbank | 0.0001BTC | Maker:-0.02% Taker:0.12% | 無料 | 無料 | 550円/ 770円(3万円以上) | 0.0006 BTC | × | ○ | ○ | ★★★★☆ |
BITPOINT | 0.0001 BTC | 無料 | 無料 | 無料 | 330 円 | 無料 | × | ○ | × | ★★★☆☆ |
- 現物取引手数料の対象通貨は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}]}
暗号資産の取引経験があり、レバレッジ取引もしたい方には、BitTradeのAPIもおすすめです。
レバレッジ取引のAPI機能を活用すると、自作ツールでできることが大幅に広がります。
【Python】BitTrade APIの取得・仮想通貨の自動売買・取引の実現方法解説
「BitTrade 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 | ボリンジャーバンド | オシレータ |
Python | MACD | オシレータ |
Python | RSI | オシレータ |
Python | 時系列予測モデルの構築 | 機械学習・AI |
【オシレータ】:現在の相場に対する買われすぎ・売られすぎの判断に有効
その他仮想通貨自動トレード解説記事
対応言語 | 記事名 |
---|---|
Python | 【データ収集】仮想通貨の過去データを大量取得する方法 |
Python | 【初心者向け】ccxtを活用した仮想通貨の自動取引 |
Node.js | 【初心者向け】ccxtを活用した仮想通貨の自動取引 |
最後に
お問い合わせフォーム
上記課題に向けてご気軽にご相談下さい。
お問い合わせはこちら