このコードはBTC/JPY取引所でマーケットメイキングを行う上でのサンプルとなるコードです。このリポジトリ内のコードは 各自で改変して実行することを前提としています。
デフォルトではアカウント内のビットコイン残高が1.0を超えていた場合、動作を停止します。
このサンプルコードを改変せずまたは改変し動作させ損失を被った場合でも、このコードの作者及びビットバンク社はいかなる責任も負いかねます。
BTC/JPYの取引はbitbank.ccで行えます。 https://bitbank.cc/
APIドキュメントはこちら https://docs.bitbank.cc/
Node.jsの実行環境が必要です。lib/logic.js
内の
var api = bitbank.privateApi("your_api_key", "your_api_Secret");
を自身のAPIキーとAPIシークレットに書き換え、取引ロジックを修正した後、以下のコードを実行することにより動作を開始します。
$ npm i # install dependencies
$ node index.js
プログラムが完成した後はVPSなどのクラウドサーバ上で動かすことをおすすめします。その際、pm2などのデーモン化ツールを使うと効率的です。
- 現在の最良買い気配値と最良売り気配値の中央値を取得
- アセット情報を取得
- アクティブオーダーをすべてキャンセル
- ビットコインの残高が
1.0
を超えていない場合は5へ進む - 中央値から0.1%離した価格に
0.01BTC
の売り注文と買い注文を出す - 10秒後、1へ戻る
マーケットメイキングには様々な手法が存在します。以下はその一例です。
- 大きな板が最終約定価格付近に存在した場合、その手前に板を置く
- 例えば最終約定価格から50円、100円、200円離した価格にそれぞれ売り板/買い板を置く
- botのロジックを他のユーザに悟られないよう、発注数量をランダム値にする
- オーダーブックの売り数量が買い数量を極端に上回っていた場合、様子を見て買い注文は出さない等
- 約定履歴APIを利用し、自分の直近の約定結果から不利にならないような位置に板を置く
- ボラティリティが大きい局面を判定し、そのときだけはbotの動作を停止させる、または数量を小さくする