MQL4でシングルトンパターンを実装することは可能ですか?

 

単一インスタンスが必要な構造体がある。当然ながら、これらの構造体の異なるクラスのオブジェクトを複数作成することは非常に好ましくない。そこで、この場合、シングルトン・パターンを使うのが最も合理的な選択であるという結論に達したのです。そうだろ?

以下は構造の一例です。

struct Symbol_Properties
{
   datetime    gdt_Quote;           // Время поступления последней котировки
   double      gda_Price [2];       // Текущие рыночные цены (0 - Bid, 1- Ask)
   double      gd_Spread;           // Размер спреда в пунктах
   double      gd_Swap;             // Своп
   double      gd_Comission;        // Комиссия
   double      gd_Pt;               // Величина одного пункта
   int         gi_Digits;           // Количество знаков в цене после запятой
   int         gi_StopLevel;        // Минимально-допустимый уровень стоп-лосса/тейк-профита в пунктах
   int         gi_FreezLevel;       // Уровень заморозки ордеров в пунктах
};

シングルトンに するにはどうしたらいいですか?MQL4では、そのような可能性はありますか?

このパターンを開発で使っている人はいますか?

 
hoz:

単一インスタンスが必要な構造体がある。当然ながら、これらの構造体の異なるクラスのオブジェクトを複数作成することは非常に好ましくない。そこで、この場合、シングルトン・パターンを使うのが最も合理的な選択であるという結論に達したのです。そうだろ?

以下は構造の一例です。

シングルトンに するにはどうしたらいいですか?MQL4では、そのような可能性はありますか?

このパターンを開発で使っている人はいますか?


"...せめて二次商を描けるか......?"- "...いや、想像もつかない。"

MQL4のあらゆるパターンを実装することが可能です。

 
tara:


"...せめて2次2価をイメージできるように......」。- "...いや、想像もつかない。"

あらゆるパターンをMQL4で実装することが可能です。

アレクセイ、例を挙げてくれ。記事を読みましたhttp://cpp-reference.ru/patterns/creational-patterns/singleton/

実は、自分の構成にどう適用するのか、まだ理解していないんです。だから聞いているんです。

 
hoz:

アレクセイ、例を挙げてくれ。記事を読みましたhttp://cpp-reference.ru/patterns/creational-patterns/singleton/

自分の構造にどう適用するかはよくわからない。だから聞いているんです。


Victorさん、読んでもいない記事をあなたの構成に当てはめて説明するつもりはありませんし、後者と未知のクラスの関係も理解できません。

私が言いたいのは、口頭で正しく説明すれば、どんなパターンでもMQL4で実装可能だということです。

 
イナイレで一度発表して忘れてしまう。
 
FAQ:
イナイレで一度発表して忘れてしまう。
そして、それが正しいことなんだ!というのも、Victorはなぜシングルトンが必要なのかを知らないのです :-)
 
ビクターは、いつものように、こじつけから逆張りまでして、自分を埋めている...。
 
hoz:

単一インスタンスが必要な構造体がある。当然ながら、これらの構造体の異なるクラスのオブジェクトを複数作成することは非常に好ましくない。そこで、この場合、シングルトン・パターンを使うのが最も合理的な選択であるという結論に達したのです。そうだろ?

以下は構造の一例です。

シングルトンに するにはどうしたらいいですか?MQL4では、そのような可能性はありますか?

このパターンを開発で使っているのは誰ですか?


ここにはそんなテーマがあり、このシングルも誰かが描いたもので、探せば見つかるかもしれません。でも、ここでは必要ないんです。
 
tara:


Victorさん、私が読んでいない論文をあなたの構造にどう適用するかということではなく、後者の未知のクラスとの関係がわからないのです。

私が言いたいのは、口頭で正しく説明すれば、どんなパターンでもMQL4で実装できる、ということです。

アレクセイ、君は最初のプログラマーじゃないんだ......。メンバー - 構造の要素、例えば、シンボル、ポイント、ストップロス、など。かなり頻繁に使われています。そして、多くのクラスで必要とされています。だから、これらの構造体を使うクラスと、それに対応する構造体との関係は問わないのです

よくある質問
と宣言して、一旦忘れてください。

イナテがどう関係するんだ?どのイナイトを指しているのですか?EA自体に記述しているわけではありませんから。

ずん子
そして、当然ながら、その通りですというのも、Victorはなぜシングルトンが必要なのかを知らないのです :-)

ええ、まあ...要はVadimが知って いるということです :))))))。

意識していますよ!

よくある質問
ビクターは、いつものように、複雑なことから行って、細かいことに埋没しているが、逆のこともあるはずなのに...。
うーん・・・じゃあ、どうやって?構造体内のすべてのメソッドを、構造体の直後に生成されるオブジェクトで静的化し、この構造体を各クラスやExpert Advisor自体にインクルードする?
 
 

私はこのようにしました。

struct Symbol_Properties
{
   static datetime    gdt_Quote;           // Время поступления последней котировки
   static double      gda_Price [2];       // Текущие рыночные цены (0 - Bid, 1- Ask)
   static double      gd_Spread;           // Размер спреда в пунктах
   static double      gd_Swap;             // Своп
   static double      gd_Comission;        // Комиссия
   static double      gd_Pt;               // Величина одного пункта
   static int         gi_Digits;           // Количество знаков в цене после запятой
   static int         gi_StopLevel;        // Минимально-допустимый уровень стоп-лосса/тейк-профита в пунктах
   static int         gi_FreezLevel;       // Уровень заморозки ордеров в пунктах
};
//---- Создадим объект структуре Symbol_Properties
Symbol_Properties SSym;
datetime   SSym.gdt_Quote = 0;
double     SSym.gda_Price [2] = {0.0, 0.0};
double     SSym.gd_Spread = 0.0;
double     SSym.gd_Swap = 0.0;
double     SSym.gd_Comission = 0.0;
double     SSym.gd_Pt = 0.0;
int        SSym.gi_Digits = 0;
int        SSym.gi_StopLevel = 0;
int        SSym.gi_FreezLevel = 0;

しかし、なぜかコンパイル時にエラーが多発します。どうしたんですか?

理由: