Скачать MetaTrader 5

Возможно ли реализовать паттерн singleton на MQL4.

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
hoz
1934
hoz  

 Есть у меня структуры, которые нужны в единственном экземпляре. Естественно, создавать несколько объектов в разных классах данных структур крайне не рекомендуется. Так вот я пришёл к выводу, что, в данном случае, самый резонным вариантом будет использование паттерна singleton. Верно?

Вот пример структуры:

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

 Как её превратить в singleton ? И есть ли такая возможность в MQL4 ?

 Кто-нить вообще пользуется данным паттерном в своих разработках ? 

Алексей Тарабанов
7331
Алексей Тарабанов  
hoz:

 Есть у меня структуры, которые нужны в единственном экземпляре. Естественно, создавать несколько объектов в разных классах данных структур крайне не рекомендуется. Так вот я пришёл к выводу, что, в данном случае, самый резонным вариантом будет использование паттерна singleton. Верно?

Вот пример структуры:

 Как её превратить в singleton ? И есть ли такая возможность в MQL4 ?

 Кто-нить вообще пользуется данным паттерном в своих разработках ? 


"... Вы можете, хотя-бы, изобразить квадратный двучлен?..."  - "... Нет, даже представить себе не могу. ..."

Можно реализовать любой паттерн в MQL4. 

hoz
1934
hoz  
tara:


"... Вы можете, хотя-бы, изобразить квадратный двучлен?..."  - "... Нет, даже представить себе не могу. ..."

Можно реализовать любой паттерн в MQL4. 

 Алексей, покажите пример. Я читай статью http://cpp-reference.ru/patterns/creational-patterns/singleton/

 На самом деле, не понял как это применить к моей структуре. Вот потому и спрашиваю. 

Алексей Тарабанов
7331
Алексей Тарабанов  
hoz:

 Алексей, покажите пример. Я читай статью http://cpp-reference.ru/patterns/creational-patterns/singleton/

 На самом деле, не понял как это применить к моей структуре. Вот потому и спрашиваю. 


Виктор, я это не к тому, как применить не прочтенную мною статью к Вашей структуре, да и взаимоотношения последней с неведомыми классами мне непонятны. 

Я это к тому, что любой паттерн, корректно описанный вербально, может быть реализован на MQL4.  

Рустам
3597
Рустам  
объявите ее один раз в ините и забудьте.
Vadim Zhunko
5226
Vadim Zhunko  
FAQ:
объявите ее один раз в ините и забудьте.
И это правильно! Ибо, Виктор не в курсе, зачем нужен синглетон :-)
Рустам
3597
Рустам  
Виктор как всегда закапывается в детали, идет от сложного, а надо бы наоборот... 
Dmitry Fedoseev
46928
Dmitry Fedoseev  
hoz:

 Есть у меня структуры, которые нужны в единственном экземпляре. Естественно, создавать несколько объектов в разных классах данных структур крайне не рекомендуется. Так вот я пришёл к выводу, что, в данном случае, самый резонным вариантом будет использование паттерна singleton. Верно?

Вот пример структуры:

 Как её превратить в singleton ? И есть ли такая возможность в MQL4 ?

 Кто-нить вообще пользуется данным паттерном в своих разработках ? 


Была здесь такая тема, и там даже кто-то нарисовал этого сингельтона, если поискать можно найти. Но только не нужен он здесь. 
hoz
1934
hoz  
tara:


Виктор, я это не к тому, как применить не прочтенную мною статью к Вашей структуре, да и взаимоотношения последней с неведомыми классами мне непонятны. 

Я это к тому, что любой паттерн, корректно описанный вербально, может быть реализован на MQL4.  

Алексей, Вы же не первый день программируете... Члены-элементы структуру, такие как: символ, пункт, стоп-лосс и т. д. Используются довольно часто. И во многих классах они нужны. Так что вопрос о взаимоотношении между классами, использующими данные структуры, и соответствующими структурами не имеет вопроса как такового!

 

FAQ:
объявите ее один раз в ините и забудьте.

Причём тут инит? Какой инит Вы имеете в виду? Я ж не в эксперте самом их описываю.

 

Zhunko:
И это правильно! Ибо, Виктор не в курсе, зачем нужен синглетон :-)

Ну да,.. Главное, что Вадим в курсе :)))))

Я в курсе! 

 

FAQ:
Виктор как всегда закапывается в детали, идет от сложного, а надо бы наоборот... 
 Хм. Ну а как? В структуре сделать все методы статичными с созданным сразу после структуры объектом и инклюдить в каждый класс и в сам эксперт данную структуру?
Рустам
3597
Рустам  
да
hoz
1934
hoz  

 Я сделал так:

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;

 Но почему-то ошибок много при компиляции. Что не так?

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий