自作EAでポジションを管理していると、「最大ポジション数を25に設定したところ、注文が1件入ると待機ポジションも25件表示される」といった現象に悩むことがあります。これはEAの注文ロジックや設定方法に起因することが多く、正しく対処すれば回避可能です。
待機ポジションが大量に表示される仕組みとは?
MT4/MT5において、「待機ポジション(Pending Order)」は、まだ成立していないが条件が満たされれば発動される注文です。これが一度に大量に表示される場合、EAのロジックが以下のように組まれている可能性があります。
- 条件に合致しないうちから複数の「Buy Limit」や「Sell Limit」などを同時に発注している
- 内部でループして最大ポジション数分の注文を先に並べてしまっている
このような場合、ポジションはまだ成立していなくても、チャート上やターミナル上で「待機中注文」として25件すべてが表示されてしまうのです。
本当に必要なポジションだけ表示させるには?
EAの注文条件において、注文発動のトリガー条件が発生してから初めて発注されるように制御する必要があります。
例えば、下記のようにコード上で条件分岐させて1件ずつ追加注文を入れるようにすれば、待機注文が表示されることはありません。
if(OrdersTotal() < MaxOrders && 条件を満たした場合){ OrderSend(...); }
これにより、最大25件の注文可能数を確保しつつ、実際に必要な注文だけを発行できます。
「OrderSend」を繰り返し使用していないか確認しよう
自作EAでありがちなミスとして、「for文」や「while文」で無条件に注文を25件ループで送ってしまっていることがあります。
以下のようなコードになっていないか確認してみてください。
for(int i = 0; i < MaxOrders; i++){ OrderSend(...); }
これでは、条件を満たしていなくても一度に25件の待機注文が並んでしまう原因になります。条件とロジックの見直しが必須です。
待機注文の視認性を制御するには?
MT4やMT5では、UI上での表示を完全に非表示にすることはできません。ただし、チャート上の表示を減らすには。
- 「チャートのプロパティ」→「表示」タブから「注文レベルの表示」をオフにする
- EA内で「Comment()」や「ObjectsDeleteAll()」などを使って視覚的ノイズを減らす
といった方法があります。ただし、これはあくまで表示を減らすもので、実際の待機注文はサーバー上に残るため、根本的には注文ロジックの修正が必要です。
設定パラメータでも制御できるようにすると便利
EAに「待機注文モード」のような外部パラメータを作成し、true/falseで切り替えられるようにしておくと、後の調整がしやすくなります。
extern bool UsePendingOrders = false;
このようにして、開発段階でも本番運用でも柔軟な挙動制御が可能になります。
まとめ:EAで待機注文を減らすにはロジックの工夫がカギ
最大ポジション数を設定しても、ロジックによってはすべてが待機注文として表示されてしまうケースがあります。この問題を解消するには。
- 注文発行のトリガー条件を厳密に設計する
- ループ処理での注文発行を避ける
- 設定パラメータで挙動を柔軟に管理する
といった対応が有効です。EAの設計次第で大きく改善できますので、一度コードの見直しをおすすめします。

こんにちは!利益の管理人です。このブログは投資する人を増やしたいという思いから開設し運営しています。株式投資をメインに分散投資をしています。
コメント