
【負けを学習データに変える日】MT5 LLM自動売買Bot4系統 並走テスト録 [6/5]
6/5のMT5自動売買Bot並走テストは、全体ではマイナスでした。
結果は以下です。
GateGrid AIGBPUSD+199円
BoundSniperUSDJPY-100円
LLMBridgeTraderEURUSD-675円
MLScore GF-T4GBPJPY-492円
合計-1,068円
数字だけ見ると負けの日です。
ただ、今回の結果は「何が悪かったのか」がかなり見えやすい日でもありました。
特に、LLMの判断をそのまま使う怖さ、MLスコアBotの出口設計、そしてログ不足をどう埋めるかという課題がはっきり出ました。
GateGrid AIは唯一のプラス
GBPUSDのGateGrid AIは、今回の中で唯一プラスでした。
結果は +199円。
3回の決済がすべてプラスで、+90円、+10円、+99円という小さな利益を積み上げる形でした。
GateGrid AIは、単純なグリッドBotではありません。
CatBoostでエントリー確率を見て、さらにOllamaで相場状況を確認し、ATR、スプレッド、時間帯、直近成績などを見ながら、条件が悪ければ入らない構成にしています。
今日の結果だけで優秀とは言えません。
ただ、「入るべき場面だけ入る」という設計は、少なくとも今日の相場では一番安定していました。
BoundSniperは小さな負け
USDJPYのBoundSniperは -100円。
1回目が -104円、2回目が +4円でした。
BoundSniperは相場を予測するBotではなく、TradingViewのシグナルをMT5へ届ける実行役です。
つまり、Bot側の問題というより、TradingView側のロジックやフィルターをどう改善するかが次の課題になります。
実行装置としてはシンプルで、結果の良し悪しも読みやすいです。
LLMBridgeTraderは一番厳しい結果
EURUSDのLLMBridgeTraderは -675円。
今回もっとも厳しかったBotです。
LLMBridgeTraderは、AIにBUY/SELLだけでなく、OPEN、HOLD、CLOSE、REVERSEまで判断させるBotです。
SL pips、TP pips、信頼度、セットアップ種別、エントリー理由、決済理由までAIが出します。
自由度が高いぶん、うまくいけば強いです。
でも今回のように、判断が連続で外れると損失が重なります。
機械学習ゲートの導入
そこで今回、LLM Signal Bridgeに機械学習ゲートを追加しました。
LLMの売買計画は残したまま、OPENやREVERSEのような新規・反転エントリーだけをMLスコアでチェックします。
HOLDやCLOSEはリスク管理なので、MLでは止めません。
ML側では、ブレイクアウト候補、レンジ反転候補、ローソク足の形、ATR、ボラティリティ、リターン、時間帯などを特徴量として使い、CatBoostモデルで0〜100のscoreに変換します。
最初はしきい値を80にしていました。
ただ、EURUSDのbackfillではスコア分布が45〜51付近に集中し、80では通過が0件でした。
そのため、現時点では期待値がプラスになった 48 を採用しています。
"score_threshold": 48,
"strategy_score_thresholds": {
"breakout": 48,
"range": 48
}また、再学習したモデルを毎回そのまま使うのではなく、旧モデルより良い場合だけ本番モデルへ昇格するようにしました。
ここはかなり重要です。
AIを強くするというより、AIが暴れたときに止める仕組みを入れた、という感覚です。
MLScoreAnalistは負けたが、後半に光あり
GBPJPYのMLScore GF-T4は -492円。
前半に大きな損切りがあり、結果としてはマイナスです。
ただ、後半には +252円、+255円のTPもあり、完全に機能していないわけではありませんでした。
このBotは、今回かなり大きく改善しました。
もともとはMT5スコア判定Botに近く、エントリー判断が中心でした。
しかし、実運用ではエントリー精度だけでは足りません。
損益比、スプレッド、ログ不足、出口戦略、安全性が重要になります。
そこでまず、エントリー候補を breakout と range に分けました。
breakoutは順張り。
rangeは逆張り。
さらに、トレンド強度、レンジ内の位置、レンジ幅、ローソク足の実体比率、終値ブレイク判定、strategy種別などの特徴量を追加しました。
これにより、モデルは単に「買いか売りか」だけでなく、「これは順張りなのか、逆張りなのか」も含めて学習できるようになりました。
backfillでログ不足を補う
リアル稼働だけでログを貯めると時間がかかります。
そこで、過去チャートから人工的にログを作るbackfill機能を追加しました。
今回のbackfill結果は以下です。
rows: 2475
labeled: 1211
wins: 1000
losses: 211モデルは27個の特徴量で再学習済みです。
検証結果は以下でした。
features: 27
accuracy: 0.8066
AUC: 0.6836threshold reportでは、backfill上では以下が最良でした。
threshold: 90
trades: 720
win_rate: 0.9889
expectancy: 24.06 pipsもちろん、これはリアル成績ではありません。
実際の約定、スリッページ、スプレッド急拡大、ポジション制約は完全には再現できません。
それでも、「ログがないから勘で動かす」状態からは一歩進みました。
strategy別TP/SLに分離
もうひとつ大きな改善は、TP/SLをstrategy別に分けたことです。
以前は、順張りでも逆張りでも同じTP/SLでした。
現在は、breakoutとrangeで別々のTP/SLを持てます。
現時点の最適化結果は以下です。
breakout: TP 25 pips / SL 60 pips
range: TP 25 pips / SL 60 pips今はたまたま同じ値ですが、仕組みとしては分離されています。
今後ログが増えれば、順張りは広め、逆張りは短め、というように自然に別々の出口へ更新できます。
リアル稼働での制限
リアル稼働向けには、以下の制限も入れました。
最大スプレッド: 20 points
1日の全体エントリー上限: 4回
breakout上限: 2回
range上限: 2回さらに、発注ログには実際に使ったstrategy、TP/SL pips、スプレッドも残すようにしました。
これで、あとから「どのstrategyが、どの出口条件で、どの程度機能したか」を追えます。
今日の結論
今日の合計は -1,068円。
勝率だけを見ると、そこまで悪く見えない部分もあります。
でも問題は損益比です。
小さく勝って、大きく負ける形がまだ残っています。
ただし、今回の負けは次の改善に直結しています。
LLMBridgeTraderにはMLゲートを追加。
MLScore Botにはbreakout/range分離、strategy別TP/SL、backfill、再学習、安全弁を追加。
GateGrid AIは多段フィルターの有効性を確認。
BoundSniperはTradingView側ロジック改善の課題を確認。
つまり今日は、ただ負けた日ではなく、Botを「学習して育てる前提の自動売買システム」に近づける日でした。
次に見るべきは、strategy別の勝率、平均損益、スプレッド、タイムアウト、そして人工ログの期待値とリアルログのズレです。
ここからは、勝った負けたよりも、ズレを測って直すフェーズに入ります。