¿Es posible implementar un patrón singleton en MQL4?

 

Tengo estructuras de las que necesito una única instancia. Naturalmente, se desaconseja crear varios objetos en diferentes clases de estas estructuras. Así que llegué a la conclusión de que, en este caso, la opción más razonable sería utilizar el patrónsingleton. ¿Verdad?

Este es un ejemplo de estructura:

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

¿Cómo puedo convertirlo enun singleton? ¿Existe esta posibilidad en MQL4?

¿Quién utiliza este patrón en sus desarrollos?

 
hoz:

Tengo estructuras de las que necesito una única instancia. Naturalmente, se desaconseja crear varios objetos en diferentes clases de estas estructuras. Así que llegué a la conclusión de que, en este caso, la opción más razonable sería utilizar el patrónsingleton. ¿Verdad?

Este es un ejemplo de estructura:

¿Cómo puedo convertirlo enun singleton? ¿Existe esta posibilidad en MQL4?

¿Quién utiliza este patrón en sus desarrollos?


"... ¿Puedes al menos dibujar un cociente cuadrático...?" - "... No, no puedo ni imaginarlo. ..."

Se puede implementar cualquier patrón en MQL4.

 
tara:


"... ¿Puedes al menos imaginar el divalente cuadrático...?" - "... No, no puedo ni imaginarlo. ..."

Cualquier patrón puede ser implementado en MQL4.

Alexey, muéstrame un ejemplo. He leído el artículohttp://cpp-reference.ru/patterns/creational-patterns/singleton/

En realidad no he entendido cómo aplicarlo a mi estructura. Por eso pregunto.

 
hoz:

Alexei, muéstrame un ejemplo. He leído el artículohttp://cpp-reference.ru/patterns/creational-patterns/singleton/

No entendí muy bien cómo aplicarlo a mi estructura. Por eso pregunto.


Víctor, no intento explicar cómo aplicar el artículo que no he leído a tu estructura, y no entiendo la relación entre ésta y las clases desconocidas.

Lo que quiero decir es que cualquier patrón, correctamente descrito verbalmente, puede ser implementado en MQL4.

 
anunciarlo una vez en el inite y olvidarlo.
 
FAQ:
anunciarlo una vez en el inite y olvidarlo.
Y eso es lo que hay que hacer. Porque, Víctor no sabe por qué se necesita un singleton :-)
 
Víctor, como de costumbre, se entierra en los detalles, yendo de lo complicado a lo contrario...
 
hoz:

Tengo estructuras de las que necesito una única instancia. Naturalmente, se desaconseja crear varios objetos en diferentes clases de estas estructuras. Así que llegué a la conclusión de que, en este caso, la opción más razonable sería utilizar el patrónsingleton. ¿Verdad?

Este es un ejemplo de estructura:

¿Cómo puedo convertirlo enun singleton? ¿Existe esta posibilidad en MQL4?

¿Quién utiliza este patrón en sus desarrollos?


Había un tema así aquí, e incluso alguien dibujó este singleton, si buscas por ahí puede que lo encuentres. Pero no lo necesito aquí.
 
tara:


Víctor, no me refiero a cómo aplicar el artículo que no he leído a tu estructura, y no entiendo las relaciones de ésta con las clases desconocidas.

Lo que quiero decir es que cualquier patrón, correctamente descrito verbalmente, puede ser implementado en MQL4.

Alexey, no eres el primer programador... Los miembros-elementos de la estructura, como: símbolo, punto, stop loss, etc. Se utilizan con bastante frecuencia. Y son necesarios en muchas clases. Así que no hay duda de la relación entre las clases que utilizan estas estructuras y las estructuras correspondientes como tales.

PREGUNTAS Y RESPUESTAS:
declararlo una vez inite y olvidarlo.

¿Qué tiene que ver el inite con esto? ¿A qué inite se refiere? No es que los describa en el propio EA.

Zhunko:
Y con razón. Porque, Víctor no sabe para qué sirve el singleton :-)

Sí, bueno... Lo principal es queVadim lo sabe :)))))

Soy consciente de ello.

PREGUNTAS Y RESPUESTAS:
Víctor, como siempre, se está enterrando en los detalles, pasando de lo complicado, mientras que debería ser lo contrario...
Hmm... Bueno, ¿cómo? ¿Hacer que todos los métodos de la estructura sean estáticos con el objeto creado inmediatamente después de la estructura, e inluir esta estructura en cada clase y en el propio Asesor Experto?
 
 

Yo lo he hecho así:

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;

Pero por alguna razón hay muchos errores al compilar. ¿Qué pasa?