Python CCXTメモ
モジュール
import ccxt
pip install ccxt
API 例BitMEX
api = 'APIキー'
secret = 'secretキー'
exchange = ccxt.bitmex({'apiKey': str(api),'secret': str(secret),})
取引所を指定(API入れれば不要)
#ccxt.取引所()
exchange = ccxt.bitmex()
exchange = ccxt.binance()
exchange = ccxt.zaif()
exchange = ccxt.bitflyer()
exchange = ccxt.liquid()
#など
価格を取得
(BitMEXは別の取得方法が必要。)参照元
BitMEX last取得用の参照元(こちらは記載しません)
ticker = exchange.fetch_ticker('BTC/USD')
ask = ticker['ask']
#bid,lastなど
#BitMex用 lastは他の取得方法があります。
bid = orderbook['bids'][0][0] if len (orderbook['bids']) > 0 else None
ask = orderbook['asks'][0][0] if len (orderbook['asks']) > 0 else None
spread = (ask - bid) if (bid and ask) else None
ローソク足を取得 参照元
ローソク足の情報はfetch_ohlcv(symbol, timeframe, since, limit, params)で取得します。
引数の意味は以下のようになっています。symbol、timeframe、sinceを設定すればlimit、paramsは設定しなくてもOKです。
symbol:市場名 "BTC/USD"など
timeframe:ローソク足の単位 "1m", "5m", "1h", "1d"など
since:取得開始時刻(Unix時間[ms])
limit:取得件数 デフォルト=100, MAX=500
params:その他設定値
過去10分の1分足情報を取得する場合は以下のようにします。
import calendar
import datetime
now = datetime.datetime.utcnow() # 現在時刻(UTC)
unixTime = calendar.timegm(now.utctimetuple()) # Unix時間に変換
since = (unixTime - 60 * 1 * 10) * 1000 # 10分前のUnix時間算出→ms単位から秒に変換
ohlcvList = exchange.fetch_ohlcv('BTC/USD', timeframe = '5m',since = since) #10分前からの1分足情報を取得
for ohlcv in ohlcvList:
print(ohlcv)
#closeだけとりだすなら。
close = []
for ohlcv in ohlcvList:
close.insert(0,ohlcv[4])
print(close)
# 1m 5m 1h 1d で確認済み
#500本のローソク足が取得できる
板情報を取得
book = exchange.fetch_order_book(symbol='BTC/JPY')
注文を出す
order = exchange.create_order('BTC/USD', type='limit', side='buy', amount=1, price=6509)
order = zaif.create_order(
symbol = 'BTC/JPY',
type='limit',
side='buy',
amount='0.001',
price='650000',
params = { "product_code" : "BTC_JPY" })
注文をキャンセル
cancel = exchange.cancel_order('order_idを入れる')
cancel = exchange.cancel_order(
symbol = "BTC/JPY",
id = "order_idを入れる",
params = { "product_code" : "BTC_JPY" })
未約定の注文一覧を確認
params:(取引所によって必要な場合は指定)
※paramsの値はzaifやbitflyerなどであれば指定不要。
open_orders = exchange.fetch_open_orders()
open_orders = exchange.fetch_open_orders(
symbol = "BTC/JPY",
params = { "product_code" : "BTC_JPY" })
ポジションを取得
position = exchange.private_get_position()
口座情報を取得
balance = exchange.fetch_balance()
print("free:" + str(balance["free"]))
print("used:" + str(balance["used"]))
print("total:" + str(balance["total"]))
どんな関数が使えるかを取得(取引所ごとに違う)
print(exchange.has)
その他できるようになったこと
MAを取得 参照元
今後やろうと思っていること
MACDなどの取得
TA-Lib (テクニカル指標などの関数がまとまっているライブラリ)を使えるようにする
IFDOCOトレーリングストップのツールをtkinterでGUI化
BitMEXで使える擬似IFDOCOツールを作る。
コーヒー飲みます。ありがとうございます。