2018年はbotトレードの黎明期といわれています。
ただ、botトレードに興味があるけど、作り方が分からない人も少なくないのではないでしょうか?
そこで、この記事ではPythonのモジュールCCXTを利用したBitMEXでの取引パーツを説明します。
なお、記事自体はPythonの基本的なコードをかける人を対象としています。
Pythonが分からない人は下記の超入門書が分かりやすいので参考にしてください。
退屈なことはPythonにやらせよう―ノンプログラマーにもできる自動化処理プログラミング
目次
BitMEXのBOT事情
現時点ではBitMEXはBitFlyerと比較してbotの影響はそこまで大きくないです。
BitMEXで取引している人がビットフライヤ―と比較して多いことから全体取引量に対するbotの占有率が少ないのでしょう。
BitMEXでのIP-Ban事象。MEXサポートの渡辺様にエンジニアの方につないでいただきました。Ban条件・注意点は下記の通り。MEXとの良好な関係づくり・健全なトレード環境を実現するためにも、bot開発者の方はこの情報を参考に、極力MEX側に負荷をかけないようなbot作りを徹底していただけると助かります。 pic.twitter.com/KsXfSneaEL
また、BitMEXはサーバーに負荷をかけるbotをブロックします。
つまり注文しすぎるbotはBitMEXでは強制停止になってしまいます。
そのうえ、BitMEXでは成行で注文すると、手数料がかかります。
指値で注文するbotが必要になることからmmbotなど超短期スキャルピングbotでは利益を出すのが難しいのもbotを利用する人が少ない一因といえるでしょう。
ただ、サーバーが不安定になりがちなBitFlyerより、サーバーが安定しているBitMEXでbotを動かしたいという人もいるのではないでしょうか。
そこで、今回はBitMEXで取引手数料をとられないように注文するための基本パーツを説明します。
CCXTのインストール
CCXTというのは、botトレードになくてはならない仮想通貨取引所のAPIをまとめたモジュールです。
モジュールざっくりいうとアプリのようなもの。一定の処理をするプログラムを簡単なコードで実行することができるようになる。
ちなみにAPIとは簡単にいうと、アプリケーション同士の橋渡しをするものです。
botを作る時はAPIを活用して、botと取引所をつなげます。
ただ、面倒なことにAPIの仕様って各取引所ごとに違うんです。取引所ごとにモジュールをインストールするのは非常に手間ですよね。
そこで出てきたのがCCXTです。
CCXTをインストールすれば、違う取引所のbotを作りたいというタイミングでモジュールをいちいちインストールしなくていいので、bot作成者御用達のモジュールになっています。
インストールの方法は簡単です。
最初にターミナルでモジュールをインストールしてください。
下記コードをコピー・アンド・ペーストして、エンターボタンをポチッと押せばインストールされます。
sudo pip install ccxt
APIキーを取得する
- STEP.1アカウントをクリック左上にある「アカウント」をクリックします。
- STEP.2APIキーの取得画面に遷移左にある「APIキーを取得」をクリックします。
- STEP.3APIを作成まず、一番上の赤枠内にAPIの名前をつけます。任意の名前を入れましょう。
つづいて、二番目の赤枠をプルダウンして注文を選択します。
最後に2段階認証の6桁の数字を入れて、「APIキーを作成」をクリックします。 - STEP.4APIキーをメモするSTEP3を終えるとAPIキーが作成されますので、忘れずにメモしておきましょう。
忘れてしまうとAPIを最初から再発行しなければならなくなるので注意してください。
ボットの基本パーツについて
さて、いよいよbotの基本パーツについて解説していきます。
これらと売買アルゴリズムを組み合わせれば、オリジナルbotがつくれてしまいます。
パーツ1:API認証
第一のパーツはAPI認証です。
BitMEXとbotをつなげるパーツが以下のコードになります。botの最初にはこのコードを必ず追加してください。
なお、追加した後は忘れずに「apikeyを入れる」と「secretを入れる」の部分に先程作成したAPIキーを入力してください。
import requests
import ccxt
import time
bitmex = ccxt.bitmex({
'apiKey': 'apikeyを入れる',
'secret': 'secretを入れる',
})
パーツ2:パラメーター指定
第二のパーツはどんな注文をするか決めるパーツです。
パラメータは4つです。
・どの通貨を購入するか
・どれくらいの枚数を注文するのか
・最終取引価格とどれだけ離れた価格で注文するか
・どれくらいで損切りするか
まずはpair=の後に購入したい通貨ペアについて記入していきます。
今回はビットコインを購入するとして”BTC/USD”と記載します。
続いて、LOT = の後に購入させたい量を追加します。
今回の購入させたい量というのは一回の注文ごとにどれだけの枚数を注文させるのかを設定します。この際にBitMEXで注文できる最小量である0.00001以上となるように注意しましょう。
pair = "BTC/USD"
LOT = 注文したい枚数
DELTA = 現在価格といくら離すか
trigger = 損切り設定
DELTAには現在価格よりもどれだけ離して注文するかを入力しましょう。triggerにはどれだけ価格が予想外の方向に動いたら損切りするかを設定します。つまり、売りのときは注文価格より何円高くなったら、買いのときは注文価格より何円下がったら損切りを行うかを設定します。
なお、DELTAとtriggerは0.5単位で入力しましょう。BitMEXの仕様上、23.1など0.5の倍数でないとエラーが発生します。
パーツ3:口座情報の取得
第三パーツは口座情報の取得です。
total_btc = bitmex.fetch_balance()['BTC']['total']
取引するのになぜ口座情報がいるのかと思われるかもしれませんが、めちゃくちゃ重要です。
もし口座情報を取得しないと、botは残高があろうかなかろうか注文をします。つまり、サーバーに無意味な注文をして、サーバーに負荷をかけているわけです。
先程述べたように、BitMEXはサーバーに無意味な負荷をかけるbotをブロックします。
ブロックされないように、口座情報を取得してから注文しましょう。
パーツ4:最終取引価格の取得
第四のパーツは最終取引価格を取得するパーツです。
このパーツで注文する価格の基準が決定されます。
def lastprice(pair):
value = bitmex.fetch_ticker(pair)['last']
return value
これで一番最近取引された価格がわかります。
パーツ4:注文
いよいよ注文のパーツです。
今回はBitMEXのサーバーに負荷をかけすぎないように3回エラーを起こしたら、注文をしない仕様にしています。
また、BitMEXの取引手数料を払わなくていいよう、指値注文になるように設定しています。
def order_stop_limit(side)
last_price = lastprice()
if bitmex.fetch_balance()['BTC']['total'] >LOT:
error_times = 0
try:
if side == 'buy':
trigger_price = last_price - trigger
price = last_price + DELTA
if side == 'sell':
trigger_price = last_price + trigger
price = last_price- DELTA
params = {
'stopPx': trigger_price,
'execInst': 'ParticipateDoNotInitiate,LastPrice',
}
value = bitmex.create_order('BTC/USD', type='StopLimit', side=side, amount=size, price=price, params=params)
except Exception as e:
print (e)
error_times = error_times + 1
if error_times == 3:
value =0
break
else:
print('残高が足りません。')
return value
上記をプログラムに組み込みましょう。
すると、
購入する時はorder_stop_limit(“buy”)
売却する時はorder_stop_limit(“sell”)
とプログラムすれば、注文できます。
botで大事なのはアルゴリズム
以上の基本パーツを組み合わせれば、簡単なbotを作成することができます。
ただ、botで最も重要なことは売買を行う上でのアルゴリズムです。
どんな条件の時に買い、どんな条件の時に売るかのアルゴリズムの良し悪しでbotの良し悪しが決まります。
BitMEXで動かすのであれば、
短期的な取引を繰り返すよりも、
トレンドに合わせて利幅とるアルゴリズム
がオススメです。
どんなアルゴリズムにするかはTradingViewを使ってシミュレーションをしてみてください。
シミュレーションを行わずに取引を行うと、まず失敗します。シミュレーションを行うことで勝率の高いアルゴリズムを組むことができ、資産を溶かすことから避けられます。
下記の記事でTradingViewを使ったシミュレーション方法について解説しているので参考にしてみてください。
【Bot作成者向け】トレーディングビューでのシミュレーション
また、アルゴリズムを記載する際には最低限のプログラミング技術が必要です。
この記事はプログラミングのスキルが一定以上の人向けに解説しましたが、プログラムを学んででもbotをつくりたいという方には下記の本をオススメします。
計算ドリルのように少しずつ役に立つプログラムをつくりながら学べるので、初めてPythonを学ぶ人に人気の一冊です。
退屈なことはPythonにやらせよう―ノンプログラマーにもできる自動化処理プログラミング
コメントを残す