MQL5のOrderModify関数でリアルアカウントでの指値変更が失敗する理由としては、以下の可能性が考えられます:
・ブローカー側の制限:HFMのリアルアカウントでは、特定の条件下で注文修正に制限がかかっている可能性があります。
・市場条件:リアルアカウントでは実際の市場条件が適用され、価格変動が激しい時や、スプレッドが広がっている時は注文修正が制限されることがあります。
・ストップレベル制限:ブローカーは現在価格からの最小距離(ストップレベル)を設定していることがあります。この距離内での注文修正は拒否されます。
・エラーコードの確認:OrderModify関数が失敗した場合、GetLastError()関数でエラーコードを取得し、具体的な失敗理由を確認することができます。
・権限の問題:リアルアカウントでは、特定の操作に対して追加の権限や認証が必要な場合があります。
デバッグ方法としては:
1. GetLastError()関数でエラーコードを取得し、具体的な失敗理由を確認する
2. Print()関数を使用して、注文の詳細情報やエラーコードをログに出力する
3. SymbolInfoInteger(Symbol(), SYMBOL_TRADE_STOPS_LEVEL)を使用して、現在のストップレベル制限を確認する
また、最新のMQL5では、OrderModify関数よりもTradeクラスのPositionModify()メソッドを使用することが推奨されています。こちらも試してみることをお勧めします。