背景
FX自動売買を単純な売買ルールだけで運用すると、相場環境が変わった瞬間に弱くなります。
トレンドが強い日、レンジで方向感がない日、急にボラティリティが上がる日では、同じエントリー条件を使い続けるほど期待値が崩れやすくなります。
そこで現在は、売買ロジックを単体のBotとして扱うのではなく、相場状態に応じて「攻める」「守る」「待つ」を切り替える運用システムとして設計しています。
目的
目的は、裁量判断をできるだけ減らしながら、以下を継続的に改善できる構成にすることです。
- 相場状態の分類
- 作戦選択のルール化
- リスクが高い場面での停止判定
- 売買結果の記録
- 改善用データの蓄積
月次収益を伸ばす前に重要なのは、まず退場しないことです。そのため、利益を狙うロジックだけでなく、負けを広げない制御も同じくらい重視します。
システム構成の考え方
大きくは次のような流れで設計します。
- 価格データやテクニカル指標を取得する
- 現在の相場状態を分類する
- 状態に応じて利用する戦略を選ぶ
- リスク条件を満たさない場合は取引しない
- 約定、損益、停止理由、判断材料をログに残す
- ログをもとにパラメータや判定条件を見直す
疑似コードにすると、考え方は次のようになります。
market_state = classify_market(candles, indicators)
strategy = select_strategy(market_state)
if risk_filter.rejects(account, market_state):
log_decision(reason="risk_rejected", state=market_state)
return
signal = strategy.generate_signal(candles, indicators)
if signal:
order = broker.place_order(signal)
log_trade(order=order, state=market_state, strategy=strategy.name)
ポイントは、シグナル生成より前に「今その戦略を使うべきか」を判定することです。
相場状態ごとの作戦切替
たとえば、次のように状態ごとの振る舞いを分けます。
| 相場状態 | 基本方針 | 例 |
|---|---|---|
| トレンド | 利益を伸ばす | ブレイクアウト、押し目買い/戻り売り |
| レンジ | 無理に入らない | 逆張り条件を厳しくする |
| 高ボラティリティ | 守る | ロット縮小、停止、損切り幅の見直し |
| 低ボラティリティ | 待つ | エントリー頻度を落とす |
この切替を人間の気分で行うと再現性がありません。データとルールに落とすことで、後から検証できる運用になります。
ログ設計で見るべき項目
改善するには、勝ったか負けたかだけでは足りません。
最低限、以下を残すようにします。
- 取引時刻
- 通貨ペア
- 相場状態
- 選択された戦略
- エントリー理由
- 見送った理由
- ロット
- 損益
- 最大含み損
- 停止条件に該当したか
特に「見送った理由」を残すと、取引しなかった判断も改善対象にできます。
リスク制御
自動売買は速く動ける反面、制御を間違えると損失も速く積み上がります。
そのため、次のような停止条件をシステム側に持たせます。
- 1日の最大損失に到達したら停止
- 連敗数が一定以上なら停止
- スプレッドが広すぎる場合は停止
- 指標発表前後は取引しない
- 想定外の約定遅延が出たら停止
「AIで攻める」だけではなく、「AIで止まれる」設計にすることが重要です。
まとめ
FX自動売買を長く運用するなら、単発の売買Botではなく、相場状態を見て作戦を切り替える運用システムとして設計した方が検証しやすくなります。
大事なのは、未来を完全に当てることではありません。
資産を守りながら、勝ち筋を探し続けるための判断ログと改善サイクルを作ることです。
この土台があると、裁量に頼らない複利運用に近づけます。
