Node.jsで暗号資産アービトラージ

ビットコイントレード中心にNode.jsで実際に作るためのレシピ

アービトラージ運用するならメンテナンスやハッキングで制御できると便利

※このページは2019/7/17に作成されました。

こんにちは、ケネです。

ビットコインアービトラージをする場合、取引所ごとに個別に利用可否を選択できるようにしておくと便利だったのでさくっと共有します。

直近ではBITPointのハッキングやcoincheckの臨時メンテナンスなど一部の取引所が使えないけど、システムは止めたくないシーンを想定しています。

メンテナンスの度に全システムを止めたり、ハッキングでシステムが全て使えなくなるのはすごく不便ですよね。。

ということで、これからアービトラージシステムを運用したい人に読んでほしい記事となります。

アービトラージでは取引所ごとにステータスフラグをつけておくと便利

メンテナンスに対応できる

国内の仮想通貨取引所は日次のメンテナンスの他に、システムのアップグレード等で臨時でシステムメンテナンスされることがあります。

メンテナンス中でAPIが利用できないアナウンスがされている場合は、アービトラージシステムは停止しておかないと誤発注の原因になります。

かなりの頻度でやらかします。

運用としてシステムを止めてしまうこともアリですが、止めてしまうのももったいないので一部の取引所だけ停止させておきましょう。

Node.jsのアプリであればMongoDBなどのDBにステータスを入れておいてWeb経由で停止・起動フラグをいじれるようにしておけば短時間でも対応できるので便利です。

アービトラージシステムのシステム構成

ハッキングや取引所を外したい時に対応できる

残念なことにBITPointがハッキングされてしまい、現在サービス停止中です。

サービスはそのうち再開されるのでは?と期待していますが、ある程度の期間は停止したままになります。

一部の取引所のサービス停止中に他の取引所でアービトラージができなくなると機会損失となりますので、個別のサービス停止は必須です。

また、取引所のAPIを使っていていまいちだな、と思った時に外せるようになります。

現在は価格差が出やすいのであると便利

2019年6月のアービトラージ動向・収益で記載しましたが、現在の状況では価格差が出やすいのでアービトラージシステムの稼働率や柔軟に変更できるようにしておくことは有効です。

数時間でも数百円単位で損失がでるので大きいですよね。

アービトラージシステムに取引所ごとのステータスフラグをつける例

APIの呼び出し、価格差検出ロジックで必要

取引所のステータスチェックが必要なのはAPIの呼び出し箇所、価格差検出ロジックが中心となります。

APIの呼び出し箇所は正しく制御できていないとシステムが止まってしまうのでAPIが動かなくても停止しないような仕組みが必要となります。

取引所ステータスフラグをチェックしてAPIを呼び出さずに初期値(0など)を設定する、APIからエラーが返ってきても初期値を設定するようなエラーを発生させない仕組みにしておきます。

初期値を使う場合は、価格差検出を判定する際に価格差と判定されないように、価格差検出でもステータスフラグをチェックするようにしておきましょう。

他にも価格は予想しない箇所で使われている可能性があるため、ソースコードレベルの変数の検索や単体テスト、全体を通したテストも十分に行ってください。

※チェックの箇所はシステムごとに異なるため個別に判断してください。

まとめ

これからアービトラージシステムを作るのであれば、取引所ごとに停止できるようにしておくと便利です。