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

 
Anatoliy Markov #:

谢谢你的参与。任务说明对我来说很清楚。我被困在执行中...

试着用了一下评论。到第二组为止,它的数字是正确的。第三天,它返回一个评论,尽管第一组仍然在市场上。这个想法不是为了乘以数字,而是为了占用空出来的数字。我希望我解释清楚了)。

不太清楚,但仍然使用按钮来插入代码


或ALT+s

 
void OnTick()
{
  //---
    
    for(int a=1; a<10; a++)
     {
       comment="";
       for(int i=0; i<OrdersTotal(); i++)
         {
          if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
            {
             if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic)
               {    
                  if (OrderComment()==IntegerToString(a)) continue; 
                  else
                  {
                   comment=IntegerToString(a);
                   break;                  
                  } 
               }
            } 
         } 
        if(comment!="") break; 
     }
    if (CountOfBuy(magic)<1 && CountOfSell(magic)<1) comment="1";
  //---
}
Да, так более информативно. Т.е. этот незамысловатый модуль должен давать коммент для 
последующего присвоения ордеру. Когда открыта группа с комментом 1, он дает коммент 2 (это правильно). 
Когда открыта 2-я группа, опять дает 1. Не могу понять.
 

大家晚上好!

我写了一个确定挂单 是否已经被设置的 函数,但这个函数由于某些原因而不能工作。能否请你告诉我们错误在哪里?真诚的,弗拉基米尔。

//+------------------------------------------------------------------+
//| Функция IsMainPendingOrder (установлен отложенный ордер):        |
//| возвращает истину, если в советнике уже установлен отложенный    |
//| ордер, в противном случае возвращает ложь.                       |
//| Применим для функции с типом данных bool, чтобы хранить          |
//| логические значения true (истина) или false (ложь).              |
//+------------------------------------------------------------------+
bool IsMainPendingOrder()
  {
   int orders_total=OrdersTotal(); // количество установленных отложенных ордеров
//--- перебираем все установленные отложенные ордера
   for(int i=orders_total-1; i>=0; i--)
     {
      ulong  order_ticket=OrderGetTicket(i); // тикет ордера
      /* если отложенного ордера нет, значит и у нашего советника отложенного ордера нет */
      if(OrderSelect(i)==false)
         return false; // поэтому возвращаем ложь
     }
   /* если отложенный ордер уже есть и его мэджик совпадает с мэджиком нашего советника */
   if(OrderGetInteger(ORDER_MAGIC)==Magic_Number)
      return true;  // то возвращаем истину
   /* в противном случае, если отложенный ордер уже есть, но его мэджик не совпадает с мэджиком нашего советника */
   else
      return false; // значит это чья-то чужая позиция, поэтому возвращаем ложь
  }
 
MrBrooklin 挂单 是否已被设置的 函数,但由于某些原因,该函数没有发挥作用。能否请你告诉我们错误在哪里?真诚的,弗拉基米尔。

我自己也发现了这个错误!!!。

下面是一个正常工作的代码。可能对某人有用。问候,弗拉基米尔。

//+------------------------------------------------------------------+
//| Функция IsMainPendingOrder (установлен отложенный ордер):        |
//| возвращает истину, если в советнике не установлен отложенный     |
//| ордер, в противном случае возвращает ложь.                       |
//| Применим для функции тип данных bool, чтобы хранить              |
//| логические значения true (истина) или false (ложь).              |
//+------------------------------------------------------------------+
bool IsMainPendingOrder()
  {
   int orders_total=OrdersTotal(); // количество установленных отложенных ордеров
//--- перебираем все установленные отложенные ордера
   for(int i=orders_total-1; i>=0; i--)
     {
      ulong  order_ticket=OrderGetTicket(i); // тикет ордера
      /* если отложенного ордера нет, значит и у нашего советника отложенного ордера нет */
      if(OrderSelect(i)==false)
         return true; // поэтому возвращаем значение истина
      else // в противном случае
         return false; // возвращаем значение ложь
     }
   /* если отложенный ордер уже есть и его мэджик совпадает с мэджиком нашего советника */
   if(OrderGetInteger(ORDER_MAGIC)==Magic_Number)
      return true;  // то возвращаем истину
   /* в противном случае, если отложенный ордер уже есть, но его мэджик не совпадает с мэджиком нашего советника */
   else
      return false; // значит это чужой ордер, поэтому возвращаем значение ложь
 

请告知如何组织或寻找哪种方式。

在这里,为了不进行条形计算,发明了缓冲器。每一个新的刻度线都只检查最后一个条形图(按照我的理解)。当一个新的条形图出现时,计算将只从这个条形图开始。

由于有了缓冲区,线条不会在整个历史上重新绘制,但会在最后的边缘增加一个额外的段。总共有8个缓冲区。

如果我需要做一百次计算(比方说画一条线100次,只改变一个变量),然后画出最好的结果,怎么办?在一个新的刻度线或计时器上做同样的事情,但用现有的 "历史 "结果(图纸)。我在哪里以及如何存储这些信息,以便我不必重新计算整个历史?

或者,更简单地说,如何增加指标中的缓冲区数量?也许把它们分别写到一个文件里?什么是更好的
 
Ivan Butko #:

请告知如何组织或寻找哪种方式。

在这里,为了不进行条形计算,发明了缓冲器。每一个新的刻度线都只检查最后一个条形图(按我的理解)。当一个新的条形图出现时,计算将只从这个条形图开始。

由于有了缓冲区,线条不会在整个历史上重新绘制,但会在最后的边缘增加一个额外的段。总共有8个缓冲区。

如果我需要做一百次计算(比方说画一条线100次,只改变一个变量),然后画出最好的结果,怎么办?在一个新的刻度线或计时器上做同样的事情,但用现有的 "历史 "结果(图纸)。我在哪里以及如何存储这些信息,以便我不必在整个历史中进行这些计算?

或者,更简单地说,我如何增加一个指标中的缓冲区数量?也许可以单独写到一个文件中?什么是最好的方法?

指标中共有512个缓冲区。

 
Artyom Trishkin #:

指标中共有512个缓冲区。

哦,哇。谢谢你。我一定是找错了地方。我将继续努力。

 
MrBrooklin #:

自己发现的错误!!!。

这里有一个正常工作的代码。可能对某人有用。问候,弗拉基米尔。

这对任何人都没有用。你的代码中存在严重的错误。而纠正他们是没有意义的。

你甚至不屑于学习语言的基础知识,并试图写一些东西。

要么认真对待,要么放弃。

 
Koldun Zloy #:

没有人可以使用它。你的代码中存在严重的错误。而纠正他们是没有意义的。

你甚至不屑于学习语言的基础知识,就想写点什么。

要么认真起来,要么放弃。

早上好!是的,你说得很对。我们需要放弃这种毫无意义的事情,去找

新手对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论

并在这里等待帮助。

问候,弗拉基米尔。

 
MrBrooklin #:
早上好!是的,你说得很对。你需要放弃这种无意义的业务,也就是申请到

新手对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论

并在这里等待帮助。

真诚的,弗拉基米尔。

你是对的,放弃吧。

你甚至不理解我用俄语写的东西。

你为什么想进入编程领域?

原因: