指標発表の瞬間に損切りを置こうとしたら注文が弾かれた、って経験ありませんか。私はあります。で、そういうときってだいたい「滑った」「相場が速すぎた」で片付けちゃうんですよね。
でも実際のところ、MT5には「相場がどうだったか」とは無関係に、仕様として注文を弾く門番がいくつもいます。しかもそれは業者ごとに値が違っていて、自分の口座の値は1分で確認できるんですよ。
今回はMQL5の公式リファレンス(MetaQuotes社がMT5開発者向けに出している一次資料)を読んで、その門番を4つに整理しました。そのうえで「その仕様が実際には何pips・何円・何ロットに化けるのか」を自分で計算して早見表にしています。
門番①: ストップレベル — 損切りを「近づけられる限界」
MT5の銘柄仕様にはSYMBOL_TRADE_STOPS_LEVELという値があります。公式リファレンスの定義は「ストップ注文を置くために、現在の終値から最低限空けなければならない距離(ポイント単位)」なんですね。
公式のサンプルコードがこの値を使って損切り・利確の価格を計算しているので、SL/TPもこの距離の制約を受けるという作りなんですよ。近すぎると弾かれます。
で、問題は単位が「ポイント」なこと。小数点以下3桁(円ペア)・5桁(ドルストレート)表示の業者なら10ポイント=1pipsなんですけど、これがそのまま「置ける最短の損切り幅」になるので、金額に直すと結構な話になるんですよ。1ロット=10万通貨、1ドル=155円と仮定して計算してみました。
| ストップレベル | 最短の距離 | ドル円1ロットの最小損失 | ユーロドル1ロットの最小損失 |
|---|---|---|---|
| 0ポイント | 制限なし | — | — |
| 10ポイント | 1.0pips | 1,000円 | 1,550円 |
| 20ポイント | 2.0pips | 2,000円 | 3,100円 |
| 30ポイント | 3.0pips | 3,000円 | 4,650円 |
| 50ポイント | 5.0pips | 5,000円 | 7,750円 |
| 100ポイント | 10.0pips | 10,000円 | 15,500円 |
たとえば「損切り3pips、利確5pips」みたいなスキャルピングを組んでいる人は、ストップレベルが30ポイントの銘柄だとその損切りがそもそも置けません。手法が悪いんじゃなくて、門番に止められてるだけなんですよね。
POINT
面白かったのが、公式リファレンスのサンプルコード自体が「念のため」の余裕を取っていることなんですよ。ストップレベルが0のときは150ポイント(=15pips)、0以外のときはストップレベル+50ポイント(=+5pips)を使うようになっています。開発元ですら、ギリギリに置きにいかない前提で書いてるわけなんですよね。
門番②: フリーズレベル — 「動かせなくなる」距離
こっちはあまり話題にならないんですけど、個人的にはストップレベルより厄介だと思っています。SYMBOL_TRADE_FREEZE_LEVELという値で、公式の定義は「取引操作を凍結する距離(ポイント)」の一行だけ。
何がどう凍結されるかまでは書かれていないんですけど、戻り値のほうにTRADE_RETCODE_FROZEN(10029)「注文またはポジションが凍結されている」というコードがちゃんと用意されています。つまり、価格がこの距離の内側に入ると、待機注文やポジションへの操作が受け付けられなくなる作りなんですね。
これ、場面を想像するとわかりやすいと思います。指標が出て価格が自分の逆指値のすぐ近くまで飛んできた——まさにその「今すぐ損切りを動かしたい」瞬間が、仕様上いちばん操作を受け付けにくいタイミングなんですよ。慌ててから動かす前提の設計は、仕様のほうが先に許してくれないと考えておいたほうがいいと思います。
門番③: ロットの刻み — リスク管理の精度そのもの
銘柄仕様にはVOLUME_MIN(最小ロット)・VOLUME_STEP(ロットの刻み)・VOLUME_MAX・VOLUME_LIMITがあります。合っていないロットを送るとTRADE_RETCODE_INVALID_VOLUME(10014)で弾かれます。
「0.01刻みか0.1刻みか」なんて誤差でしょ、と思うじゃないですか。私もそう思ってたんですけど、計算してみたら全然誤差じゃなかったんですよね。
残高5万〜100万円(5万円刻み・20通り)×損切り5〜60pips(5pips刻み・12通り)の240通りについて、「リスク許容2%で理論上のロットを出して、刻みに合わせて切り捨てたら実際のリスクが何%ズレるか」を全部計算しました。ドル円・1pip=1,000円/ロットです。
| ロットの刻み | ズレが±10%以内 | リスク超過を強制される | 最悪のズレ |
|---|---|---|---|
| 0.01刻み | 228/240(95.0%) | 0件 | −45% |
| 0.1刻み | 130/240(54.2%) | 30件(12.5%) | +500% |
| 1.0刻み | 12/240(5.0%) | 206件(85.8%) | +5,900% |
「リスク超過を強制される」というのは、計算上のロットが最小ロットを下回っていて、ルールを守ろうとすると発注自体ができない状態のことです。具体例を挙げると、残高10万円・損切り50pips・リスク2%なら理論値は0.04ロット。0.01刻みならぴったり置けますけど、0.1刻みの口座だと最小の0.1ロットしか選べなくて、リスクが設定の2.5倍(+150%)に膨らみます。
逆方向のズレもあって、残高10万円・損切り7pipsだと理論値0.286ロットが0.1刻みでは0.2ロットに切り捨てられて、ポジションが3割小さくなるんですよ。こっちは損はしませんけど、想定していた期待値ではなくなるんですよね。
注意
上の数字は「刻みが粗い口座は危ない」という話ではなくて、資金が小さいほど刻みの影響をモロに受けるという話です。残高が増えると理論ロットが大きくなるので、同じ刻みでもズレの比率は小さくなります。口座タイプを選ぶときは、自分の残高と損切り幅の組み合わせで一度この計算をしてみるのがおすすめなんですよね。
門番④: 充足方式 — 全部約定か、取れた分だけか
4つめはSYMBOL_FILLING_MODE。「数量が足りなかったときにどうするか」のルールで、ここが合っていないとTRADE_RETCODE_INVALID_FILL(10030)で弾かれます。10ロット注文したのに板に6ロットしかなかった場合、公式リファレンスの定義どおりだとこうなります。
| 方式 | 6ロットしか無いとき | 公式の定義 |
|---|---|---|
| FOK(Fill or Kill) | 0ロット。不成立 | 指定した数量ちょうどでしか約定できない |
| IOC(Immediate or Cancel) | 6ロット約定・残り4は取消 | 取れる分だけ約定し、残りはキャンセル |
| Return | 6ロット約定・残り4は注文として残る | 部分約定の残りはキャンセルされず処理が続く |
| BOC(Book or Cancel) | 即約定できるなら取消 | 板に置くだけ。指値・ストップリミット専用 |
ここで地味な落とし穴が1個あって、充足方式を指定しないと自動的にReturnが入る仕様なんですね。でもReturnは「Market execution(成行執行)」の銘柄では使えないと明記されています。海外FXの口座はMarket executionが多いんですけど、EAやスクリプトで充足方式を省略すると、相場と関係なくその一行で弾かれ続けます。
弾かれたときのコードを読めるようにしておく
MT5は弾いた理由を必ず数字で返してきます。全部覚える必要はないんですけど、この6つは「相場のせい」ではなく「銘柄仕様に合っていないせい」なので、見分けられると対処が早くなるんですよね。
| コード | 意味 | 直し方 |
|---|---|---|
| 10014 | ロットが不正 | 最小・最大・刻みに合わせる |
| 10016 | SL/TPが不正 | ストップレベルより離す |
| 10029 | 注文・ポジションが凍結 | フリーズレベルの外に出るまで待つ |
| 10030 | 充足方式が不正 | FOK/IOCを明示的に指定する |
| 10034 | 建玉と注文の合計が上限 | VOLUME_LIMITを確認する |
| 10035 | 注文種別が禁止されている | その銘柄で使える注文種別を確認 |
ちなみに10004(リクオート)・10020(価格が変わった)・10021(気配値が無い)は、こっちとは逆に純粋に相場側の理由です。許容スリッページ(MT5ではdeviationという項目で、これもポイント単位)を広げれば通る可能性が出てきます。
自分の口座の値を確認する方法
ここまでの門番の値は、全部MT5の画面から1分で読めます。気配値表示で銘柄を右クリックして「仕様」を開くだけなんですよ。ストップレベル・フリーズレベル・最小ロット・ロットステップ・充足方式が全部並んでいます。
私も一度これをやって、取引する銘柄の分だけスプレッドシートに書き出してみたんですよ。正直、口座を作るときはスプレッドとレバレッジしか見ていなかったので、同じ業者でも銘柄によって値が違うことに結構驚きました。手法を組む前にこの表を作っておくだけで、「なぜか通らない注文」で悩む時間がかなり減ると感じています。
注意
今回の仕様の定義はMQL5の公式リファレンスから取っていますが、具体的な数値(ストップレベルが何ポイントか等)は業者・口座タイプ・銘柄ごとに違い、業者側の判断でいつでも変わります。本記事の表はあくまで「その値だと何pips・何円になるか」の換算表です。実際の値は必ずご自身の口座の「仕様」画面と各社公式サイトでご確認ください。
この観点で業者を見るなら
損切りを小さく置きたいスキャルピング寄りの手法だと、まず効いてくるのが門番①のストップレベルです。ここが大きいと、手法そのものが成立しなくなるんですよね。
複数の情報源で確認した限りでは、スキャルピングを看板にしている業者はストップレベルを0に寄せる傾向があって、Exnessもその方針を打ち出していると紹介されています。ただ私が確認できた情報源はいずれも二次ソースで、しかも数年前のものも混ざっていました。この手の数値は変わるので、最新は公式サイトと実際の口座の「仕様」画面で見るのが確実だと思います。ロットの刻みが0.01かどうかも、合わせて見ておきたいところですね。
FX取引はレバレッジを用いた取引であり、預けた資金(元本)を上回る損失が生じる可能性があります。本記事は情報提供を目的としたものであり、投資を勧誘するものではありません。取引を行う際は自己責任・余裕資金の範囲で行い、各社公式サイトで最新のリスク説明書・規約を必ずご確認ください。
まとめ
MT5が注文を弾く門番は、大きく分けてこの4つでした。
- ストップレベル: 損切り・利確を現在値からどれだけ離す必要があるか。30ポイント=3pips=ドル円1ロットで3,000円が最低ライン
- フリーズレベル: 価格が近づくと操作を受け付けなくなる距離。慌ててから動かす前提の設計は通らない
- ロットの刻み: 240通りの計算では、0.01刻みなら95.0%が許容リスク±10%に収まる一方、0.1刻みだと54.2%まで落ちて12.5%は超過を強制される
- 充足方式: 省略するとReturnが入るが、Market executionの口座では使えない
どれも「知らないと相場のせいにしてしまう」タイプの仕様なんですよね。しかも全部、自分の口座の画面に最初から書いてあります。手法を疑う前に一度、仕様のほうを見てみるのがいいんじゃないかなと思います。
