Ist es möglich, ein Singleton-Muster in MQL4 zu implementieren. - Seite 4

 
FAQ:

Wäre es nicht einfacher, vordefinierte Variablen und Standardstrukturen zu verwenden?

Ich würde gerne ein Beispiel sehen. Ich lese auf einer ganzen Seite, dass ich sozusagen das Rad neu erfinde, obwohl keine Alternative vorgeschlagen wurde...
 
Beispiel für was?
 

Zeigen Sie mir dann, wo in den vordefinierten Variablen die anderen Typen der von mir genannten Grundstruktur zu finden sind?

Ich spreche nicht speziell über diese Struktur, sondern über diese Technik im Allgemeinen.

Ein Beispiel hierfür ist die Struktur der Positionseigenschaften:

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;

Auch vordefinierte Variablen? Es gibt keine solchen vordefinierten Variablen!

 
Nun, damit hätten Sie beginnen sollen, wenn ich mir die Struktur ansehe, die Sie in Ihrem ersten Beitrag gegeben haben
 
FAQ:
Nun, das ist ein guter Anfang, wenn man von der Struktur ausgeht, die Sie mir im ersten Beitrag gegeben haben.


Ja, ich habe verstanden. Welche Möglichkeiten habe ich also? In diesem Punkt bin ich wirklich ratlos. Ich brauche zumindest eine Lösung. Wie können diese Variablen an Klassen übergeben werden? Ich möchte es bequem haben, deshalb frage ich...

 
hoz:

Ich habe Strukturen, die nur eine Instanz benötigen. Natürlich ist es nicht empfehlenswert, mehrere Objekte in verschiedenen Klassen dieser Strukturen zu erstellen.

So kam ich zu dem Schluss, dass es in diesem Fall am sinnvollsten ist, dasSingleton-Muster zu verwenden.

Richtig?

Falsch.

Verwenden Sie den externen Modifikator.

 

Oder?

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:

Oder?


seltsame Logik.


aber wollen Sie nicht eine Instanz der Struktur extern machen?

 
sergeev:

seltsame Logik.


Warum machen Sie nicht eine Instanz der Struktur extern?

Über solche Momente wird nirgendwo geschrieben. Woher weiß ich, wie man das macht? Ich kenne keinen der Programmierer, die ich kenne. Und einige von ihnen schaffen es immer noch, ins Forum zu kommen und sich über mich lustig zu machen.

Richtig?

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:

Von solchen Momenten ist hier nicht die Rede. Woher weiß ich, wie man das macht? Ich kenne keinen der Programmierer, die ich kenne. Und einige von ihnen schaffen es immer noch, ins Forum zu kommen und sich über mich lustig zu machen.

Richtig?


Was ist das?

extern Position_Properties::SPos;
Grund der Beschwerde: