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

 

我正试图弄清我的计数器,并在类中重写,但我仍然无法输出工作的并行函数。我认为m_pause应该以不同的方式声明。应该如何正确操作?


#ifdef __MQL4__
#endif 
//+------------------------------------------------------------------+
//| Счётчик                                                          |
//+------------------------------------------------------------------+
class CCounter
  {
private:
   //--- Шаг счётчика
   int               count;
   //--- Счётчик 
   int               chekcount;
   //---      
   int               m_pause;

public:
   //--- Проверяет прохождение указанного временного интервала 
   int               CheckCounter(const int pause);

   void ZeroCounter(void){count=0;chekcount=0;}
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CCounter::CheckCounter(const int pause)
  {
   m_pause=pause;
   count++;
   Print(" Class    count= ",count);
   Print(" Class    pause= ",pause);
   Print(" Class    m_pause= ",m_pause);

   if(count>=chekcount+m_pause)
     {
      chekcount=count;
     }
   return(chekcount);
  }
//+------------------------------------------------------------------+
#include <Test_Class_Tmier_libr_1.mqh>
CCounter TC;

void OnTick()
  {
Print("0 TC.CheckCounter(10)= ",TC.CheckCounter(10));   
Print("1 TC.CheckCounter(15)= ",TC.CheckCounter(15));
}

 
Nauris Zukas:

我正试图弄清我的计数器,并在类中重写,但我仍然无法输出工作的并行函数。我认为m_pause应该以不同的方式声明。应该如何正确操作?


你需要在定时器中检查。

而且应该有两个CCounter对象--每个对象都是不同的计数器。

 
Artyom Trishkin:

必须检查定时器。

谢谢,但我不明白为什么定时器需要检查?对于每一个tick,专家顾问都会访问CCounter并对tick进行计数 "count++"。

 
Nauris Zukas:

谢谢,但我不明白为什么需要检查计时器?对于每一个tick,EA访问CCounter并对tick进行计数 "count++"。

所以它不在计时器中...

 
Artyom Trishkin:

而且必须有两个CCounter对象--每个对象都是其计数器。

不知道你说的 "两个CCounter对象 "是什么意思。我读了文章https://www.mql5.com/ru/articles/351,它说 "一旦加载,该类就成为一个对象"。这是否意味着我必须为每个柜台制作课程副本?因此,它变成了相同的副本,有不同的名字,我可以不上课?目标是摆脱复制的使用类,因为我需要一百多个。有人告诉我,可以用班级来做,所以我开始用班级来捣乱。或者说我在说什么 "两个CCounter物体"?

Vitaly Muzichenko 2017.09.26 15:43 RU
诺里斯-祖卡斯

在我看来,被困在这样一个简单的地方。如果我想并行运行几个counter()函数,如何处理全局 int chekcount=0; int count=0;

只需使用一个类或用不同的名字复制函数。

Основы объектно-ориентированного программирования
Основы объектно-ориентированного программирования
  • 2011.12.06
  • Dmitry Fedoseev
  • www.mql5.com
На самом деле все намного проще. Чтобы пользоваться ООП вовсе не нужно знать, что означают эти слова - можно просто использовать предоставляемые ООП возможности, даже не зная как они называются. Но все же, надеюсь, в процессе прочтения статьи все желающие не только научатся использовать ООП в достаточной мере, но и разъяснят себе значения этих...
 
Nauris Zukas:

不知道你说的 "两个CCounter对象 "是什么意思。我读了文章https://www.mql5.com/ru/articles/351,它说 "一旦加载,该类就成为一个对象"。这是否意味着我必须为每个柜台制作课程副本?因此,它变成了相同的副本,有不同的名字,我可以不上课?目标是摆脱复制的使用类,因为我需要一百多个。有人告诉我有可能用班级来做,所以我开始用班级来捣乱。或者说我在说什么 "两个CCounter物体"?

Vitaly Muzichenko 2017.09.26 15:43 RU

只使用一个类,或者用不同的名字复制函数。

只要你需要,就可以创建尽可能多的类对象。并为你的计数使用每一个。
CArrayObj是给你的
 
Artyom Trishkin:
只要你需要,就可以创建尽可能多的类对象。并为你的计数使用每一个。
CArrayObj来帮助你

谢谢你,我将阅读这个CArrayObj 是什么,并试着弄清楚它。:)

 

我如何创建一个所有未结订单价格的一维数组?这对你来说可能是一个非常简单的问题,但请你指教)

 
vikzip:

我如何创建一个所有未结订单价格的一维数组?

在一个循环中浏览所有的订单,并将开盘价 写入数组。

 
Alexey Viktorov:

在循环中浏览所有订单,并在数组中写入开盘价


谢谢你!