仮想通貨botを作ったのにいつの間にか止まってしまったり、取引所のメンテナンスがあるのを知らず、ポジションを持ったまま爆死して悲しい思いをしていませんか?
作ったbotを「なにがおかしいんだろう?」と眺めていても、私たちよわよわbotterの技術力では、問題を見つけて止まらないbotを作るのは不可能です。
でも大丈夫!無理やり二時間ごとにリスタートすることで、botが止まっていないか心配するストレスからも、ちらちら眺めて再起動するストレスからも解放されます!
botの期待値が1円でもプラスである以上、美しさにこだわらずゴリ押しで動かしましょう。
この記事では、定期的にプログラムを実行してくれるcronがどういうものなのか、そこに何を打ち込めばいいのかをお伝えします。
この記事を読んでも、プログラムの仕組みや原理は分かりませんが、あなたのbotを動かし続けることができるようになります。
(特定の条件で起動・停止の管理を行う方法はこちらの記事をどうぞ仮想通貨botを監視するbot)
cronでできること
cronとは、一定時間ごとにプログラムを実行してくれる便利なやつです。
たぶん、インストールとかしなくてもパソコンに勝手にはいってます(私のgcpには、はいっていました。)。
これにいつも手入力しているプログラムを登録しておくことで、勝手に再起動してくれるようになります。では、早速やっていきましょう。
コマンドラインで
crontab -e
と入力して、crontabファイルを開きます。
こんなページが開きましたね?
このページの一番下に動かしたい動かしたい間隔と、プログラムを打ち込んでいきます。
crontabに打ち込むこと
* * * * * まず星を5ついれます。これがそれぞれ、分、時、日、月、曜日に対応しています。
二時間ごとに動かしたい場合、0 */2 * * * という表記になります。
30分の場合は、*/30 * * * * といった具合になります。
より細かな指定をしたい方はググってください。記事がいっぱいあります。
私はとりあえず二時間ごとにしています。
次にpythonのよく分からないけれど止まってしまったプログラムを終了します。
エラーを出して終了しているbotにこの処理は必要ありません。
しかし、私達のことですから、どうせtryでエラーを握りつぶしながら稼働しているはずです。大人しくpkill pythonしましょう。
こだわりの終了方法がある場合はそれを記入してください(複数botを動かしていて、ひとつだけ止まるbotがある場合など)。
手動の際は次にcondaを起動していました。
しかし、cronの場合は絶対パスでconda内のpythonを指定するので、conda activateは必要ありません。
pythonの絶対パスを知りたい場合は”which python”してください。
私の場合は”/home/user/miniconda3/bin/python”にあります。
次にbot.pyの絶対パスを確認しましょう。”readlink -f bot.py”です。
私の場合は”/home/user/bot.py”にありました。
これらを1行で書きます。プログラムをつなぐときはセミコロンを使います。
また、botを動かし続けるためにnohupを忘れないようにしましょう。cronではnohupいらないと書いてある記事もありましたが、必要です。
* */2 * * * pkill python; nohup /home/user/miniconda3/envs/py38/bin/python /home/user/bot.py >/dev/null 2\>&1 &
後は保存すれば勝手に二時間ごとにプログラムが再起動されます。
cronで無理やりbotを動かすデメリット
まるで永遠に動き続けるような書きぶりですが、デメリットも当然あります。
まず、再起動直後に止まってしまうと、まるまる二時間botが止まることになります。
高頻度botのように薄利を積み上げているbotterには無視できない損失を生む可能性があります。
それなら、1秒ごとに再起動すればいいじゃん!
というのにも無理があります。
起動にも時間がかかるため、回数を増やせば増やすほどbotが動かない時間が増えていきます(botの起動速度によるかもしれませんが)。
つまり、この方法では、ずっと動いているかのように見せかけて、死んでも死んでも生き返るゾンビbotを作っているのにすぎないのです。
そのため、つよつよbotterの人はbot内で止まらない施策を行ったり、監視体制を整えて止まったらすぐ再起動できるようにしましょう(もうしてるか。。。悔しい!)。
bot内でどうすんの?監視なんてできるの?というあなたはこちら側です!大人しくゾンビのように死んでも死んでも時間がきたら生き返るbotで戦っていきましょう!
bot作りが初めての方はサーキットブレークbot(CBbot)がおすすめです!
botに今から入門される方はこちらの記事をどうぞ(【コード公開】絶対に勝てる仮想通貨botはCBbot【勝率99.9%サーキットブレーカー】)