はじめての方も読めるよう、専門用語はカンタンな言葉に言い換えながら解説します。「なんとなく聞いたことある」レベルの知識で大丈夫です。
- EA = Expert Advisor。MT4/MT5上で動く自動売買プログラム
- MT5 = MetaTrader 5。世界標準のFXトレードソフト
- Claude Code = Anthropic製のAIコーディング支援ツール
実務経験から得た教訓
Claude Code を実務でEA開発に使った場合の落とし穴 7つと回避策
最終更新: 2026-05-05
Claude Code (Anthropic公式CLI) を1ヶ月本格的に使ってMT5用EAを書いた経験から、「想定通り使えなかった」7パターンと、その回避策を整理します。万能ではないけれど、向き不向きを理解すれば強力な相棒になります。
1. MQL5の方言にAIが追従しきれない瞬間がある
Claude Code は Python/JavaScript/TypeScript で抜群に強いのですが、MQL5の細かいドキュメント差分 (例: MqlTradeRequestのフィールド変更) で、古い書き方を提案してくることがありました。
回避策: プロンプトに 「MetaTrader 5 build 4400 以降を前提」「最新のMQLドキュメントに従う」 と明示。さらに、生成コード冒頭に #property strict を入れさせて型エラーを早期検出します。
2. バックテストの再現性がコード非依存で崩れる
同じコードでも、ストラテジーテスターのモード (Every tick / Every tick based on real ticks / 1 minute OHLC) で結果が大きく変わります。Claude が「PF=1.8」と報告しても、別モードでは1.2まで落ちることがありました。
回避策: Every tick based on real ticks + Tick Quality 99% を必須化。比較は同条件で再走行を徹底。
3. 「自然言語の曖昧さ」が静かに数字を狂わせる
「ATR の2倍を SL に」と頼むと、iATR(_Symbol, _Period, 14) * 2 でコードが書かれますが、iATR は配列扱いで CopyBuffer が必要になるバージョンもあります。
回避策: 「期間 14、シフト 1、CopyBuffer で取得」のように仕様を完全に数値化して渡します。
4. ロット計算でブローカー差を吸収しきれない
銘柄毎の contract_size、最小ロット、Tick Value はブローカーで微妙に違います。Claude が書く汎用ロット計算は、複数ブローカーで動かすと誤差が0.01〜0.05ロット出ました。
回避策: SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_VALUE) 等の動的取得を必ず通すよう指示。固定の係数は禁止。
5. 例外処理を省略しがち
初回生成では OrderSend が失敗した場合の retcode 別ハンドリングが省かれることが多かったです。本番でリクオート (10004) や接続不安定 (10026) のときに無言で停止します。
回避策: 「すべての retcode を ENUM_TRADE_RETCODE に対応する形でログ出力し、リトライ最大3回まで」など、運用要件としてプロンプトに含める。
6. テストが「動いた = 正しい」になりがち
Claude は「実行結果はエラーなし」を成功とみなしがちですが、それは無限ループでも当てはまります。バックテストで取引数 0 でも報告では「正常に完了しました」となるケースがありました。
回避策: 「取引数が0なら FAIL を返す」のような明示的な合格基準をテストに組み込みます。
7. 過信して人手レビューを飛ばす
これが最大の落とし穴です。Claude が書いたコードは見やすく一貫性があるため、読まずに本番投入したくなります。私自身、見落としで RISK_PERCENT を1%でなく10%にしたまま3日運用してDD15%まで行きました。
回避策: RISK_PERCENT、MAX_LOT、SL/TP を扱う行は必ず人間がレビュー。Git の hook で必ず git diff を見るルーチンに。
使い分けの結論
Claude Code は「退屈で間違えやすい部分の高速化」に最適です。CSV処理、データ前処理、レポート生成、テストコード、ドキュメント等。
逆に「お金が動く境界面」(ロット計算、発注、SL設定) は AI 生成 + 人間レビュー を必須にします。AIは最高のドラフト作成者だが、最後の責任は人間が持つ。これが1ヶ月で得た一番大きな結論です。
コメントを残す