FX・シストレ Python

仮想通貨取引所「Bitmex」でAPIを使った自動取引をする方法

この記事は約7分で読めます。

 

今回はBitmexで動く自動取引Botを作ったので、メモも兼ねてその作り方を纏めていきたいと思います。自動取引Botを作るうえでの大まかな流れについては以下の記事で説明しています。

 

 

 

 

今回も引き続きpythonというプログラミング言語を使ってやっていきます。

 

 

 

 

自動取引に超便利なccxtをインストールする

 

まずccxtという各取引所のAPIを関数1つで使うことのできる超便利パッケージがあるので、それを利用します。このccxtはBitmexだけではなく他の海外の仮想通貨取引所やビットフライヤーなどの国内の取引所にも対応しているので本当に助かります。

 

 

##ccxtのインストール
pip install ccxt

 

 

ちなみにライブラリをインストールする時に「error: Microsoft Visual C++ 14.0 is required.」と出てCCXTがインストールできない人の原因は、C++のビルドパッケージがインストールされていないのが原因だと思われます。その場合は↓のリンクからパッケージをインストールすれば解決すると思われます。

 

https://download.microsoft.com/download/5/F/7/5F7ACAEB-8363-451F-9425-68A90F98B238/visualcppbuildtools_full.exe

 

 

 

 

結構インストールするのに時間が掛かるのでゆっくり待ちましょう。インストールが終わったら再び 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’)

 

 

引用:http://koala-comeon.com/%E3%80%90python%E3%80%91ccxt%E3%81%A7bitmex%E3%81%AE%E8%87%AA%E5%8B%95%E5%A3%B2%E8%B2%B7bot%E3%81%B8%E3%81%AE%E9%81%93-%E5%9F%BA%E6%9C%AC%E7%B7%A8/より

 

 

実際にコードを触ってみる

 

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で自動取引する上での基本的な関数です。

 

 

 

 

 

 


プログラミング・スクレイピングツール作成の相談を受け付けています!

クラウドワークス・ココナラ・MENTAなどでPython・SQL・GASなどのプログラミングに関する相談やツール作成などを承っております!

過去の案件事例:

  • Twitter・インスタグラムの自動化ツール作成
  • ウェブサイトのスクレイピングサポート
  • ダッシュボード・サイト作成
  • データエンジニア転職相談

これまでの案件例を見る

キャリア相談もお気軽に!文系学部卒からエンジニア・データサイエンティストへの転職経験をもとに、未経験者がどう進むべきかのアドバイスを提供します。


スポンサーリンク
/* プログラミング速報関連記事一覧表示 */
ミナピピンの研究室

コメント

タイトルとURLをコピーしました