关于OOP的一个应用 - 页 11

 
СанСаныч Фоменко:

自从MT5公布以来,我一直想得到这个问题的答案。

如果我把这些超级大的东西都放进去,我的EA(或其他人)的性能会提高多少?

我从来没有得到过答复...

...

没有发达的编程语言,你无法实现复杂的交易算法。在 "买入高于mashka,卖出低于mashka "层面的简单解决方案已经成为过去,在80年代。因此,你基本上无法在有限的编程语言上写出任何有利可图的东西(当然不考虑运气因素)。
 
СанСаныч Фоменко:

...

外部库是被禁止的,因此R市场。如果没有这个限制,我就会在没有任何风险 的情况下靠销售非常高质量的指标发财

...

你知道是什么阻止了一个糟糕的舞者?

没有人禁止通过将超级有利可图的统计方法转换为MQL代码来充实自己。AlgLib是你的帮助。

但这一切就像你的幻想:"如果我有同样的作品,但有粉红色的扣眼,我就会做这样的事情,就会名列前茅......" 但至少要尝试写一次同样的作品,并尝试自己实施。- 试着写点东西,至少先卖出一份你的产品。很快你就会脚踏实地,你会明白一切都比实施一些统计学方法要复杂得多。

 
Vasiliy Sokolov:

不幸的是,接口在MQL5中是被禁止的,这是非常不幸的,尽管它们本可以在一个整齐的动作中被启用:允许纯抽象类的多重继承

MQL5中的接口可以工作。

class Interface
  {
public:
   virtual void      Do(void)=0;
  };

class MyTest : public Interface
  {
public:
                     MyTest(void) {};
                    ~MyTest(void) {};

   virtual void      Do(void) { Print("Hello!"); }
  };

void OnStart()
  {
   MyTest test;
   test.Do();
  }
 
Renat Fatkhullin:

MQL5中的接口工作。

一个对象必须能够支持多个接口,否则它就变得毫无意义。

 

不幸的是,只是在一厢情愿的层面上。

//+------------------------------------------------------------------+
//| Class of all classes                                             |
//+------------------------------------------------------------------+
class CObject
{
};
//+------------------------------------------------------------------+
//| Enumerator interface                                             |
//+------------------------------------------------------------------+
template<typename T>
class IEnumerator
{
public:
   virtual bool MoveNext();
   virtual void Reset();
   virtual T    Current();
};
class CList : public CObject, public IEnumerator
{
   ...
}

也就是说,只要IEnumerator是一个纯粹的抽象类,涉及它的多重继承就完全安全。

 
Renat Fatkhullin:

MQL5中的接口工作。

同时,事实上,接口仍然要被包裹在长长的继承链中。这方面的一个例子是MQ发布的精彩图书馆内部。

IList -> ICollection -> IEnumerable + IEnumerator
 
Vasiliy Sokolov:

一个对象必须能够支持多个接口,否则它就变得毫无意义。

我们已经在做这方面的工作了,我们需要自己来做。
 
Renat Fatkhullin:
我们已经在努力了,我们自己也需要它。
做得好。这将是非常酷的。此外,这个解决方案非常优雅:当且仅当类被表示为纯抽象类(不包含数据或实现,所有方法都是公共的)时,允许类的多重继承就足够了。也就是说,没有必要引入一些不属于C++标准的特定结构或关键字。
 
另外,从一个侧面说明:内部 图书馆需要进一步发展。当接口出现时,它将成为一个伟大的功能。旧的CObject 将像一场恶梦一样被遗忘。
 
Vasiliy Sokolov:
当且仅当它们被表示为纯粹的抽象类(不包含数据或实现,所有方法都是公开的)时,允许从类中进行多重继承就足够了。
...并且不从任何人那里继承,否则它们仍然是菱形。