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

 
Koldun Zloy #:

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

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

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

请解释他的错误是什么。简而言之,简而言之,你应该注意的是什么。如果代码可以工作,它的 "缺陷 "是什么?

 
Ivan Butko #:

请解释他的错误是什么。你能简单地总结一下需要注意的事项吗?而且,如果代码可以工作,它的 "缺陷 "会是什么?

//+------------------------------------------------------------------+
//| Функция 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; // значит это чужой ордер, поэтому возвращаем значение ложь

从文档中......收件箱应该有一个票据,而不是一个索引

bool  OrderSelect( 
   ulong   ticket      // тикет ордера 
   );

如果我们有几个不同符号的订单,而我们要找的是列表中的第二个,我们将找不到它。或者只有一个magik,但我们需要通过另一个符号来找到它,我们将从函数中得到一个错误的答案......

 
Alexey Viktorov #:

从文档中......收件箱应该有一个票据,而不是一个索引

谢谢阿列克谢的提示!晚上坐在电脑前,对我的影响非常不好。我想我昨天从订单票开始,已经在代码中写了一行。

ulong  order_ticket=OrderGetTicket(i); // тикет ордера

然后 "移开 "它。

阿列克谢,这个变体的代码可以接受吗?

//+------------------------------------------------------------------+
//| Функция 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(order_ticket==0)
         return false; // поэтому возвращаем значение ложь
      else // в противном случае
         return true; // возвращаем значение истина
     }
   /* если отложенный ордер уже есть и его мэджик совпадает с мэджиком нашего советника */
   if(OrderGetInteger(ORDER_MAGIC)==Magic_Number)
      return true;  // то возвращаем истину
   /* в противном случае, если отложенный ордер уже есть, но его мэджик не совпадает с мэджиком нашего советника */
   else
      return false; // значит это чужой ордер, поэтому возвращаем значение ложь
  }

我还没有触及Magic,因为该代码是为一个字符的EA准备的。

Regards, Vladimir.

 
MrBrooklin #:

谢谢你,阿列克谢,谢谢你的提示!晚上坐在电脑前,对我的影响非常不好。我想我昨天从订单票开始,已经在代码中写了一行。

然后 "移开 "它。

阿列克谢,这个变体的代码可以接受吗?

我还没有触及Magic,因为该代码是为一个字符的EA准备的

真诚的,弗拉基米尔。

这种做法对我来说是不可接受的。添加一个对Magik的检查和一个符号,两行代码,你将得到一个正常的解决任务的方法作为回报。而如果你忽略了我的原则,那么代码就不太正确。

这更符合逻辑。

//+------------------------------------------------------------------+
//| Функция  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(order_ticket > 0)
         return true; // поэтому возвращаем истину
     }
      return false; // если нет открытого отложенного ордера…
  }

而在这段代码中,你所要做的就是替换空白支票

      if(order_ticket > 0)

来检查一个魔术师和一个角色

      if(OrderGetString(ORDER_SYMBOL) == _Symbol && OrderGetInteger(ORDER_MAGIC) == Magic_Number)

而且这已经是一个比较普遍的功能...

 
Alexey Viktorov #:

从文档中......收件箱应该有一个票据,而不是一个索引

如果我们有几个不同符号的订单,而我们要找的是列表中的第二个,我们将找不到它。或者只有一个魔法,但我们需要通过另一个符号来找到它,答案又会是错误的......。

谢谢

 
Alexey Viktorov #:

这种做法对我来说是不可接受的。增加一个魔术师和一个符号检查,两行代码,换来一个正常的解决问题的方法。而如果你忽略了我的原则,那么代码就不太正确。

这更符合逻辑。

而在这段代码中,你所要做的就是替换空白支票

来检查一个魔术师和一个角色

而且它已经是一个比较通用的功能...

大家早上好,心情不错!

非常感谢你,阿列克谢,感谢你对我的错误进行耐心的解释。

问候,弗拉基米尔。

 
Ivan Butko #:

请解释他的错误是什么。你能简单地总结一下需要注意的事项吗?而且,如果代码有效,它的 "错误 "是什么?

错误在于对基本事物的误解。

如果你自己没有看到它们,你也要:学习,学习,再学习。

 
Koldun Zloy #:

错在不了解基本的事情。

如果你自己没有看到它们,你也要:学习,学习,再学习。

停止。这是一个有新手问题的主题。所以,你要么回答这个话题中提出的问题,要么就不要再讲大道理了。

你是为了什么而展示自己?人们希望看到问题的答案,而不是照片上的漂亮脸蛋。

 
Artyom Trishkin #:

停止。这是一个有新人问题的主题。所以,你要么回答这个话题中提出的问题,要么就不要再讲大道理了。

你是为了什么而展示自己?人们想看到的是问题的答案,而不是照片上的帅哥。

我只是想了解一下,如果这个人想学点东西,那么我就可以帮忙。

 
Koldun Zloy #:

我只是想了解一下,如果这个人想学点东西,那么我就可以帮忙。

很好。找到自己想要的东西的方式似乎很奇怪:"你什么都不会做,你需要学习和学习"。

但是,就这样吧...