ストップレベルとフリーズレベル|SLが置けない本当の理由
目次
SLが置けないのは、EAの不具合とは限らない
結論から書きます。SLが置けない、またはSLを動かせない原因の多くは、EAのロジックではなく**銘柄仕様で決まっている「最小距離」**です。MT5には、現在の価格からどれだけ離さないとSL・TPを置けないかを決める「ストップレベル」と、価格がSL・TPや待機注文に近づいたときに変更を禁止する「フリーズレベル」があります。
厄介なのは、この距離がいつも同じとは限らないことです。普段は問題なく通る距離のSLが、指標発表の直後にだけ拒否されることがあります。私たちがEAを作るときは、この距離を発注前に必ずチェックするようにしています。この記事では、仕組みと確認手順、それにEA側の対策の限界をまとめます。
おすすめブローカー比較 →
🎁 無料EAをダウンロード📧 無料メール講座(全8通)+登録者限定 MT5 インジケーター13本パック
※ プライバシーは厳守。配信解除はいつでも可能です。
仕組み:2つの「最小距離」
ストップレベル
ストップレベル(SYMBOL_TRADE_STOPS_LEVEL)は、現在の価格からSL・TPまでの最小距離をポイントで表したものです。買いポジションなら決済の基準になるBidから、売りポジションならAskから測ります。この距離より近いSLを付けようとすると、注文はサーバーに拒否され、MT5のリターンコードでは「Invalid stops」(10016)になります。
フリーズレベル
フリーズレベル(SYMBOL_TRADE_FREEZE_LEVEL)は、価格がSL・TPや待機注文の価格に近づいたとき、その注文を変更・削除できなくなる距離です。トレーリングストップのEAが、決済の直前でSLを動かそうとして拒否されるのは、たいていこちらが原因です。リターンコードは「Frozen」(10029)です。
| 項目 | 意味 | 影響を受ける操作 | 主な拒否コード |
|---|---|---|---|
| ストップレベル | 現在価格からSL・TPまでの最小距離 | 新規発注時のSL/TP指定、SLの変更 | Invalid stops(10016) |
| フリーズレベル | SL・TPや待機注文に価格が近づいたときに変更を禁止する距離 | SL/TPの変更、待機注文の変更・取消 | Frozen(10029) |
「0」は制限なしという意味ではない
銘柄仕様でストップレベルが0と表示されていても、どこまで近くに置いても通るとは限りません。0の場合はサーバー側で別のルール(スプレッドを基準にした距離など)を使う業者もあるようです。業者ごとの実装をすべて確認できているわけではないので、私たちは**「0=スプレッド以上は離す」**と保守的に扱っています。
指標発表時に距離が広がる
ストップレベルとフリーズレベルは固定値ではなく、業者の判断で変わることがあります。重要指標の発表前後、週明けの取引開始直後、ロールオーバーの時間帯などに一時的に広げる業者があります。さらにスプレッドも同じ時間帯に広がるので、Askから測る売りのSLは、実際の値動き以上に遠くまで離さないといけなくなります。
つまり、普段の銘柄仕様を見て「この距離なら大丈夫」と判断しても、いちばん重要な場面で通らないことがあるわけです。SLを付けずにエントリーだけ通ってしまう作りのEAだと、無防備なポジションが残る危険もあります。
確認手順とチェックリスト
使っている口座で、次の項目を確認してください。
- 銘柄仕様を開く:気配値表示で銘柄を右クリック →「仕様」。「ストップレベル」「フリーズレベル」の値をメモする(単位はポイント)。
- ポイントを価格に換算する:XAUUSDとUSDJPYでは1ポイントの価格幅が違うので、桁数を確認したうえで価格差に直す。
- EAのSL距離と比べる:EAの設定やロジックで使うSL距離が、ストップレベルにスプレッドを足した距離より十分に大きいかを確認する。
- 指標発表の前後にもう一度見る:同じ画面を発表の直前にも開き、値が変わるかを確認する。変わる業者かどうかは、実際に見るまで分かりません。
- ログを確認する:「操作ログ」タブと「エキスパート」タブで「Invalid stops」や「Frozen」が出ていないかを確認する。発注が拒否されたときの切り分け方はEA・MT5ノウハウにもまとめています。
EAの設定方法そのものはEA設定方法、業者ごとの取引条件の違いはFX業者比較を参考にしてください。
EA側の最小距離チェック
私たちのEAでは、発注する直前に次の順番でチェックしています。
- その時点のストップレベル・フリーズレベル・スプレッドを毎回取得する(起動時に1回だけ取得した値は使わない)
- 最小距離は「ストップレベルとフリーズレベルの大きい方」にスプレッドと少しの余裕を足した値とする
- SLがこの距離より近い場合は、SLを勝手に広げずにエントリーを見送る
SLを自動で広げる設計にしない理由は、SLを広げると1回あたりの損失額が設計より大きくなるからです。ロットをSL距離から逆算している場合、SLだけを広げるとリスク%が崩れます。見送ればチャンスは減りますが、想定していないリスクを取るよりは良いと私たちは判断しています。
限界と注意点
このチェックで、すべての問題が防げるわけではありません。
- バックテストでは再現しにくい:私たちの理解では、MT5のストレステスターは銘柄仕様の現在の設定を使っており、過去の指標発表時に距離が広がったことまでは再現しません。SLが短いEAほど、テスト結果と実際の結果の差が大きくなる可能性があります。たとえばGOLD TRIPWIREはバックテストでの平均保有時間が0:21:12と短いタイプなので、こうした差の影響を受けやすい部類だと考えています。
- 見送りが成績を変える:チェックによって見送ったトレードの中には、本来なら勝っていたものも含まれます。チェックを入れると、バックテストとは違う取引になります。
- 発注の瞬間にも変わる:チェックを通過してからサーバーに届くまでの間に条件が変わることもあり、拒否を完全にゼロにはできません。
- SL自体が滑る:SLを置けても、相場が急変すればSLより不利な価格で約定することがあります。最小距離のチェックはスリッページ対策ではありません。
まとめ
- SLが置けない原因の多くは、銘柄仕様のストップレベル(最小距離)とフリーズレベル(変更禁止の距離)
- 拒否されるとリターンコードは「Invalid stops」または「Frozen」になる
- ストップレベル0は「制限なし」とは限らない。少なくともスプレッド以上は離す
- 指標発表の前後などに距離やスプレッドが広がる業者があり、いちばん重要な場面で拒否されることがある
- EA側では毎回その時点の値を取得してチェックし、足りなければSLを広げずに見送るのが私たちの設計
- バックテストは過去の距離の変化を再現しにくい。SLが短いEAほど、実際の運用での差に注意する
関連記事
📧 無料メール講座(全8通)+登録者限定 MT5 インジケーター13本パック
※ プライバシーは厳守。配信解除はいつでも可能です。