QUOINEXのAPIから現在値とかポジションとか取得する Pythonコード
8/23の12時、QUOINEXは『建玉時のポジション料を無くす』ルール変更を行います。
QUOINEXはレバレッジ25倍で両建て取引が可能なので、BitFlyerFX(以下、BF)から多くのユーザーが流れるかもしれないと、ツイッターでは騒がれています。私自身も眠っていたアカウントを起動し準備を始めました。
さて、QUOINEXもBF同様にAPIを提供してくれているので、botでのトレード作成が可能です。『QUOINEX API』で検索しても、公式APIサイトくらいだけだったので、個人的な備忘録としてまとめときました。
(参考:https://www.quoine.com/api/?lang=ja)
QUINEX API コード 最終約定価格とBestAsk BestBid
import json
import requests
import datetime
import time
def get_product():
while True:
try:
response = requests.get('https://api.quoine.com/products/5/')
res = response.json()
best_ask = res["market_ask"]
best_bid = res["market_bid"]
ltp = res["last_traded_price"]
loc = datetime.datetime.fromtimestamp(time.time())
print("{} ltp:{} best_ask:{} best_bid{}".format(loc,ltp,best_ask,best_bid))
break
except:
print("QuoinexのAPIでエラー発生")
print("注文の通信が失敗しました。3秒後に再トライします")
time.sleep(3)
if __name__ == '__main__':
while True:
get_product()
time.sleep(1)
# 終わらせるのは ctrl + C
結果はこんな感じで返ってきます。
2018-08-22 22:14:01.128426 ltp:734765.14045 best_ask:734781.0 best_bid734589.13
2018-08-22 22:14:02.256791 ltp:734765.14045 best_ask:734765.14045 best_bid734620.23
2018-08-22 22:14:03.440142 ltp:734765.14045 best_ask:734763.12045 best_bid734616.0
2018-08-22 22:14:04.552483 ltp:734763.12045 best_ask:734765.14045 best_bid734763.72
2018-08-22 22:14:05.694827 ltp:734763.12045 best_ask:734765.14045 best_bid734732.25
2018-08-22 22:14:06.836205 ltp:734763.12045 best_ask:734765.14045 best_bid734727.48
2018-08-22 22:14:09.827471 ltp:734765.0 best_ask:734765.14045 best_bid734763.42
https://api.quoine.com/products/5/
数字が通貨ペアを表しており、1ならBTCUSD、5ならBTCJPYです。
板情報
response = requests.get('https://api.quoine.com/products/5/price_levels')
数字が通貨ペアを表しており、1ならBTCUSD、5ならBTCJPYです
{'buy_price_levels':
[
['735542.00005', '0.21012625'],
['735486.66000', '0.29760000'],
['735484.68330', '0.00415459'],
['735483.74400', '0.04000346'],
['735446.20630', '0.02000000'],
['735384.40870', '0.04001255'],
['735349.66000', '0.50690000'],
['735349.64500', '0.02000000'],
['735333.00000', '0.01000000'],
['735315.37000', '0.00500000'],
['735154.00000', '1.71200000'],
['735153.16000', '0.01000000'],
['735123.15261', '0.11796504'],
['735112.41090', '0.04001917'],
['735086.64880', '0.35700000'],
['735084.25500', '0.01100000'],
['735043.65711', '0.13000100'],
['735042.03000', '0.01000000'],
['735012.04000', '0.12500000'],
['735012.03000', '0.04001028'],
['735010.03000', '0.00510344']
],
'sell_price_levels':
[
['735547.37500', '0.04000000'],
['735549.37500', '0.02000000'],
['735596.00000', '0.04000000'],
['735598.00000', '0.01000000'],
['735610.00000', '0.01000000'],
['735611.09000', '0.02000000'],
['735625.29000', '0.02000295'],
['735654.42000', '0.09650000'],
['735701.00000', '0.01000000'],
['735716.00000', '0.61000039'],
['735716.74000', '0.04000000'],
['735717.05000', '0.00500000'],
['735731.27000', '0.02699223'],
['735733.27000', '0.02000360'],
['735764.00000', '1.00000013'],
['735764.51500', '0.02000000'],
['735807.00000', '0.05000000'],
['735829.15890', '0.02000299'],
['735842.71000', '0.04000000'],
['735845.00000', '0.01000000'],
['735869.29890', '0.02000725']
]}
まとめて過去データ取得
import json
import datetime
import time
import requests
from pprint import pprint
def get_product():
while True:
try:
response = requests.get('https://api.quoine.com/executions?product_id=5&limit=100')
res = response.json()
pprint(res, width=40)
break
except:
pprint("QuoinexのAPIでエラー発生")
pprint("注文の通信が失敗しました。3秒後に再トライします")
time.sleep(3)
if __name__ == '__main__':
get_product()
product_idが通貨ペア名。5番がBTCJPY。
limitは取得数。最大は1000。デフォルトは20。
{'current_page': 1,
'models': [{'created_at': 1534946754,
'id': 50753420,
'price': 735080.31,
'quantity': 0.076,
'taker_side': 'buy'},
{'created_at': 1534946752,
'id': 50753419,
'price': 735080.31,
'quantity': 0.04,
'taker_side': 'buy'},・・・・
これで歩み値を取得できる。created_atがtimestampなので、datetime使って時間表示にすれば、独自のOHLCを作成することも出来る。
ポジション情報の取得
まずはAPIトークンを手に入れる。
パソコン画面の右上の『三』マークを開く。
下から二つ目のトークン開く。
APIトークンを新規作成する。
取引口座の書き込みは、API乗っ取られたときに怖いのでチェックせず。
ccxtを使う
PythonからBFにオーダーを出す場合、pybitflyerってモジュールのほかにccxtってモジュールがあります。このccxtはBF以外にもQUOINEXにも対応している便利な奴です。
私は好き好んで使っています。
pip install ccxt
で、とりあえずインストールします。
import ccxt
from pprint import pprint
quoinex = ccxt.quoinex()
pprint(quoinex.has)
このコードを実行すると、ccxtを使ってできることが一覧で表示されます。
{'CORS': False,
'cancelOrder': True,
'cancelOrders': False,
'createDepositAddress': False,
'createLimitOrder': True,
'createMarketOrder': True,
'createOrder': True,
'deposit': False,
'editOrder': 'emulated',
'fetchBalance': True,
'fetchClosedOrders': True,
'fetchCurrencies': False,
'fetchDepositAddress': False,
'fetchFundingFees': False,
'fetchL2OrderBook': True,
'fetchMarkets': True,
'fetchMyTrades': True,
'fetchOHLCV': 'emulated',
'fetchOpenOrders': True,
'fetchOrder': True,
'fetchOrderBook': True,
'fetchOrderBooks': False,
'fetchOrders': True,
'fetchTicker': True,
'fetchTickers': True,
'fetchTrades': True,
'fetchTradingFees': False,
'fetchTradingLimits': False,
'privateAPI': True,
'publicAPI': True,
'withdraw': False}
主な内容
出来ること:キャンセルオーダー、リミットオーダー、成行オーダー、有効残高、クローズオーダー、注文情報取得、ティッカー情報取得などなど
from pprint import pprint
import config_quoine
import ccxt
quoinex = ccxt.quoinex()
quoinex.apiKey = config_quoine.QUOINE_KEY
quoinex.secret = config_quoine.QUOINE_SECRET
pprint(quoinex.fetch_ticker("BTC/JPY"))
config_quoineにはトークンIDとトークンキーを入れて保存しておく。
# config_quoine.pyとして保存しておく
QUOINE_KEY = '******'
QUOINE_SECRET = '*********'
上記のfetch部分をいろいろ変えることで、情報が得られる。
{'ask': 733455.0,
'askVolume': None,
'average': 721222.3400000001,
'baseVolume': 24800.87016288,
'bid': 733281.48,
'bidVolume': None,
'change': 24459.31999999995,
'close': 733452.0,
'datetime': '2018-08-22T15:04:43.867Z',
'high': 762631.31259,
'info': {'base_currency': 'BTC',
'btc_minimum_withdraw': None,
'code': 'CASH',
'currency': 'JPY',
'currency_pair_code': 'BTCJPY',
'disabled': False,
'exchange_rate': '0.009055899982664689122784223',
'fiat_minimum_withdraw': None,
'high_market_ask': '762631.31259',
'id': '5',
'indicator': 1,
'last_price_24h': '708992.68',
'last_traded_price': '733452.0',
'last_traded_quantity': '0.15008295',
'low_market_bid': '704000.0',
'maker_fee': '0.0',
'market_ask': '733455.0',
'market_bid': '733281.48',
'name': ' CASH Trading',
'product_type': 'CurrencyPair',
'pusher_channel': 'product_cash_btcjpy_5',
'quoted_currency': 'JPY',
'symbol': '¥',
'taker_fee': '0.0',
'volume_24h': '24800.870162879999999928'},
'last': 733452.0,
'low': 704000.0,
'open': 708992.68,
'percentage': 3.449869186237571,
'previousClose': None,
'quoteVolume': None,
'symbol': 'BTC/JPY',
'timestamp': 1534950283867,
'vwap': None}
上記のコードを叩いた結果はこんな感じ。
createorderすれば、注文も可能。
自動注文のコードはまた書いて紹介します。
追記:ポジション情報取得コード
from pprint import pprint
import config_quoine
import ccxt
quoinex = ccxt.quoinex()
quoinex.apiKey = config_quoine.QUOINE_KEY
quoinex.secret = config_quoine.QUOINE_SECRET
pprint(quoinex.fetch_orders())
注文中情報の取得コード
from pprint import pprint
import config_quoine
import ccxt
quoinex = ccxt.quoinex()
quoinex.apiKey = config_quoine.QUOINE_KEY
quoinex.secret = config_quoine.QUOINE_SECRET
pprint(quoinex.fetch_open_orders())