MQL5のOrderModify関数で未決済のポジションの指値を変更する場合,デモアカウントでは指値の変更が出来るのに,リアルアカウントでは指値の変更が出来ない理由を教えて下さい。使用ブローカー: 両者共に「HFM」使用プラットフォーム: 両者共に「MetaTrade5」使用口座タイプ :両者共に「セント口座」※1 使用しているプログラムにデモ口座限定の縛りを入れる処理は一切記述しておりません。※2 ±1000pips程度の広い値幅への変更ですら受け付けません。※3 OrderModify関数使用後の戻り値は「false」でした。

1件の回答

回答を書く

1143442

2026-04-17 08:00

+ フォロー

MQL5のOrderModify関数でリアルアカウントでの指値変更が失敗する理由としては、以下の可能性が考えられます:

・ブローカー側の制限:HFMのリアルアカウントでは、特定の条件下で注文修正に制限がかかっている可能性があります。

・市場条件:リアルアカウントでは実際の市場条件が適用され、価格変動が激しい時や、スプレッドが広がっている時は注文修正が制限されることがあります。

・ストップレベル制限:ブローカーは現在価格からの最小距離(ストップレベル)を設定していることがあります。この距離内での注文修正は拒否されます。

・エラーコードの確認:OrderModify関数が失敗した場合、GetLastError()関数でエラーコードを取得し、具体的な失敗理由を確認することができます。

・権限の問題:リアルアカウントでは、特定の操作に対して追加の権限や認証が必要な場合があります。

デバッグ方法としては:
1. GetLastError()関数でエラーコードを取得し、具体的な失敗理由を確認する
2. Print()関数を使用して、注文の詳細情報やエラーコードをログに出力する
3. SymbolInfoInteger(Symbol(), SYMBOL_TRADE_STOPS_LEVEL)を使用して、現在のストップレベル制限を確認する

また、最新のMQL5では、OrderModify関数よりもTradeクラスのPositionModify()メソッドを使用することが推奨されています。こちらも試してみることをお勧めします。

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

関連質問

Copyright © 2026 AQ188.com All Rights Reserved.

博識 著作権所有