Est-il possible d'implémenter un modèle singleton dans MQL4 ?

 

J'ai des structures dont j'ai besoin d'une seule instance. Naturellement, il est fortement déconseillé de créer plusieurs objets dans différentes classes de ces structures. Je suis donc arrivé à la conclusion que, dans ce cas, l'option la plus raisonnable serait d'utiliser le modèlesingleton. N'est-ce pas ?

Voici un exemple de structure :

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

Comment le transformer ensingleton? Existe-t-il une telle possibilité dans MQL4 ?

Qui utilise ce modèle dans ses développements ?

 
hoz:

J'ai des structures dont j'ai besoin d'une seule instance. Naturellement, il est fortement déconseillé de créer plusieurs objets dans différentes classes de ces structures. Je suis donc arrivé à la conclusion que, dans ce cas, l'option la plus raisonnable serait d'utiliser le modèlesingleton. N'est-ce pas ?

Voici un exemple de structure :

Comment le transformer ensingleton? Existe-t-il une telle possibilité dans MQL4 ?

Qui utilise ce modèle dans ses développements ?


"... Pouvez-vous au moins dessiner un quotient quadratique... ?" - "... Non, je ne peux même pas imaginer. ..."

Tout modèle de MQL4 peut être mis en œuvre.

 
tara:


"... Pouvez-vous au moins imaginer le divalent quadratique... ?" - "... Non, je ne peux même pas imaginer. ..."

Tout modèle peut être implémenté dans MQL4.

Alexey, montre-moi un exemple. J'ai lu l'articlehttp://cpp-reference.ru/patterns/creational-patterns/singleton/

En fait, je n'ai pas encore compris comment l'appliquer à ma structure. C'est pourquoi je demande.

 
hoz:

Alexei, montre-moi un exemple. J'ai lu l'articlehttp://cpp-reference.ru/patterns/creational-patterns/singleton/

Je n'ai pas vraiment compris comment l'appliquer à ma structure. C'est pourquoi je demande.


Victor, je n'essaie pas d'expliquer comment appliquer l'article que je n'ai pas lu à votre structure, et je ne comprends pas la relation entre cette dernière et les classes inconnues.

Ce que je veux dire, c'est que tout modèle, correctement décrit verbalement, peut être implémenté dans MQL4.

 
l'annoncer une fois dans l'inite et l'oublier.
 
FAQ:
l'annoncer une fois dans l'inite et l'oublier.
Et c'est la bonne chose à faire ! Car, Victor ne sait pas pourquoi un singleton est nécessaire :-)
 
Victor, comme d'habitude, s'enfonce dans les détails, passant du compliqué au contraire...
 
hoz:

J'ai des structures dont j'ai besoin d'une seule instance. Naturellement, il est fortement déconseillé de créer plusieurs objets dans différentes classes de ces structures. Je suis donc arrivé à la conclusion que, dans ce cas, l'option la plus raisonnable serait d'utiliser le modèlesingleton. N'est-ce pas ?

Voici un exemple de structure :

Comment le transformer ensingleton? Existe-t-il une telle possibilité dans MQL4 ?

Qui utilise ce modèle dans ses développements ?


Il y avait un tel thème ici, et quelqu'un a même dessiné ce singleton, si vous regardez autour de vous, vous le trouverez peut-être. Mais je n'en ai pas besoin ici.
 
tara:


Victor, je ne veux pas dire comment appliquer l'article que je n'ai pas lu à votre structure, et je ne comprends pas les relations de cette dernière avec les classes inconnues.

Ce que je veux dire, c'est que tout modèle, correctement décrit verbalement, peut être implémenté dans MQL4.

Alexey, tu n'es pas le premier programmeur... Les membres - éléments de la structure, tels que : symbole, point, stop loss, etc. Ils sont utilisés assez souvent. Et ils sont nécessaires dans de nombreuses classes. Il n'y a donc aucun doute sur la relation entre les classes qui utilisent ces structures et les structures correspondantes en tant que telles !

FAQ:
déclarez-la une fois pour toutes et oubliez-la.

Qu'est-ce que l'inite a à voir avec ça ? De quelle inite parlez-vous ? Ce n'est pas comme si je les décrivais dans l'EA elle-même.

Zhunko:
Et à juste titre ! Car, Victor ne sait pas à quoi sert le singleton :-)

Ouais, eh bien... L'essentiel est queVadim sache : )))))

J'en suis conscient !

FAQ:
Victor, comme d'habitude, s'enfonce dans les détails, allant du compliqué, alors que ce devrait être le contraire...
Hmm... Eh bien, comment ? Rendre toutes les méthodes de la structure statiques avec l'objet créé immédiatement après la structure, et inclure cette structure dans chaque classe et dans le conseiller expert lui-même ?
 
oui
 

Je l'ai fait de cette façon :

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;

Mais pour une raison quelconque, il y a beaucoup d'erreurs lors de la compilation. Qu'est-ce qu'il y a ?