OOPのあるアプリケーションについて - ページ 11

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

MT5が発表されてから、ずっと答えを出そうとしていました。

こんな超ド級のものを入れたら、私の(あるいは他の人の)EAの性能はどれだけ上がるのだろう?

返事が来ない...。

...

開発されたプログラミング言語がなければ、複雑な取引アルゴリズムを 実装することはできません。マシュカより高く買って、安く売る」というレベルの単純な解決策は、80年代の過去にあるのです。その結果、限られたプログラミング言語では、基本的に儲かるものは書けません(もちろん運は考慮されません)。
 
СанСаныч Фоменко:

...

外部ライブラリは禁止されており、そのためRマーケットプレイスではこの制約がなければ、私は 非常に質の高いインジケーターを販売することでノーリスクで一攫千金を狙って いたでしょう。

...

下手なダンサーを止めているのは

超高収益の統計手法をMQLコードに変換して、自分を豊かにすることを誰も禁じていない。AlgLibがあなたの力になります。

でも、「同じものでも、ボタンホールがピンクだったら、トップになれるようなことをやっていたかも!」という、あなたの妄想通りなんです。- まずは何か書いて、1部でもいいから売ってみてください。そして、このようなことは、単に統計的な手法を導入するよりもはるかに複雑であることを理解することになるでしょう。

 
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さんが投稿された素晴らしいライブラリInternalがあります。

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

オブジェクトは複数のインタフェースをサポートできなければ意味がない。

すでに取り組んでいるのだから、自分たちでやらなければならない。
 
Renat Fatkhullin:
すでに取り組んでいる、私たち自身が必要なのです。
よくやった。本当にカッコイイと思います。さらに、この解決策は非常にエレガントで、クラスが純粋な抽象クラス(データや実装を含まず、すべてのメソッドがパブリック)として表現されている場合に限り、クラスからの多重継承を許可すればよいのです。つまり、C++の標準にはない特定の構成要素やキーワードを導入する必要はないのです。
 
また、余談ですが、インターナルライブラリーは さらに発展させる必要があります。インターフェイスが登場すると、大きな特徴になりますね。古いCObjectは、悪い夢のように忘れ去られることでしょう。
 
Vasiliy Sokolov:
は、クラスが純粋な抽象クラス(データや実装を含まず、すべてのメソッドが公開されている)として表現されている場合に限り、クラスからの多重継承を許可すれば十分である。
...であり、誰からも継承されない、さもなければひし形のままである。