任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 712

 
artmedia70:
答案应该是自己给出的。按开放时间对开放职位进行排序。然后通过排序的数组中的列表关闭它们。

对我来说很复杂,我想)有一个代码可以按照开单的顺序关闭订单

//+------------------------------------------------------------------+
//|                 Закрыть все ордера                               |
//+------------------------------------------------------------------+


double ClossAllOrders ()

{
  for(int i=0; i<OrdersTotal(); )
  {
    if ( !OrderSelect(i, SELECT_BY_POS) )
      break;
    
    int type   = OrderType();

    bool result = false;
    
    switch(type)
    {
      //Close opened long positions
      case OP_BUY       : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 3, Lime );
                          break;
      
      //Close opened short positions
      case OP_SELL      : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), 3, Lime );
                          break;

      //Close pending orders
      case OP_BUYLIMIT  :
      case OP_BUYSTOP   :
      case OP_SELLLIMIT :
      case OP_SELLSTOP  : result = OrderDelete( OrderTicket() );
    }
    
    if(result == false)
    {
      Print("Order " , OrderTicket() , " failed to close. Error:" , GetLastError() );
      i++;
      Sleep(500);
    }  
  }
}

// End

根据我的理解,这里的排序是以OrderTicket 为代价的。

如何把它放在代码中)

 
_new-rena:

138 - "要求的价格已经过期,或者出价和要价混在一起。

开盘/收盘价不能重新计算,因为它就在那里,但这里有一个问题(你需要用MarketInfo查询价格 并给它一个值,并把 这个 重新分配给另一个变量)。

谢谢你的提示)但事实证明,我的问题是在EA本身,而不是在这个函数。
 
如何记住某一个层次。比方说,它是一支蜡烛的最大值。但把这个值分配给一个变量是通过if.而在另一种情况下,这个变量是零。即我需要以某种方式记住某个价格。
 
305:
如何记住某一个级别。假设它是一支蜡烛的最大值。但把这个值分配给一个变量是通过if.而在另一种情况下,这个变量是零。也就是说,我需要以某种方式记住某个价格。
也许https://book.mql4.com/ru/variables/arrays 可以提供帮助。我想下面有你需要的东西。

时间序列数组

 
这不起作用,我想试试水平线 的方法
 
305:
这个不起作用,我想试试水平线。

kim有很多不同的功能,可以记住任何东西,大约需要3分钟来跑完名字,也许你可以找到https://www.mql5.com/ru/forum/131859

 
7Konstantin7:

对我来说很复杂,我想)有一个代码可以按照开单的顺序关闭订单

根据我的理解,这里的排序是以OrderTicket 为代价的。

我想把它放在代码中)

请告诉我,按一定顺序而不是按一排关闭订单的秘密是什么?几秒钟的时间怎么会改变账户的寿命?

谢谢。

 
Roger:

告诉我,按照一定的顺序而不是连续关闭订单的秘密是什么?几秒钟的时间怎么会对一个账户的生活产生影响?

谢谢。

让我们来看看那个我从未设法重写的函数(,它按照开仓的顺序关闭订单:shuffle

这个函数先关闭所有盈利的订单,然后关闭所有亏损的订单,这导致堆栈中出现一个丑陋的平衡图,再加上错误的数据:最大缩水、最大系列的亏损订单、最大利润和最大系列的盈利订单。

如果我以混合 模式关闭订单,那么就不会有这么大的价值。

如果你按照开仓顺序使用平仓单,平衡图将变得更加均匀,报表中的数据信息将更加充分。

假设我们交易了很多货币对,如果我们一个一个地覆盖所有的货币对,在我们到达之前,某些货币对的价格可能会消失。

如果我们按照开盘的顺序进行套利,我们将在一个货币对上收盘,然后在另一个货币对上收盘,以此类推,所以 更加多样化。

我认为MT4最多可以同时发送8个订单,但我不确定,在这种情况下,我们可以更快关闭。

 
7Konstantin7:

让我们来看看我无法改变()函数,使其按照开单顺序关闭订单的那个拖网:Shuffle

在这个函数中,所有盈利和亏损的订单首先被关闭,这导致堆栈中出现一个丑陋的平衡图,以及错误的数据:最大跌幅、最大系列的亏损订单、最大利润和最大系列的盈利订单。

然后,它变成了一个愚蠢的体面的过山车,例如,它上升了500美元,然后下降了400美元。如果我们不得不以混合 模式关闭订单,那么这样大的价值就不会存在。

如果我们按照开仓顺序使用平仓单,平衡图将变得更加平稳,报表中的数据信息将更加充分。

假设我们交易了很多货币对,如果我们一个接一个地关闭所有的货币对,在我们到达之前,某些货币对的价格可能会消失。

如果我们按照开盘的顺序进行套利,我们将在一个货币对上收盘,然后在另一个货币对上收盘,以此类推,所以 更加多样化。

我认为MT4最多可以同时发送8个订单,但我不确定,在这种情况下,我们可以更快关闭。

反向循环。寻找最早的开仓,关闭它,到周期的开始。继续下去,直到你用完了要关闭的头寸。
 
artmedia70:
反向循环。寻找最早的开放位置,关闭它,进入周期的开始。以这种方式继续下去,直到你用完了所有要关闭的头寸。

谢谢,我做不到,只是想也许有人能在该功能中涂鸦几行,或者能丢一个猫头鹰,最后的版本。我不认为这很难,但我不认为有人会帮忙。

在mql5上有4个学分可以给),如果有可能在成员之间转移。