【自作bot】ビットコインアービトラージツールの実行方法

自動ツール

自作したビットコインアービトラージツールを外部VPSで実行する方法を解説します。

ツールの作りや動かし方の一例として、どういう風に動かすのかをイメージしてみましょう。

Node.jsでアービトラージロジックを記載し、シェルで実行する流れになります。

ビットコインアービトラージツールを自作するメリットはアービトラージツールを探しているならいっそ自作してみたら、APIが使える取引所は国内でAPI取引が行える仮想通貨取引所一覧を参照ください。

ビットコインアービトラージツールの構成

ここからはあくまで一例という前提付きで説明していきます。
みなさんのスキルレベルに合わせて使いやすいようにどんどん改良していってください。

また、Node.jsが前提となりますので、他の言語を使う場合は適宜読み替えてください。

アービトラージロジックはNode.jsアプリケーション

私のbotでは基本的にはNode.jsアプリケーション(例えばarbitrage.js)の基本の動きは「1.価格差のチェックをループさせて」、「2.価格差が発生したら注文リクエスト」を行なっています。
(残高チェックなどの細かいチェックロジックは入れています。)

node arbitrage.jsコマンドでプロセスを起動しますが、一度注文リクエストを出したらプロセスは終了させています。

Node.jsは非同期処理なので注文リクエスト後のアカウントの残高状態の整合性をチェックするのが難しいためだったりします。

ループはNode.js(javascript)のsetIntervalを利用して実現できます。

LinuxシェルでNode.jsアプリケーションを実行

node arbitrage.jsコマンドの実行はLinuxのシェル(bash)を使います。

シェルはコマンドを実行するためのスクリプトです。

シェルは下のように作ります。

シェル名:callarbitrage.sh

for i in {0..200000}
 do
 cd /home/kennejs/server
 /usr/local/bin/node arbitrage.js >> /home/kennejs/log/callarbitrage.log
done

Linuxのスケジューラを使ったりすることを考えて、パスはフルパス(/homeから全部書く)です。

node arbitrage.jsとかもきちんと/usr/local/bin/node arbitrage.jsのようにパス指定しておかないと動かなかったりするので注意が必要です。

for構文でループさせているので、注文したりデータ取得できなかったりでnodeプロセス(Node.jsアプリケーション)が終了しても新しくプロセスを起動することができます。

シェルは以下のコマンドで起動します。

sh callarbitrage.sh

運用中はシェルを停止したくなる場面も出てくるので停止するシェルも作成しておくと便利です。

停止コマンドはざっくり言うとkillコマンドとgrepコマンドを組み合わせてプロセスを停止させます。

cronでシェルをスケジュール実行

シェルはバックグラウンド実行することでサーバからターミナルの接続を切っても実行し続けることが可能ですが、時刻をスケジュールして再起動したくなると思います。

例えば取引所が日次メンテナンス中の場合は、Node.jsアプリケーションを停止しておかないと、誤発注が発生する可能性が非常に高いです。

メンテナンスチェックが実装できていない場合はcronを利用して特定の時刻にシェルやコマンドを実行させてアプリケーションの起動や停止を行うことができます。

cronはcrontab -eコマンドで起動してviで操作します。

cronは「* * * * * (分 時 日 月 曜日)」の形式で設定します。

以下のサンプルでは毎日4時11分にシェルが実行されます。

11 4 * * * sh /home/kennejs/script/callarbitrage.sh

ビットコインアービトラージツールを外部VPSへ配置する

ここまでが外部VPSでNode.jsアプリケーションを実行する流れとなります。

ここからは自分のPCから外部VPSへbotをアップロードする手順を解説していきます。

外部VPSへのアップロード

外部VPSへのアップロードはWindowsの場合、FTPというファイル転送プロトコルを使用します。

正確にはよりセキュアなFTPSやSFTPを使います。

FFFTPやWinSCPというフリーソフトを使うことが多いです。

Macの場合はSCPというプロトコルを使用できます。
標準ソフトのターミナルからscpコマンドを使ってファイルアップロードができます。

ポイントは通常のセキュアでないFTPだと転送するファイルの中身が見られる可能性があることです。

FTPSやSFTP、SCPは通信を暗号化してから転送することができるので、中身を見られるリスクを大幅に削減できます。

Windowsからフリーソフトを利用する場合は、FTPSまたはSFTPを使う設定になっているか必ず確認してください。

ちなみにFTPSの場合、ポート989、990を利用しますので外部VPSに接続できない場合は外部VPS側のポート設定を確認しましょう。

CentOS7の場合、firewalldの設定を確認します。

なお、SFTP、SCPはSSHのポート(おそらく初期設定で22から任意の数字に変更しているはず)を利用します。

VPSでの稼働方法は仮想通貨botのVPSでの稼働方法でも解説しています。

アップロードシェルがあると便利

SCPを使ってNode.jsのアプリケーションをリリースする際は、全ファイルアップロードのシェルを作っておくのがおすすめです。

  • 最新の更新ファイルをアップロードするのが漏れていた
  • テスト用のconfigファイルを間違ってアップロードしてしまった

ということが起こりやすいので、全ファイルをscpするコマンドをリストアップしたシェルを用意しておくとめちゃくちゃ楽になります。

特にconfigファイルは本番用とテスト用に分けておいて、本番用のファイルだけをリリースするように設定してください。

Windowsでフリーソフトを使う場合も、上記の観点で問題ないかを意識するといいと思います。

ビットコインアービトラージツールの実行方法まとめ

ビットコインアービトラージツールを実行する方法を解説しました。

この記事では概要しか説明できていない部分がありますが、イメージは持てたと思います。実際に作る際の参考にしてください。

coincheckは手数料なしで取引高が多いので現物に近い価格でAPIで売買できます。

また、GMOコインは板はやや薄くなりますが、送金手数料が無料なので持っていると便利ですよ。(APIも使えます)

APIでシステムトレードを実装するならさくらのVPSなどの外部VPSを利用すると24時間稼働できて便利です。

価格で選ぶならさくらのVPS、使いやすさ、安定性で選ぶならConoHa VPS がいいですよ。

コメントを残す

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