いますぐ本番運用できるBitMEX向け自動売買システム(BitMEX-iNaGo-bot)の基本プログラムを公開
前置き
はじめまして
iNaGoBotTrader 通称イナトレという者です。本業はウェブ業界でかれこれ 20 年以上エンジニアとしてプログラムを書き続けているサラリーマンです。2017年6月に仮想通貨投資を開始。開始直後に一度目の大暴落を経験するも追加資産を投じて生きながらえ、その後は市場の流れに乗って景気良く資産を伸ばすも、2018年1月に二度目の大暴落を経験し、資産が一気に減りました。納税分は抜いてたので、なんとか生き延びています。
そんな私の投資スタイルは、基本的に未来が明るいと信じている仮想通貨を大量にガチホするスタイルに加えて、ビットコインFXで自動売買プログラム(bot)を使って少額ロットで小銭を稼ぐスタイルです。
※今までもこれからも基本的に資産額は非公開を貫きますのでご了承ください。
いまいまでは仮想通貨市場もめっきり冷え込み、賑わっていた昨年末と比較すると取引高は1/4になってしまいましたが、まだまだ未来は明るいと信じています。信じられる状況の間はこの界隈に居続けていることかと思います。
無料パートの目次
・今回 BitMEX 向けの bot を公開しようと思ったきっかけ
・自動売買システム 【bitmex-inago-bot】について
・本プログラムの価格
・動作環境
・有料パートで公開されるプログラムファイル
・プログラムの骨子を事前に公開
・プログラムの大まかな流れについて
・注意事項
今回 BitMEX 向けの bot を公開しようと思ったきっかけ
昨今 bot を使った自動売買関連の話題が Twitter などでも注目度が急上昇しています。ここはいっちょ自分の強みを活かしつつその流れに乗ろうと思ったのが一番のきっかけ。加えて別件の目的があり BitMEX で本格的に自動売買するための bot を新たに開発しました。今までは CoinCheck をメイン市場で戦ってきたのですが、例の GOX で一端 bot 稼働も停止したままなので、ちょうど良い機会でもありました。
せっかく bot を開発するなら、きっと需要は高いはずと考え、Note で公開することを前提としたシンプルな構成で開発しようと決めました。
自動売買システム 【bitmex-inago-bot】について
今回公開するプログラムは BitMEX で API キーを取得いただき、必要な環境整備を行って頂ければ、即座に bot を稼働させて自動売買ができるものになります。デフォルトで基本的な売買戦略(トレードのアルゴリズム)は実装済みですが、ご自分の FX のスタイルに合わせてアルゴリズムは調整することを強くおすすめします。
起動画面は以下のようなイメージとなります。
本書、本プログラムがターゲットとしているユーザ層
この bot を購入して動かすだけで丸儲けだぜ、ひゃっはーみたいに考えておられる方は申し訳ございませんがターゲットとしておりません。ターゲットとしているユーザ層はこんな方々です。
①python できるしバリバリにプログラムも書けるけど、bot は売買ロジック以外の作り込みが多くて面倒なのでやらなかった方々
②プログラムはある程度書けるけど bot ってどうやって作り込めば良いかわからなかった方々
③プログラムできないけど bot のフレームワークが完成してて、勉強しながら戦略の作り込みにチャレンジしてみようとという方々
④今後、私が投資助言・代理業に該当しない範囲で発信していく情報をもとに売買戦略スクリプトを作ってみようと考え、とりあえずベースの仕組みを買っておくかと考えてくださる方々(※国の仮想通貨の取り扱いの変更等により本件は対応できなくなる場合がございます)
本プログラムの価格
かなり迷いましたが 500 部限定で販売価格を 10,000 円とさせていただきます。
→大変申し訳ありませんが、本プログラムの販売については一旦は100部限定、2018/4/21までの期限付きとさせていただきます。その後の展開については現在整理中です。なお、プログラム本体の bugfix については継続します。
正直かなり高いと感じる方が多いことかと思います。ただ一方で bot プログラムを自動売買のアルゴリズム実装込みで公開するはノウハウそのものを提供してしまうことを意味しています。加えて、私がこの bot の開発に割いた時間を人月換算すると 10,000 円をゆうに超える金額でもあるため、正直安売りすることができません。ですが購読者の方が購入して大損こいたぜ、という場合も想定してギリギリ洒落で済む範囲の価格で調整したつもりです。
プログラムが書ける方でも同じプログラムを記述しようとすれば、販売価格以上の人件費がかかることかと思います。ネットで情報収集しながら ccxt や TA-lib の実践的な使い方を調べるという側面だけで見ても、それなりにお値打ち価格ではなかろうかと考えています。もちろん購入するかは、無料部分を読んでいただいてご自分で判断されてください。
動作環境
python3 が動作する環境 + 64bit OS
※基本的にはWindows, macOS, Cloudサービス等環境に依存しません。
※当方では Windows10-64bit版 / macOS high sierra での動作確認を行っております。(Windows10-32bit版はおそらく動きませんのでご注意ください。)
有料パートで公開されるプログラムファイル
inago_bot.py :トレードのメインループを司るプログラム
strategy.py:自動売買のロジックを司る戦略スクリプトのサンプル
本来の開発であれば機能毎にクラス化して複数ファイルにしたり、設定をファイル化したりします。今回もクラス構成をどうするか迷いましたが、Note で公開することを前提として設計し、へたにクラス化せずシンプルに 2 ファイルで実装を行いました。プログラムには十分なコメントを挿入し、そのコードがどのような処理を行っているのかを解説しつつ、自分だけでなく購入いただいた方々も使うことも考えて、本番運用に耐えうるような各種エラー処理、ログ表示、リトライ処理を作り込みました。
また、本プログラムの特徴のユニークな特徴は戦略を指定して起動することができる点です。strategy.py はサンプルとして動作確認として用意した戦略ですが、基本的にはご購入者ご自身で、このファイルを参考に自分なりのカスタマイズを入れた自動売買アルゴリズムのファイル作成してください。作成したファイルは起動時に指定することができます。使いようによっては、ダウントレンド用の戦略、アップトレンド用の戦略など bot 運用を切り替えることが可能です。
プログラムの骨子を事前に公開
今回の bot のプログラムの骨子を買う前の判断材料として公開いたします。実際のプログラムは約1000行程度のプログラムとなります。
以下プログラム内の「・・・中略・・・」と書かれた部分には、実際は必要な各種処理が記述されています。def ○○○ と書かれた部分は関数定義を意味し、プログラムのいろいろな場所から呼ばれる重要な定義となります。実際のコードは削除していますが、プログラムを書いている方であれば、おおよそどのような流れでプログラムを書いているかは想起できることかと思います。
●inago_bot.py:トレードのメインループを司るプログラム
#!/usr/bin/python3
・・・中略・・・
##############################################################
## 必要なライブラリの import
##############################################################
・・・中略・・・
import ccxt
import numpy as np
import talib as ta
・・・中略・・・
## limitOrder:指値売買
def limitOrder(side, price, order_size):
・・・中略・・・
## marketOrder:成行売買
def marketOrder(side, order_size):
・・・中略・・・
## getPosition:position取得
def getPosition():
・・・中略・・・
## getOpenOrders:オープン状態の注文取得
def getOpenOrders():
・・・中略・・・
## getTicker:ticker取得
def getTicker():
・・・中略・・・
## getCandles:candle取得
def getCandles(timeframe, since):
・・・中略・・・
## getBalance:balance取得
def getBalance():
・・・中略・・・
## cancelOrder:注文取消
def cancelOrder(order_id):
・・・中略・・・
## expireOldOrder:オープン状態で古い注文は捨てる
def expireOldOrder():
・・・中略・・・
## autoEditOrderPrice:オープン状態で古い注文を書き換える
def autoEditOrderPrice():
・・・中略・・・
## createBestOrder:良い感じで注文
def createBestOrder(is_sell_order, order_size):
・・・中略・・・
## closePosition:注文クローズ
def closePosition(is_sell_order, order_size):
・・・中略・・・
## newPosition:新規注文
def newPosition(is_sell_order, order_size):
・・・中略・・・
## setTickersVal:分析用ticker情報を保持する変数
def setTickersVal(ticker):
・・・中略・・・
## setCandlesVal:分析用ticker情報を保持する変数
def setCandlesVal(candle):
・・・中略・・・
## isNoPosition:ポジション判定
def isNoPosition(position):
・・・中略・・・
##############################################################
## broker:ブローカー
##############################################################
def broker():
・・・中略・・・
## 最新のローソク足を取得
new_candles = getCandles('1m', ticker['timestamp'] - 60000)
・・・中略・・・
## 売買の戦略を練るためのアルゴリズムを実行
calcIndicator(new_candles[-1], ticker)
## スタックしてる直近の注文を破棄して新規価格で注文を出し直す
autoEditOrderPrice()
## 古すぎる注文は破棄する
expireOldOrder()
・・・中略・・・
## ポジションを持たない時の処理
position = getPosition()
if isNoPosition(position):
・・・中略・・・
## 売買戦略
return noPositionStrategy(position, ticker, balance);
## ポジションを持つ時の処理
else:
・・・中略・・・
## ロスカット戦略
if losscutStrategy(position, ticker, open_orders):
return;
## 売買戦略
if positionStrategy(position, ticker, open_orders):
return;
##############################################################
## start_inagobot:ボット開始処理
##############################################################
def start_inagobot():
・・・中略・・・
while True:
broker()
sleep(TIME_PERIOD)
・・・中略・・・
##############################################################
## botを実行
##############################################################
if __name__ == '__main__':
start_inagobot()
●strategy.py:自動売買のロジックを司る戦略スクリプトのサンプル(差替可能)
##############################################################
## calcIndicator:TA指標を生成
##############################################################
def calcIndicator(new_candle, ticker):
・・・中略・・・
##############################################################
## losscutStrategy:ロスカット戦略アルゴリズム
##############################################################
def losscutStrategy(position, ticker, open_orders):
・・・中略・・・
##############################################################
## noPositionStrategy:ノーポジ時の戦略アルゴリズム
##############################################################
def noPositionStrategy(position, ticker, balance):
・・・中略・・・
##############################################################
## positionStrategy:ポジション時の戦略アルゴリズム
##############################################################
def positionStrategy(position, ticker, open_orders):
・・・中略・・・
サンプルの戦略アルゴリズムは MACD + RSI のしきい値で売買のシグナルを発信する教科書通りの単純なものとなります。あくまでプログラム付属のサンプルなので、ご購入者様ご自身でカスタマイズしてください。
プログラムの大まかな流れについて
無料範囲として超絶おまけ精神でプログラムの大まかな流れを説明します。おそらくは誰が作っても bot の基本構造は変わらないので、大いに参考になる情報かと思います。
①プログラムは最終行の以下のコードで開始されます。
start_inagobot()
②bot が開始されると start_inagobot 関数が実行されます。処理としては定期的に仲買人となる broker 関数を呼ぶだけです。
def start_inagobot():
・・・中略・・・
while True:
broker()
sleep(TIME_PERIOD)
・・・中略・・・
③broker はOHLC形式(Open High Low Close)のローソク足をもとに売買の判断を行いトレードを行います。処理の流れは以下の通りです。
3-1. ローソク足情報を取得する
3-2. TA-libを使ってテクニカル指標値を計算
3-3. 古い注文の調整
3-4. 資金状況やポジション保有を判定
3-5. ノーポジ時にインする処理
3-6. ポジション時のロスカット処理
3-7. ポジション時の利確処理
3-2, 3-5, 3-6, 3-7 については差替可能な戦略として strategy.py でプログラムを実装します。参考として購入時時点でサンプルの戦略が付属しています。
さらにおまけで説明をしておくと、BitMEX API を簡単に扱うために当然 ccxt ライブラリを使って実装を行っていますが、各種エラー処理とリトライを行うために、トレードに必要な自前関数でラッパーしたりしています。各種関数群だけでも地味に価値がある部分です。
注意事項
本プログラムに付属するサンプルの戦略は多少凝った判定は行っていますが、前述の通り MACD + RSI をベースとした基本教科書どおりの簡単な戦略実装です。このままプログラムを実行させても確実に勝てる保証は何処にもありません。また本プログラムの利用は完全に自己責任となります。本プログラムの実行による損失は当方は一切責任を一切負いませんので予めご了承ください。
※誤解を恐れずに言えば、むしろ常勝できるような bot が世の中に存在するとすれば私が欲しいですし、なにより投資アルゴリズムそのものは「投資助言・代理業」に該当する可能性があり、直接提供することができません。
本プログラムは、金融庁「VII. 監督上の評価項目と諸手続(投資助言・代理業)」の「VII−3 諸手続(投資助言・代理業) (2)登録の要否の判断に当たっての留意点 ②投資助言・代理業に該当しない行為 b. 投資分析ツール等のコンピュータソフトウェアの販売」に基づき、ネットワークを経由したダウンロード販売等により、誰でも、いつでも自由にコンピュータソフトウェアの投資分析アルゴリズム・その他機能等から判断して、当該ソフトウェアを購入できる状態に該当するもので、投資助言・代理業に該当しない範囲での提供を前提とさせていただいております。
従いまして、投資助言・代理業に該当する範囲の行為は行うことができません。具体的には、以下の項目については提供対象外となります。
・投資分析アルゴリズム(当プログラムでは戦略スクリプトとよぶ)の提供(ただし動作確認用としてサンプルの戦略スクリプトは付属します)
・投資アルゴリズム等投資そのものに関わるサポート行為
なお、プログラムのバグ修正についてはこれらの行為に当てはまらないため、本 Note の末尾に追記する形でダウンロードできるように致します。またソフトウェアのインストールに関わるサポートについても、上記行為に当てはまらないため常識の範囲内においてお受けいたします。
なお仮想通貨が金融商品になった場合、通知なく本プログラムおよび記事の提供を取りやめる可能性があります。予めご了承ください。
ご購入前に一言
お堅い前置きを致しましたが、本プログラムを利用することで、bot に必要な周辺機能の作り込みから解放され、勝つために必要な戦略の実装に専念することができます。これは大きなメリットだと思います。よろしければプログラムの購入をご検討ください。
ここから先は有料パートになります。
ここから先は
¥ 10,000
この記事が気に入ったらチップで応援してみませんか?