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

 
lil_lil:

MTF指标,我把H1放在外部设置中,我把它附在M15图表上。信号在第4条上闪烁。当H1栏关闭时,信号不闪烁,在M15上,信号在第4栏停止闪烁。如果我把它放在М1上,它就会在第60条上停止闪烁。所以i+N的计算方法应该是,N的变化取决于设置中所选择的周期和周期的图表,指标就在其中。

你有整个代码吗?

 

下午好。我想不明白,OOP的辩护人,请帮忙。

因此,有一个类,例如CCandle。在这个类中,这个类的所有对象都会有相同的参数。这些参数也可以在OnInit()中初始化,它们对这个类的所有对象都是一样的。那么,我怎样才能正确地做到这一点,使它们在创建新对象时不会每次都被初始化。假设它们都在CCandle::Init()函数中。我搞不清楚。

 
Juer:

下午好。我想不明白,OOP的辩护人,请帮忙。

有一个类,例如CCandle。在这个类中,这个类的所有对象都会有相同的参数。这些参数也可以在OnInit()中初始化,它们对这个类的所有对象都是一样的。那么,我怎样才能正确地做到这一点,使它们在创建新对象时不会每次都被初始化。假设它们都在CCandle::Init()函数中。我搞不清楚。

这是在初始化列表中完成的,它位于类的构造函数 中。

class CCandle
{
   int      m_nA;
   double   m_fB;
   datetime m_dtC;


   void CCandle::CCandle(void);
};

CCandle::CCandle(void)
            : m_nA(0)
            , m_fB(0.0)
            , m_dtC(0)
{
}
 
Juer:

下午好。我想不明白,OOP的辩护人,请帮忙。

因此,有一个类,例如CCandle。在这个类中,参数对这个类的所有对象都将是相同的。这些参数也可以在OnInit()中初始化,它们对这个类的所有对象都是一样的。那么,我怎样才能正确地做到这一点,使它们在创建新对象时不会每次都被初始化。假设它们都在CCandle::Init()函数中。我搞不清楚。

在一个类中做一个参数化的构造函数,并向其传递必要的参数以初始化对象。
 
我什么都不明白。对一个对象进行初始化不是问题。我如何为一个给定类的所有对象初始化一次?也就是说,一个新的对象被创建后,参数已经被初始化了,不必每次都为每个新对象初始化参数。
 
同事们,请告知从循环体使用返回操作符 是否正确?例如,我们有一个带循环的函数。在某个时刻,我们需要返回一些值,从而退出函数。正确的方法是使用break,然后返回(value)。但我们可以马上使用return(value)吗?
 
Juer:
我什么都不明白。为一个对象初始化不是问题。我如何为一个给定类的所有对象初始化一次?也就是说,一个新的对象被创建后,参数已经被初始化了,不必每次都为每个新对象初始化参数。
可以从存在的参数中进行初始化。
 
lsv107:
同事们,请告知从循环体 使用返回操作符 是否正确?例如,我们有一个带循环的函数。在某个时刻,我们需要返回一些值,从而退出函数。正确的方法是使用break,然后返回(value)。但我们能不能一次就返回(value)?
没有什么能阻止你退出循环。
 
Artyom Trishkin:
参数可以从存在的东西中初始化。

这是个很简单的问题,不是吗?关键是要初始化相同的东西。

 
Artyom Trishkin:
没有任何东西可以阻止你退出循环。

我只是担心循环会在函数内保持活动,而返回操作符 只会将控制权从活动的循环转移到调用点,如果再次调用该函数,会有堆栈溢出的风险(递归)。这正是Pascal中的情况,根据结构化编程的规则,循环应该被逐一终止,然后函数应该被退出。如果返回,加上一个函数,就能终止循环,很好,但我应该澄清一下,因为我在休息了很长时间后又重新开始编程。

原因: