È possibile implementare un modello singleton in MQL4.

 

Ho delle strutture di cui ho bisogno di una singola istanza. Naturalmente, è altamente sconsigliato creare diversi oggetti in diverse classi di queste strutture. Così sono arrivato alla conclusione che, in questo caso, l'opzione più ragionevole sarebbe quella di usare il patternsingleton. Giusto?

Ecco un esempio di struttura:

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

Come posso trasformarlo inun singleton? C'è una tale possibilità in MQL4?

Chi sta usando questo modello nei suoi sviluppi?

 
hoz:

Ho delle strutture di cui ho bisogno di una singola istanza. Naturalmente, è altamente sconsigliato creare diversi oggetti in diverse classi di queste strutture. Così sono arrivato alla conclusione che, in questo caso, l'opzione più ragionevole sarebbe quella di usare il patternsingleton. Giusto?

Ecco un esempio di struttura:

Come posso trasformarlo inun singleton? C'è una tale possibilità in MQL4?

Chi usa questo modello nei suoi sviluppi?


"... Puoi almeno disegnare un quoziente quadratico...?". - "... No, non posso nemmeno immaginarlo. ..."

Qualsiasi schema in MQL4 può essere implementato.

 
tara:


"... Puoi almeno immaginare il divalente quadratico...?". - "... No, non posso nemmeno immaginarlo. ..."

Qualsiasi modello può essere implementato in MQL4.

Alexey, mostrami un esempio. Ho letto l'articolohttp://cpp-reference.ru/patterns/creational-patterns/singleton/

In realtà non ho capito come applicarlo alla mia struttura. Ecco perché lo chiedo.

 
hoz:

Alexei, mostrami un esempio. Ho letto l'articolohttp://cpp-reference.ru/patterns/creational-patterns/singleton/

Non ho capito bene come applicarlo alla mia struttura. Ecco perché lo chiedo.


Victor, non sto cercando di spiegare come applicare l'articolo che non ho letto alla tua struttura, e non capisco la relazione tra quest'ultima e le classi sconosciute.

Il mio punto è che qualsiasi modello, correttamente descritto verbalmente, può essere implementato in MQL4.

 
annunciarlo una volta nell'inite e dimenticarlo.
 
FAQ:
annunciarlo una volta nell'inite e dimenticarlo.
Ed è la cosa giusta da fare! Perché, Victor non sa perché un singleton è necessario :-)
 
Victor, come al solito, si seppellisce nei dettagli, passando dal complicato al contrario...
 
hoz:

Ho delle strutture di cui ho bisogno di una singola istanza. Naturalmente, è altamente sconsigliato creare diversi oggetti in diverse classi di queste strutture. Così sono arrivato alla conclusione che, in questo caso, l'opzione più ragionevole sarebbe quella di usare il patternsingleton. Giusto?

Ecco un esempio di struttura:

Come posso trasformarlo inun singleton? C'è una tale possibilità in MQL4?

Chi sta usando questo modello nei suoi sviluppi?


C'era un tale tema qui, e qualcuno ha anche disegnato questo singoletto, se ti guardi intorno potresti trovarlo. Ma non ne ho bisogno qui.
 
tara:


Victor, non intendo come applicare l'articolo che non ho letto alla tua struttura, e non capisco le relazioni di quest'ultima con le classi sconosciute.

Il mio punto è che qualsiasi modello, correttamente descritto verbalmente, può essere implementato in MQL4.

Alexey, non sei il primo programmatore... I membri-elementi della struttura, come: simbolo, punto, stop loss, ecc. Sono usati abbastanza spesso. E sono necessari in molte classi. Quindi non c'è alcun dubbio sulla relazione tra le classi che usano queste strutture e le strutture corrispondenti in quanto tali!

FAQ:
dichiararlo una volta inite e dimenticarlo.

Cosa c'entra l'inite? A quale inite ti riferisci? Non è come se li descrivessi nell'EA stesso.

Zhunko:
E giustamente! Perché, Victor non sa a cosa serve il singleton :-)

Sì, beh... La cosa principale è cheVadim sa :)))))

Ne sono consapevole!

FAQ:
Victor, come al solito, si seppellisce nei dettagli, passando dal complicato, mentre dovrebbe essere il contrario...
Hmm... Beh, come? Rendere tutti i metodi della struttura statici con l'oggetto creato immediatamente dopo la struttura, e includere questa struttura in ogni classe e nell'Expert Advisor stesso?
 
 

L'ho fatto in questo modo:

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;

Ma per qualche motivo ci sono molti errori durante la compilazione. Cosa c'è che non va?

Motivazione: