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

 
MakarFX #:
下午

检查你的钱包)

 
Alexey Viktorov #:

我在一个主题中遇到了这个问题

我复制了它,看了看,什么都不懂,把它注释掉,然后就把它忘了。

现在我想起来了,我在我的测试代码中发现了它,但我在论坛上找不到它。我不明白宏是如何工作的,也许有人能解释它是如何工作的,或找到我复制它的问题......

一般来说,我需要以某种方式定义宏替换.........。

这一切在编译阶段都是有效的,但在加载程序时却不行。

 

祝大家好!!!!!

请你告诉我倒数第二张票的号码是什么?

有一个函数来确定最后的订单。

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

应用这个函数并假设max_ticket为-1的变体不起作用,因为EA交易多个工具,可能发生在最后一个和倒数第二个订单之间,另一个工具的订单会被打开。

我需要从所有订单中选择减去所剩的最大订单或最大订单后的下一个最高订单,或者可以由你决定。谢谢你。

 
Vitaly Muzichenko #:

这一切在编译时都是有效的,但在程序加载时就不一样了。

一个程序的加载不取决于它是如何被编译的吗?

 
EVGENII SHELIPOV #:

祝大家好!!!!!

该功能不能正常工作

int GetTicketMaxOrder()
  {
   max_ticket = 0;
     {
      for(int cnt = OrdersTotal() - 1; cnt >= 0; cnt--)
        {
         if(OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES))
           {
 
MakarFX #:

这个功能不能正常工作。

是的,Makar,你是对的,它可以被修复,但奇怪的是,这个功能像时钟一样工作。

 
MakarFX #:

正是如此。

是否有可能做通?

唯一的出路是编写你自己的参数面板并在OnInit()中使用,而不是使用标准的输入参数机制。
 
Sergey Gridnev #:
唯一的出路是编写你自己的参数面板并在OnInit()中使用,而不是使用标准的输入参数机制。

有趣的想法!谢 谢你。

不,这并不有趣(

每次你再次改变时间框架时,都不好进入设置(

 
EVGENII SHELIPOV #:

是的,Makar,你是对的,因为它是可以修复的,但奇怪的是,这个功能像时钟一样工作。

它像时钟一样工作,因为你在寻找最后的max_ticket订单。

你找不到另一张票。

 
EVGENII SHELIPOV #:

祝大家好!!!!!

你能告诉我倒数第二张票的号码吗?

在开立新的订单之前,有可能记住一张票。