Ist es möglich, ein Singleton-Muster in MQL4 zu implementieren.

 

Ich habe Strukturen, von denen ich eine einzige Instanz benötige. Natürlich ist es nicht ratsam, mehrere Objekte in verschiedenen Klassen dieser Strukturen zu erstellen. So kam ich zu dem Schluss, dass es in diesem Fall am sinnvollsten wäre, dasSingleton-Muster zu verwenden. Richtig?

Hier ist ein Beispiel für eine Struktur:

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;       // Уровень заморозки ордеров в пунктах
};

Wie mache ich es zu einemSingleton? Gibt es eine solche Möglichkeit in MQL4?

Wer verwendet dieses Muster in seinen Entwicklungen?

 
hoz:

Ich habe Strukturen, von denen ich eine einzige Instanz benötige. Natürlich ist es nicht ratsam, mehrere Objekte in verschiedenen Klassen dieser Strukturen zu erstellen. Daher kam ich zu dem Schluss, dass es in diesem Fall am sinnvollsten wäre, dasSingleton-Muster zu verwenden. Richtig?

Hier ist ein Beispiel für eine Struktur:

Wie mache ich es zu einemSingleton? Gibt es eine solche Möglichkeit in MQL4?

Wer verwendet dieses Muster in seinen Entwicklungen?


"... Kannst du wenigstens einen quadratischen Quotienten bilden ...?" - "... Nein, das kann ich mir gar nicht vorstellen..."

Jedes Muster in MQL4 kann implementiert werden.

 
tara:


"... Kannst du dir wenigstens die quadratische Zweiwertigkeit vorstellen ...?" - "... Nein, das kann ich mir gar nicht vorstellen..."

Jedes Muster kann in MQL4 implementiert werden.

Alexey, zeig mir ein Beispiel. Ich habe den Artikel gelesenhttp://cpp-reference.ru/patterns/creational-patterns/singleton/

Ich habe noch nicht verstanden, wie ich sie auf meine Struktur anwenden kann. Das ist der Grund für meine Frage.

 
hoz:

Alexej, zeig mir ein Beispiel. Ich habe den Artikel gelesenhttp://cpp-reference.ru/patterns/creational-patterns/singleton/

Ich habe nicht wirklich verstanden, wie ich sie auf meine Struktur anwenden kann. Das ist der Grund für meine Frage.


Victor, ich versuche nicht zu erklären, wie man den Artikel, den ich nicht gelesen habe, auf Ihre Struktur anwendet, und ich verstehe die Beziehung zwischen letzteren und unbekannten Klassen nicht.

Ich will damit sagen, dass jedes Muster, das verbal korrekt beschrieben ist, in MQL4 implementiert werden kann.

 
kündigen Sie es einmal an und vergessen Sie es.
 
FAQ:
kündigen Sie es einmal an und vergessen Sie es.
Und das ist auch richtig so! Denn Victor weiß nicht, warum ein Singleton benötigt wird :-)
 
Victor vergräbt sich wie üblich in den Details und geht vom Komplizierten zum Gegenteil über...
 
hoz:

Ich habe Strukturen, von denen ich eine einzige Instanz benötige. Natürlich ist es nicht ratsam, mehrere Objekte in verschiedenen Klassen dieser Strukturen zu erstellen. Daher kam ich zu dem Schluss, dass es in diesem Fall am sinnvollsten wäre, dasSingleton-Muster zu verwenden. Oder?

Hier ist ein Beispiel für eine Struktur:

Wie mache ich es zu einemSingleton? Gibt es eine solche Möglichkeit in MQL4?

Wer verwendet dieses Muster in seinen Entwicklungen?


Es gab ein solches Thema hier, und jemand hat sogar dieses Singleton gezeichnet, wenn Sie sich umsehen, finden Sie es vielleicht. Aber ich brauche sie hier nicht.
 
tara:


Victor, ich weiß nicht, wie ich den Artikel, den ich nicht gelesen habe, auf Ihre Struktur anwenden soll, und ich verstehe die Beziehungen der letzteren zu unbekannten Klassen nicht.

Ich will damit sagen, dass jedes Muster, das verbal korrekt beschrieben ist, in MQL4 implementiert werden kann.

Alexey, du bist nicht der erste Programmierer... Die Elemente der Struktur, wie z.B.: Symbol, Punkt, Stop Loss, etc. Sie werden recht häufig verwendet. Und sie werden in vielen Klassen benötigt. Die Beziehung zwischen den Klassen, die diese Strukturen verwenden, und den entsprechenden Strukturen als solchen steht also außer Frage!

FAQ:
erklären Sie es einmal und vergessen Sie es.

Was hat die inite damit zu tun? Welche Seite meinen Sie? Es ist ja nicht so, dass ich sie im EA selbst beschreibe.

Zhunko:
Und das zu Recht! Denn Victor weiß nicht, warum ein Singleton benötigt wird :-)

Ja, nun... Die Hauptsache ist, dassVadim Bescheid weiß :)))))

Dessen bin ich mir bewusst!

FAQ:
Victor vergräbt sich wie üblich in den Details und geht vom Komplizierten aus, während das Gegenteil der Fall sein sollte...
Hmm... Nun, wie? Alle Methoden in der Struktur statisch machen, wobei das Objekt unmittelbar nach der Struktur erstellt wird, und diese Struktur in jede Klasse und in den Expert Advisor selbst einfügen?
 
ja
 

Ich habe es auf diese Weise gemacht:

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;

Aber aus irgendeinem Grund kommt es beim Kompilieren zu einer Menge Fehler. Was ist los?