今回はBitmexで動く自動取引Botを作ったので、メモも兼ねてその作り方を纏めていきたいと思います。自動取引Botを作るうえでの大まかな流れについては以下の記事で説明しています。
今回も引き続きpythonというプログラミング言語を使ってやっていきます。
自動取引に超便利なccxtをインストールする
まずccxtという各取引所のAPIを関数1つで使うことのできる超便利パッケージがあるので、それを利用します。このccxtはBitmexだけではなく他の海外の仮想通貨取引所やビットフライヤーなどの国内の取引所にも対応しているので本当に助かります。
##ccxtのインストール pip install ccxt
ちなみにライブラリをインストールする時に「error: Microsoft Visual C++ 14.0 is required.」と出てCCXTがインストールできない人の原因は、C++のビルドパッケージがインストールされていないのが原因だと思われます。その場合は↓のリンクからパッケージをインストールすれば解決すると思われます。
結構インストールするのに時間が掛かるのでゆっくり待ちましょう。インストールが終わったら再び pip install ccxt でccxtをインストールしてみてください。ちなみにpythonの高度なライブラリは後ろでC++が動いていることがあり、このC++のビルドパッケージがないとインストールできないことがあります。機械学習・深層学習で使うTensorflowなどがインストールできない原因もこいつにある人がほとんどだと思います。
ccxtをインポートして関数を読み込む
ccxtのインストールを終わったらj、upyter notebookなりIDLEなりの作業環境にライブラリをインストールします。
##ccxtのインポート import ccxt print(ccxt.exchanges)
各取引所のAPIの関数を使用するためには、関数を使ってインスタンスを定義する必要があります。(クラスとインスタンスと関数についてはどのpythonの入門書でも最後らへんに書いてあります。)
例えばBotでお馴染みのビットフライヤーなら以下の様に宣言します。
bf = ccxt.bitflyer({ 'apiKey': 'APIキー', 'secret': 'APIシークレット' })
今回はBitmexなので以下の様に宣言します。
##関数の有効化
exchange = ccxt.bitmex()
##公開鍵と秘密鍵をセットする
exchanges = {
“bitmex”: {
“apiKey”: ‘公開鍵’,
“secret”:’秘密鍵’
},
}
exchange.apiKey = exchanges[“bitmex”][“apiKey”]
exchange.secret = exchanges[“bitmex”][“secret”]
##新規注文の作成
result = exchange.create_order(symbol=’BTC/USD’, type=’limit’, side=’buy’, amount=1, price=6509)
print(result)#Tickerの取得
ticker = exchange.fetch_ticker(‘BTC/USD’)#口座情報の取得
balance = exchange.fetch_balance()#ポジションの取得
position = exchange.private_get_position()#注文の取得
open_orders = exchange.fetch_open_orders()#注文のキャンセル
cancel = exchange.cancel_order(‘orderID’)
実際にコードを触ってみる
tickerとは要するに価格データのことです。
#Tickerの取得 ticker = exchange.fetch_ticker('BTC/USD')
そして、Bitmexの自分の口座の口座残高を取得します。
##口座情報の取得 balance = exchange.fetch_balance() balance
実行すると自分の場合は↓のような感じになります。freeは自分の利用可能残高です。0.02187BTCなので、1BTC=70マンとすると14000円くらいあるということになります。totalは合計残高でused … 合計残高(total)から使用可能な残高(free)を引いたものです。
次に新規注文出してみます。
##新規注文の作成 result = exchange.create_order(symbol='BTC/USD', type='market', side='buy', amount=1) print(result)
symbol: 通貨ペア
type: 指値ならlimit、成行ならmarket
side: 買い注文(ask):buy、売り注文(bid):sell
amount: 枚数
price: 価格
params: 取引所用パラメータ
注文を出したらポジションを確認します。
#ポジションの取得 position = exchange.private_get_position()
以上がBitmexで自動取引する上での基本的な関数です。
コメント