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

 
FAQ:

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

Хотелось бы увидеть пример. А то я читаю уже целую страницу, что я типа изобретаю велосипед, хотя альтернативного варианта предложено не было..
 
 

Покажите мне тогда, где тут в предопределённых переменных есть остальные типы базовой структуры которую я привёл???

Я ж не говорю конкретно про эту структуру, а вообще про данный приём.

Например, вот струтура свойств позиции:

struct Position_Properties
{
   datetime    gdt_Expiration;      // Срок истечения отложенного ордера
   datetime    gdt_OpenTime;        // Время открытия выбранной позиции
   double      gd_OpenPrice;        // Цена открытия
   double      gd_Lots;             // Объём позиции на открытие
   double      gd_CurSL;            // Текущий Stop Loss выбранной позиции
   double      gd_NewSL;            // Новый Stop Loss выбранной позиции
   double      gd_CurTP;            // Текущий Take Profit выбранной позиции
   double      gd_NewTP;            // Новый Take Profit выбранной позиции
   int         gi_CurTicket;        // Тикет выбранного ордера
   int         gi_Type;             // Тип торговой операции
   int         gi_Slippage;         // Максимально допустимое отклонение цены для рыночных ордеров
   int         gi_Magic;            // Магический номер
   string      gs_Comment;          // Комментарий
   string      gs_Symbol;           // Наименование фин. инструмента, с которым производится операция
   ulong       gu_Duration;         // Длительность позиции в секундах
} SPos;

 Тоже предопределённые переменные? Да таких предопределённых переменных нет!

 
ну с этого и надо было начинать, я сужу по структуре приведенной вами в первом посте
 
FAQ:
ну с этого и надо было начинать, я сужу по структуре приведенной вами в первом посте


Да я понял. Так какие варианты у меня есть? Я реально застрял на этом моменте. Нужно хоть какое-то решение. Как данные переменные передавать в классы? Хочется удобства, потому и спрашиваю...

 
hoz:

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

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

Верно?

не верно.

юзай модификатор externt

 

Так?

struct Position_Properties
{
   extern static datetime    gdt_Expiration;      // Срок истечения отложенного ордера
   extern static datetime    gdt_OpenTime;        // Время открытия выбранной позиции
   extern static double      gd_OpenPrice;        // Цена открытия
   extern static double      gd_Lots;             // Объём позиции на открытие
   extern static double      gd_CurSL;            // Текущий Stop Loss выбранной позиции
   extern static double      gd_NewSL;            // Новый Stop Loss выбранной позиции
   extern static double      gd_CurTP;            // Текущий Take Profit выбранной позиции
   extern static double      gd_NewTP;            // Новый Take Profit выбранной позиции
   extern static int         gi_CurTicket;        // Тикет выбранного ордера
   extern static int         gi_Type;             // Тип торговой операции
   extern static int         gi_Slippage;         // Максимально допустимое отклонение цены для рыночных ордеров
   extern static int         gi_Magic;            // Магический номер
   extern static string      gs_Comment;          // Комментарий
   extern static string      gs_Symbol;           // Наименование фин. инструмента, с которым производится операция
   extern static ulong       gu_Duration;         // Длительность позиции в секундах
} SPos;

Position_Properties::gdt_Expiration = 0;
Position_Properties::gdt_OpenTime = 0;
Position_Properties::gd_OpenPrice = 0.0;
Position_Properties::gd_Lots = 0.0;
Position_Properties::gd_CurSL = 0.0;
Position_Properties::gd_CurTP = 0.0;
Position_Properties::gd_NewSL = 0.0;
Position_Properties::gd_NewTP = 0.0;
Position_Properties::gi_CurTicket;
Position_Properties::gi_Type;
Position_Properties::gi_Slippage = 3;
Position_Properties::gi_Magic;
Position_Properties::gs_Comment;
Position_Properties::gs_Symbol;
Position_Properties::gu_Duration:
 
hoz:

Так?


странная логика.


а экземпляр структуры сделать extern не судьба?

 
sergeev:

странная логика.


а экземпляр структуры сделать extern не судьба?

 Про такие моменты нигде не написано. Откуда мне знать как это делается? Кого не спрашиваю из знакомых программистов - не знаю. А некоторые ещё умудряются вылезть на форум и подколоть.

Так?

struct Position_Properties
{
   static datetime    gdt_Expiration;      // Срок истечения отложенного ордера
   static datetime    gdt_OpenTime;        // Время открытия выбранной позиции
   static double      gd_OpenPrice;        // Цена открытия
   static double      gd_Lots;             // Объём позиции на открытие
   static double      gd_CurSL;            // Текущий Stop Loss выбранной позиции
   static double      gd_NewSL;            // Новый Stop Loss выбранной позиции
   static double      gd_CurTP;            // Текущий Take Profit выбранной позиции
   static double      gd_NewTP;            // Новый Take Profit выбранной позиции
   static int         gi_CurTicket;        // Тикет выбранного ордера
   static int         gi_Type;             // Тип торговой операции
   static int         gi_Slippage;         // Максимально допустимое отклонение цены для рыночных ордеров
   static int         gi_Magic;            // Магический номер
   static string      gs_Comment;          // Комментарий
   static string      gs_Symbol;           // Наименование фин. инструмента, с которым производится операция
   static ulong       gu_Duration;         // Длительность позиции в секундах
};
extern Position_Properties::SPos;
Position_Properties::gdt_Expiration = 0;
Position_Properties::gdt_OpenTime = 0;
Position_Properties::gd_OpenPrice = 0.0;
Position_Properties::gd_Lots = 0.0;
Position_Properties::gd_CurSL = 0.0;
Position_Properties::gd_CurTP = 0.0;
Position_Properties::gd_NewSL = 0.0;
Position_Properties::gd_NewTP = 0.0;
Position_Properties::gi_CurTicket;
Position_Properties::gi_Type;
Position_Properties::gi_Slippage = 3;
Position_Properties::gi_Magic;
Position_Properties::gs_Comment;
Position_Properties::gs_Symbol;
Position_Properties::gu_Duration:
 
hoz:

 Про такие моменты нигде не написано. Откуда мне знать как это делается? Кого не спрашиваю из знакомых программистов - не знаю. А некоторые ещё умудряются вылезть на форум и подколоть.

Так?

 


что это??

extern Position_Properties::SPos;
Причина обращения: