高頻度取引botで低遅延にトレードするためのVPS設定メモ (Ubuntu)|bitFlyer

bitFlyer ビットコイントレード用bot

time4vpsという月々130円〜VPSが借りれるサービスを利用して、mmbot と SFD bot を運用している。

http://api.bitflyer.jp までのping遅延は、1ms以下ととても優秀だ。

[time4vps概要記事]
https://blog.bnikka.com/domain/time4vps.html

 

このVPSの bot まわりの設定を、忘れないようにメモしておこうと思う。

 

メンテナンス時間に bot を止める

3:59に bot  を停止し、4:11 に bot を起動するように cron に設定

$ crontab -e

 

# m h  dom mon dow   command

59 3 * * *      sh /home/USERNAME/dev/btc/kill.sh

11 4 * * *     python3.5 /home/USERNAME/dev/btc/mmbot_SFD_bitFlyer.py &

 

cron のログを吐く

Ubuntu16.04 では、cron のログは syslog のみに吐かれるようになっており、これは cron の状況確認に不便なので、cron.log を吐くように設定

 

/etc/rsyslog.d/50-default.conf内で

#cron.* /var/log/cron.logの#を取る

service rsyslog restartで、rsyslogを再起動

 

logrotate設定

bot のログは、/home/USERNAME/dev/btc/log/xxxxx.log に蓄積するものとする。

ログがでかくなるので、logrotate で圧縮し、古いものは捨てるように設定。

 

$ sudo vi /etc/logrotate.d/bitFlyer
/home/USERNAME/dev/btc/log/bitFlyer.log { # 対象のログファイル
    ifempty            # ログファイルが空でもローテーションする
    dateformat .%Y%m%d # dateフォーマットを任意のものに変更する
    missingok          # ログファイルがなくてもエラーを出さない
    compress           # 圧縮する
    daily              # 毎日ローテートする
    rotate 100         # 100世代分古いログを残す
    postrotate         # ローテート後にsyslogを再起動
        /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
    endscript
}

 

cronで自動起動

bitFlyer のサーバ負荷が高い時に、おそらく私のプログラムの順正常動作が不完全だからだと思うが、よくプロセスが落ちる。

 

そんなときのために、cron でプロセス監視をして、落ちていたら起動するように

$ crontab -e

*/1 * * * * ps ax |grep -v grep | grep -q bitFlyer || sh /home/USERNAME/dev/btc/start.sh

コメント