MT5 の自作プログラムについてF XではEAを使っておらず、全て手動エントリー、決済をしているのですが、分析のためのバックテストとしてMT5で自分が作った条件をプログラムし、作動させたいと思っております。決まった日時で自動エントリー〜決済 SLは35pipsで作ったつもりでしたが、SLの作動がおかしい?ように感じます。。。何が原因かわかるかたおりますでしょうか。。。

1件の回答

回答を書く

1230200

2026-04-03 23:15

+ フォロー

【結論】

MT5で「SLを35pipsにしたつもりなのに挙動がおかしい」系は、

だいたい次のどれか(複合も多い)で説明できます。



────────────────────────

【原因として多い順】



1) pips と point(最小値幅)の換算ミス

・MT5/MQL5は基本「point」で価格差を扱います。

・通貨ペアが 5桁(例: EURUSD 1.12345) / 3桁(例: USDJPY 123.456) の場合、

1pip = 10point になりやすいです。

→ 35pipsのつもりで「35」だけ入れると、35point (=3.5pips相当)になってズレます。

※ゴールドや指数は「1pip相当」が銘柄ごとに違うので、さらにズレやすいです。



2) Buy/Sellで基準価格(Bid/Ask)を混同

・Buyの約定はAsk、Sellの約定はBidが基準。

・SLが刺さる判定はBid/Ask側で動くので、スプレッド分のズレが出ます。

→ 「チャート上はまだ到達してないのにSL」や「思ったより遠い/近い」が起きます。



3) ブローカー制限(StopsLevel / FreezeLevel)

・現在価格から近すぎるSL/TPは置けない・変更できない場合があります。

→ 注文や変更が失敗して「SLが入ってない/おかしい値になる」ことがあります。

※この場合は、注文結果(retcode)を見れば分かります。



4) SL設定のタイミング(約定前に計算してる/約定価格を反映してない)

・成行→約定→その約定価格を基準にSL計算→付与、が基本です。

→ 約定前の価格でSLを作ると、約定価格との差でズレます。



5) 価格の桁数/丸め(NormalizeDouble)不足

・銘柄の桁数に合わない価格を入れると拒否されることがあります。

→ SL設定が失敗・反映されない原因になります。



6) テスター設定(Open prices only 等)で判定が変に見える

・ストラテジーテスターのモデル次第で、SLの発動タイミングが変わって見えることがあります。

→ まず「Every tick(できれば実ティック)」で検証すると切り分けが早いです。



────────────────────────

【知恵袋での回答としてのまとめ(短く)】

「35pips」のつもりでも、MT5はpoint基準なので換算ミスが多いです。

またBuy/SellのBid/Ask基準とスプレッド、StopsLevel(最小ストップ距離)制限で

SLが置けない/想定と違って見えることもよくあります。

注文・変更の返り値(retcode)と銘柄のDigits/Point、換算式を確認すると原因が特定できます。



────────────────────────

【手順:簡易チェック(これだけ順にやればOK)】



(1) 銘柄の _Digits と _Point を確認

(2) 35pips → 何pointかを正しく換算(5桁/3桁なら「×10」になりがち)

(3) BuyはAsk基準、SellはBid基準でSL価格を作れているか確認

(4) StopsLevel/FreezeLevel を確認し、制限以上に離して置く

(5) SL価格は NormalizeDouble(price, _Digits) で丸める

(6) 注文/変更の結果(retcode)を必ずログに出す

(7) テスターは「Every tick(可能なら実ティック)」で再検証



(ここまでやれば、ほぼ原因に当たります)

うったえる有益だ(0)シェアするブックマークする

関連質問

Copyright © 2026 AQ188.com All Rights Reserved.

博識 著作権所有