新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1725

 
EVGENII SHELIPOV #:

阿列克谢,请放大图片。

放大了。我看到的正是箭头显示的第二低的订单价格和不符合倒数第二个订单标准的订单票。运行我的代码,你会看到最低订单的票。如果你想得到的不是BUY订单,而是从底部开始的第二个订单,你可以完成这个功能。

 
Alexey Viktorov #:

放大了。我看到的是指向第二低订单价格的箭头,以及不符合倒数第二订单标准的订单票。如果你运行我的代码,你会看到最低订单的票。你可以开发这个函数,得到的不是下面的BUY订单,而是第二个订单。

我只能问,在下一个订单票确定的代码中,哪里有错误。

//+----------------------------------------------------------------------------+
//| Расчет тикета предпоследнего ордера в сетке                                |
//+----------------------------------------------------------------------------+
int GetTicketPenultimateOrder()
  {
   penultimate_ticket = 0;
     {
      for(int cnt = OrdersTotal() - 1; cnt >= 0; cnt--)
        {
         if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES))
           {
            if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
              {
               if(OrderType() == OP_BUY || OrderType() == OP_SELL)
                 {
                  if(OrderTicket() > penultimate_ticket && penultimate_ticket != GetTicketMaxOrder())
                     penultimate_ticket = OrderTicket();
                 }
              }
           }
        }
     }
   return(penultimate_ticket);
  }
 
EVGENII SHELIPOV #:

我只能作为我的问题,在确定倒数第二张订单的票的代码中哪里有错误?

错误在于,订单的价格没有以任何方式被考虑在内。

在你的对话中的某个地方,有建议将整个事情放在一个数组中,并对其进行排序,以获得任何票据的数量。但作为回应,我不明白该如何做。

像这样

//+------------------------------------------------------------------+
//| Расчет тикета второго снизу ордера BUY в сетке                   |
//+------------------------------------------------------------------+
int GetTicketMaxOrder()
 {
  int total = OrdersTotal(),
      arrSize = 0;
  double arr[][2];
  for(int cnt = 0; cnt < total; cnt++)
   {
    if(OrderSelect(cnt, SELECT_BY_POS) && OrderSymbol() == Symbol())// && OrderMagicNumber() == Magic)
     {
      if(OrderType() == OP_BUY)
       {
        arrSize = ArrayRange(arr, 0);
        ArrayResize(arr, arrSize+1);
        arr[arrSize][0] = OrderOpenPrice();
        arr[arrSize][1] = OrderTicket();
       }
     }
   }
  ArraySort(arr);
  return((int)arr[1][1]);
 }
/*****************************End program****************************/
 
EVGENII SHELIPOV #:

我只能回答我的问题,确定倒数第二个订单的票的代码中的错误在哪里?

//+----------------------------------------------------------------------------+
//| Расчет тикета предпоследнего ордера в сетке                                |
//+----------------------------------------------------------------------------+
int GetTicketPenultimateOrder()
  {
   penultimate_ticket = 0;
     {
      for(int cnt = OrdersTotal() - 1; cnt >= 0; cnt--)
        {
         if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES))
           {
            if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
              {
               if(OrderType() == OP_BUY || OrderType() == OP_SELL)
                 {
                  if(OrderTicket() > penultimate_ticket && penultimate_ticket != GetTicketMaxOrder())
                     penultimate_ticket = OrderTicket();
                 }
              }
           }
        }
     }
   return(penultimate_ticket);
  }

另一个严重的错误是,当你在循环中搜索订单时,你调用了一个函数,而这个函数也在搜索订单......而当代码执行返回到函数时,另一个订单已经被选中......而OrderTicket()的返回结果与 你的预期完全不同

 
Alexey Viktorov #:

错误在于,订单的价格没有以任何方式被考虑在内。

在你的对话中的某个地方有一个建议,就是把整个东西放到一个数组中,然后对它进行排序,以按计数获得任何票据。但作为回应,我不明白该如何做。

像这样

阿列克谢,你能对日志中的错误进行评论吗?

2021.11.07 12:17:40.791 2020.01.02 06:00:00 eGriD2 EURUSD,M5: ArraySort函数的起始位置0不正确

2021.11.07 12:17:40.791 2020.01.02 06:00:00 eGriD2 EURUSD,M5: array out of range in 'eGriD2.mq4' (664,18)。

2021.11.07 12:17:40.792 2020.01.02 06:00:00 由于EA出现严重错误,测试通道停止。


 
EVGENII SHELIPOV # :

阿列克谢,你能对日志中的错误发表评论吗?

2021.11.07 12:17:40.791 2020.01.02 06:00:00 eGriD2 EURUSD,M5: ArraySort函数的起始位置0不正确

2021.11.07 12:17:40.791 2020.01.02 06:00:00 eGriD2 EURUSD,M5: array out of range in 'eGriD2.mq4' (664,18)。

2021.11.07 12:17:40.792 2020.01.02 06:00:00 由于EA出现严重错误,测试通道停止。


这些错误不是我的代码。我不精通英语,我使用的是本网站的内部翻译器。它是这样翻译的。

ArraySort函数的起始位置0不正确 - ArraySort函数的起始位置0不正确

array out of range in 'eGriD2.mq4' (664,18) - array out of range in 'eGriD2.mq4' (664,18)。

由于EA中的一个关键错误,测试通过停止了

所以工作室里的代码。

ps;尽管如此,如果你在少于两个订单时调用这个函数,会出现这些错误。我没有保护它免受.........,但我想我应该这样做。

这正是我完全不想帮助别人的原因......你指望着对我的提示进行周到的应用,但.........

 
下午好。你能告诉我如何实现对n条的最小/最大搜索吗?
 
Snajper007 #:
下午好。你能告诉我如何实现n条的最小/最大搜索吗?
iHighest

淘宝网

 
MakarFX

这里有另一个问题。有一个指标可以画出一个分形。如何检查在N条中是否有信号?

 
Snajper007 #:

这里有另一个问题。有一个指标可以画出一个分形。如何检查在N条中是否有信号?

首先,这取决于绘制分形的指标
原因: