見出し画像

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ツールを作る。



コーヒー飲みます。ありがとうございます。