for(int i=0; i< OrdersTotal(); i++) // For market and pending orders
{
if((OrderSelect(i,SELECT_BY_POS)==true) //If there is the next one
&& (OrderSymbol()==Symbol()) && OrderMagicNumber() == Magic_A )
{
for(int i=1; i<=OrdersTotal(); i++) // Order searching cycle
{
if (OrderSelect(i-1,SELECT_BY_POS)==true) // If the next is available
{ // Order analysis://----------------------------------------------------------------------- 3 --if (OrderSymbol()!= Symb) continue;
int TotalNumberOfOrders; // <-- this variable will hold the number of orders currently in the Trade pool
TotalNumberOfOrders = OrdersTotal(); // <-- we store the number of Orders in the variablefor(PositionIndex = TotalNumberOfOrders - 1; PositionIndex >= 0 ; PositionIndex --) // <-- for loop to loop through all Orders . . COUNT DOWN TO ZERO !
このようなループをしたらどうでしょう。
これは、mql4の本で紹介されている、注文のための配列を作成するためのループです。
注文が終了するたびにOrdersTotal()は勝手に減っていくのでしょうか?
//***************************************************************************
私はちょうど本を見ました、以下は順序を閉じるために与えられたループです、したがって、答えはイエスです:( https://book.mql4.com/trading/orderclose )
このようなループをするとどうでしょう。
これは、mql4の本で紹介されている、注文のための配列を作成するためのループです。
注文が終了するたびにOrdersTotal()は勝手に減っていくのでしょうか?
TotalNumberOfOrders = OrdersTotal() と宣言しなくても良いのでしょうか?
つまり、そのままOrdersTotal() を使えばいいのです。
for ( x = OrdersTotal() - 1 ...... )
現在それを使用していますが、同じであっても出力に自信がありません。OrdersTotal()がforループの中にあるので、1つの注文を閉じると何度もOrdersTotalに影響するのでしょうか?
いいえ、OrdersTotalをチェックして いるのではなく、PositionIndexをループを継続する条件としてチェックしているからです。
このトピックを説明するのは素晴らしい仕事です。グラフィックなしでの説明は不可能です...。よくやった。
私がカウントダウン方式ではなく、カウントアップ方式を使わざるを得なかったのは、あるブローカーで
で、一番新しい取引を最初に決済させてくれませんでした...なんと愚かな。
もう一度言うよ......よくやった......。
専門家の皆さん、この解決策についてどう思われますか?