BitMEXで自動売買botを動かそう!構築の手順をPythonコードで紹介

2018年はbotトレードの黎明期といわれています。
ただ、botトレードに興味があるけど、作り方が分からない人も少なくないのではないでしょうか?

そこで、この記事ではPythonのモジュールCCXTを利用したBitMEXでの取引パーツを説明します。

なお、記事自体はPythonの基本的なコードをかける人を対象としています。

Pythonが分からない人は下記の超入門書が分かりやすいので参考にしてください。

BitMEXのBOT事情

現時点ではBitMEXはBitFlyerと比較してbotの影響はそこまで大きくないです。

BitMEXで取引している人がビットフライヤ―と比較して多いことから全体取引量に対するbotの占有率が少ないのでしょう。

また、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.2
    APIキーの取得画面に遷移
    左にあるAPIキーを取得」をクリックします。

  • STEP.3
    APIを作成
    まず、一番上の赤枠内にAPIの名前をつけます。任意の名前を入れましょう。
    つづいて、二番目の赤枠をプルダウンして注文を選択します。
    最後に2段階認証の6桁の数字を入れて、APIキーを作成」をクリックします。
  • STEP.4
    APIキーをメモする
    STEP3を終えるとAPIキーが作成されますので、忘れずにメモしておきましょう。
    忘れてしまうとAPIを最初から再発行しなければならなくなるので注意してください。

ボットの基本パーツについて

さて、いよいよbotの基本パーツについて解説していきます。
これらと売買アルゴリズムを組み合わせれば、オリジナルbotがつくれてしまいます。

パーツ1:API認証

第一のパーツはAPI認証です。
BitMEXbotをつなげるパーツが以下のコードになります。botの最初にはこのコードを必ず追加してください。

なお、追加した後は忘れずに「apikeyを入れる」と「secretを入れる」の部分に先程作成したAPIキーを入力してください。

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:口座情報の取得

第三パーツは口座情報の取得です。

保有BTC量の取得
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を学ぶ人に人気の一冊です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です