自動売買ボットの毎日の監視ルーティンとは?最低限チェックすべき項目


※本記事にはアフィリエイト広告(プロモーション)が含まれています。

自動売買ボットを一度動かし始めると、「あとは放っておけば稼いでくれる」と思いたくなります。しかし実際には、ボットは人間が運転しない自動運転車のようなもので、定期的な点検を怠ると小さな異常が大きな損失につながりかねません。この記事では、ボット運用で最低限押さえておきたい監視項目を、日次・週次・月次に分けて一般的な指針として整理します。

なぜ「動いているから大丈夫」とは言えないのか

ボットが取引を続けていること自体は、正常動作の証拠にはなりません。プロセスが生きていても、注文が意図通りに通っていない、想定外の相場条件で無効な判断を繰り返している、といった状態は外からは気づきにくいものです。逆に、休眠バグの実例記事で紹介されているように、ログ上は正常でも取引が一切発生していないケースもあります。「エラーが出ていないこと」と「正しく動いていること」は別問題だと意識しておく必要があります。

だからこそ、異常が起きてから慌てて調べるのではなく、あらかじめ決めたチェック項目を定期的に確認する仕組みが重要になります。

毎日チェックしたい項目

日次のチェックは、時間をかけすぎず「異常の芽に早く気づく」ことが目的です。以下は一般的に確認しておきたい項目です。

  • プロセス・稼働状況の確認: ボットのプロセスが落ちていないか、VPS自体が正常に稼働しているか
  • 直近ログのエラー確認: WARNING以上のログが出ていないか、想定外の例外が発生していないか
  • 残高・ポジションの確認: 想定範囲内の残高・建玉になっているか、意図しないポジションが残っていないか
  • 直近の約定・注文履歴: 注文が拒否されていないか、想定した価格帯・数量で約定しているか
  • 通知の到達確認: エラー通知やアラートが正常に届く状態になっているか(通知自体が壊れていると異常に気づけません)

これらは目視でも構いませんが、件数が多くなるほど見落としが増えます。異常検知をリアルタイムで受け取りたい場合は、Discord通知ボットの作り方で紹介しているような仕組みを組み合わせると、日次チェックの負担を減らせます。

簡易ヘルスチェックの例

ボットが最後に「生きている」ことを記録した時刻(ハートビート)と現在時刻を比較し、一定時間更新がなければ通知する、というシンプルな仕組みは実装コストが低く効果的です。

import time
import requests

HEARTBEAT_FILE = "heartbeat.txt"
STALE_SECONDS = 300  # 5分以上更新がなければ異常とみなす
WEBHOOK_URL = "https://discord.com/api/webhooks/xxxx"

def check_heartbeat():
    try:
        with open(HEARTBEAT_FILE) as f:
            last = float(f.read().strip())
    except FileNotFoundError:
        last = 0

    elapsed = time.time() - last
    if elapsed > STALE_SECONDS:
        message = f"⚠️ ボットのハートビートが {int(elapsed)} 秒間更新されていません"
        requests.post(WEBHOOK_URL, json={"content": message})

if __name__ == "__main__":
    check_heartbeat()

ボット本体側で HEARTBEAT_FILE に定期的に現在時刻を書き込み、この監視スクリプトを別プロセス(cronなど)で数分おきに実行する構成です。ボット本体が完全にフリーズしても、外側の監視が気づける点がポイントです。

週次でチェックしたい項目

週に一度は、もう少し腰を据えて数字を見る時間を取るとよいでしょう。

  • 成績指標の確認: 勝率だけでなく、プロフィットファクターや最大ドローダウンといった指標も含めて確認します。指標の読み方は成績指標の読み方の記事にまとめています
  • ログのローテーション・ディスク容量: ログが想定通りに切り替わっているか、ディスクを圧迫していないか。設計の考え方はログ設計の記事を参考にしてください
  • APIキーの権限・有効期限: 取引所によってはAPIキーに有効期限や再認証が必要な場合があります。想定外の権限が付与されていないかも合わせて確認しておくと安心です

月次でチェックしたい項目

月次は、日々の運用では気づきにくい「ズレ」を確認するタイミングです。

  • VPS・OS・ライブラリのアップデート状況: セキュリティパッチが放置されていないか。VPS運用の基本はVPSで24時間運用する方法の記事で解説しています
  • 取引所側の仕様変更の確認: 手数料体系やAPI仕様は取引所側の都合で変更されることがあります。※変更されることがあるため、必ず公式の最新情報を確認してください
  • バックテストとの乖離確認: 実運用の成績が事前のバックテスト結果から大きくズレていないか。バックテストの罠の記事で触れているような、過学習やスリッページの過小評価が原因になっていないかを見直します

「止める」判断を先に決めておく

監視の本当の目的は、異常を見つけることそのものではなく、「異常を見つけたときにどう行動するか」をあらかじめ決めておくことにあります。たとえば「連続で規定回数以上損失が出たら自動停止する」「想定外のポジションサイズになったら通知して手動確認する」といった基準は、感情的な判断を避けるためにも事前に決めておくのが望ましいとされています。資金を守る仕組み全体の考え方は、資金管理・リスク管理の記事で詳しく解説しています。

監視の仕組みは、あくまで「気づくため」の手段であり、「気づいたあとにどう振る舞うか」という設計とセットで考えることが重要です。

PR

監視スクリプトやcronジョブをボット本体と同じVPS上で動かす場合、負荷やリソース管理も含めて設計しておくと安心です。低価格帯から始められるVPSとして、ConoHa VPSはボット運用の環境としてよく使われています。

サービス開発やテスト環境に便利な【ConoHa】

まとめ

  • ボットが「動いていること」と「正しく動いていること」は別問題であり、定期的な確認が必要
  • 日次では稼働状況・ログ・残高・通知の到達を確認する
  • 週次では成績指標・ログ容量・APIキーの状態を確認する
  • 月次ではインフラのアップデートと、バックテストとの乖離を確認する
  • 監視の仕組みは「気づいたあとにどう止めるか」というルールとセットで設計する

監視ルーティンは一度組んで終わりではなく、実際に運用しながら「見るべき項目」を調整していくものです。まずは日次のチェックリストを1つ作るところから始めてみてください。