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作为继续循环的条件。
解释这个主题的工作做得很好!没有图形,就无法解释......。做得好。
我唯一一次被迫使用上升法而不是倒数法是在一个经纪人身上。
它对先进先出的做法非常不满,不允许我先关闭最新的交易....,这太愚蠢了。
我再次说......做得很好......。
专家们好,你们对这个解决方案有什么看法?