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

 
makssub #:
你好。请告知如何找到最接近当前价格的订单的开盘价。MQL4。你有什么例子吗?

我们查看所有未结头寸,并比较从当前价格到交易开始的点数。

你可以采取任何例子,就在上面有一个代码--在一个循环中搜索订单。

 
MakarFX #:

什么是OrdersClose?

请看这里

明白了,谢谢。

 
PapaYozh #:


没有必要去幻想。所发生的事情的本质是,你调用一个方法,这是一个具有不同参数集的构造函数。在这种情况下,没有对象被创建。

你应该理解构造函数调用和方法/函数调用之间的区别。

PapaYozh#:

一个类似的构造函数调用,也不会导致理想的结果。

为了论证,通过引用传递指针,在方法(构造函数?像方法一样被调用?)的签名中添加一个指针

 
Taras Slobodyanik #:

我们查看所有未结头寸,并比较从当前价格到交易开始的点数。

你可以采取任何例子,就在上面有一个代码--在一个循环中搜索订单。

对不起,我又写得不对了。让我再试试)

有一个开放订单的网格。我需要找到最接近当前价格的订单的开盘价(OrderOpenPrice)。为了继续建立网格,但我的订单几乎是混乱地建立的。

我明白怎么写超限,但我无法用语言正确表达(我像狗一样,什么都懂))。

如果你有例子或例子的链接,请贴出来。MQL4

 
Igor Makanu #:

你需要了解构造函数调用和方法/函数调用之间的区别

为争论起见,在一个方法的签名中添加一个指针(构造函数?像方法一样被调用?)并通过引用传递。

在Java中是可以的。

你也可以从子构造函数中调用父构造函数,唯一的要求是父构造函数是由子构造函数的第一个命令调用的。

在MQL中,问题是,如果父类没有空的构造函数,那么在创建子类时就会隐含地调用父类的构造函数。

--

PS。

如果父代有一个不带参数的构造函数和一个带参数的构造函数,哪一个会被带参数的子代构造函数隐式调用?

 
Igor Makanu #:


对于主题--在方法的签名中(作为方法被调用的构造函数?)添加通过引用传递的指针


这看起来像一个拐杖。

不是吗?

 

大家好。这可能是一个愚蠢的问题,但我还没有找到解决办法。

我已经创建了一个指标。它在图表上按钮,当我按下它时,线就会被画出来,按钮就会被激活。

当我切换时间框架时,如何使按钮活动和位置保持活跃?

当切换TF时,函数Deinit起作用,它具有删除所有对象的功能。这是一种先决条件,要从图表中清除一切。

我曾试图将按钮状态存储在一个变量中,但我注意到在指标中,如果我们切换TF,它们就被清零了。

在EA中不是这样的,内部变量的值在那里没有被归零。事实证明,如果指标已经计算出一些数值并保存在内部变量中,它们将在TF切换时被重置。为什么以及如何避免它。

 
makssub #:

对不起,我又写错了。让我再试试)

有一个开放订单的网格。我需要找到最接近当前价格的订单的开盘价(OrderOpenPrice)。为了继续建立网格,但我的订单几乎是混乱地建立的。

我明白怎么写超限,但我无法用语言正确表达(我像狗一样,什么都懂))。

如果你有例子或例子的链接,请贴出来。MQL4

首先,在循环之前,差值等于1000。在循环中,如果开盘价减去现价的模数小于差值,那么差值就等于获得的值,票据被储存在一个变量中。
 
Igor Makanu #:

你应该知道构造函数调用和方法/函数调用之间的区别。


顺便说一下,除了在创建对象时隐式调用外,还有什么区别呢?

 
void ClosseAll()
{
  for(int i = OrdersTotal()-1; i>=0; i--)
  {
     if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
     {
       if (OrderType() == OP_BUY)
         { 
         if (!OrderClose(OrderTicket(), OrderLots(), Bid, slip))
             Print("Не удалось закрыть ордера на покупку!");
         }
       if (OrderType() == OP_SELL)
         { 
         if (!OrderClose(OrderTicket(), OrderLots(), Ask, slip))
             Print("Не удалось закрыть ордер на продажу!");
         }
     }
  }
}

日安!!!。

请帮助编写代码,以便在达到一定的缩减水平时关闭网格EA中的最小和最大订单。

我写了两个函数来计算最大和最小订单的利润

//+----------------------------------------------------------------------------+
//| Расчет профита максимального ордера в сетке                                |
//+----------------------------------------------------------------------------+
double GetProfitMaxOrder()
{
  int max_ticket = 0;
  double max_ticket_profit = 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 = ticket;
          {
           max_ticket_profit =  OrderProfit();
          }
        }
       }
     }
    }
  }
  return( max_ticket_profit);
}
//+----------------------------------------------------------------------------+
//| Расчет профита минимального ордера в сетке                                 |
//+----------------------------------------------------------------------------+
double GetProfitMinOrder()
{
  int min_ticket=INT_MAX;
  double min_ticket_profit = 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() < min_ticket)
              min_ticket = OrderTicket();
              {
               min_ticket_profit = OrderProfit(); 
              }
           }
        }
      }
    }
  }
  return(min_ticket_profit);
}

我有一个函数来计算这些订单的金额。这里似乎没有问题。

问题是如何只关闭这两个订单,我已经找到ClosseAll()函数。

问题是如何改变关闭所有订单的OrderTicket()函数。

附加变量max_ticket和min_ticket,确定网格中只有最小和最大订单的门票。

或者你对这个问题有自己的解决方案吗?