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

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

プログラミングの独学はとても難しい


プログラミングは小学校の義務教育にも導入され始めており、これから社会人として生きていく上でプログラミングはもはや出来て当たり前、出来なれば論外というエクセルレベルの必須スキルになりつつあります。そしてそういう話を聞いて参考書なりを購入して独学でプログラミング勉強しようと思っている人も少なくないでしょう。しかしプログラミングを独学で勉強し始めようと思うものの



・「分からない箇所で詰まって挫折してしまった」

・「勉強する時間が足りない」

・「ネットの記事だと情報が断片的でよくわからない」

・「コードのエラーの原因が分からない」



という壁にぶち当たって、プログラミングの勉強を止めてしまう方が少なくありません。独学でプログラミングを勉強してる時間のほとんどはつまづいている時間です。実際僕も最初のころ独学でプログラミングを勉強していた頃はエラーの原因が分からず丸1日を不意にしてしまった・・・そんな苦い経験がありました。



それで僕は一度はプログラミングの学習を諦めてしまいましたが、就活で現実を知る中で「プログラミングを勉強して、いずれフリーランスとして自由な生き方がしたい」「エンジニアとして若いうちから高収入を得たい」という気持ちから一念発起して「侍エンジニアのwebサービスコース」に申し込み、プロのエンジニアの方に対面でマンツーマンでPythonによるWebサービス作り方とWeb技術の基本を教えてもらい、ようやくプログラミングが理解でき、今ではエンジニアとしてそこそこの暮らしができるようになりました。





侍エンジニアでは、とりあえずプログラミングやインターネットの基本を知っておきたい人から、HTML・cssなどでWebサイトやWebアプリを作ってみたい人やPythonを勉強してデータサイエンティストやAIエンジニアになりたい人まで幅広いニーズに応えた様々なコースが用意されています。



IT業界と言ってもエンジニアの仕事はプログラミング言語次第でサーバーから機械学習・ディープラーニングまで多種多様ですし、侍エンジニアの無料レッスン(カウンセリング)を受けてみて、自分のやりたいITの仕事は何なのか?を見つけるのがエンジニアへの第一歩になります。ちなみに今侍エンジニアの無料レッスンを受けると1000円分のAmazonギフト券がもらえるので、試しに受けてみるだけもお得です。


自分は半端に独学やオンラインスクールで勉強して金と時間を無駄にするくらいなら、リアルのプログラミングスクールに通ってしっかりプログラミングを勉強した方がいいと思います。ちなみに今、侍エンジニアに申し込むと、25歳以下の学生の方であれば、受講料が20%OFFになるので超お得です。


そして、プログラミングは大勢で授業を受けたり漫然とオンライン学習をするよりも自分が分からない箇所をピンポイントでプロの講師に直接質問して、ちゃんと納得するというスタイルの方がお金は確かに少し掛かりますが、独学で学ぶよりも絶対にモノになります。


シェアする

  • このエントリーをはてなブックマークに追加

フォローする