是否有可能在MQL4中实现一个单子模式。

 

我有一些结构,我需要一个单一的实例。当然,我们非常不鼓励在这些结构的不同类别中创建多个对象。所以我得出结论,在这种情况下,最合理的选择是使用单子 模式。对吗?

这里有一个结构的例子。

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

如何把它变成一个单子?在MQL4中是否有这种可能性?

谁在他们的发展中使用这种模式?

 
hoz:

我有一些结构,我需要一个单一的实例。当然,我们非常不鼓励在这些结构的不同类别中创建多个对象。所以我得出结论,在这种情况下,最合理的选择是使用单子 模式。对吗?

这里有一个结构的例子。

如何把它变成一个单子?在MQL4中是否有这种可能性?

谁在他们的发展中使用这种模式?


"...你至少能画出一个二次商吗......?"- "...不,我甚至无法想象。......"

MQL4中的任何模式都可以被实现。

 
tara:


"...你至少能想象出二次方的二价吗......?"- "...不,我甚至无法想象。......"

任何模式都可以在MQL4中实现。

阿列克谢,给我举个例子。我读了这篇文章http://cpp-reference.ru/patterns/creational-patterns/singleton/

事实上,我还不明白如何将它应用于我的结构。这就是我问的原因。

 
hoz:

阿列克谢,给我举个例子。我读了这篇文章http://cpp-reference.ru/patterns/creational-patterns/singleton/

没有真正理解如何将其应用于我的结构。这就是我问的原因。


维克多,我不是要解释如何将我没有读过的文章应用于你的结构,我不明白后者和未知类之间的关系。

我的观点是,任何模式,只要口头上正确描述,都可以在MQL4中实现。

 
宣布一次就忘掉它。
 
FAQ:
宣布一次就忘掉它。
这也是正确的做法!这也是正确的做法。因为,Victor不知道为什么需要一个单子:-)
 
维克多像往常一样,把自己埋在细节中,从复杂到相反......
 
hoz:

我有一些结构,我需要一个单一的实例。当然,我们非常不鼓励在这些结构的不同类别中创建多个对象。所以我得出结论,在这种情况下,最合理的选择是使用单子 模式。对吗?

这里有一个结构的例子。

如何把它变成一个单子?在MQL4中是否有这种可能性?

谁在他们的发展中使用这种模式?


这里有这样一个主题,甚至有人画了这个单体,如果你四处寻找,你可能会发现它。但我在这里不需要它。
 
tara:


维克多,我不是说如何将我没有读过的文章应用到你的结构中,我不明白后者与未知类的关系。

我的观点是,任何模式,只要口头上正确描述,都可以在MQL4中实现。

阿列克谢,你不是第一个程序员...结构的成员-元素,如:符号、点、止损等。它们被相当频繁地使用。而且许多班级都需要他们。因此,使用这些结构的类与相应的结构之间的关系是毫无疑问的!

常见问题
宣布一次,然后忘记它。

Inite和它有什么关系?你指的是哪一个inite?这并不像我在EA本身中描述它们。

竺可桢
而且是正确的!因为,Victor不知道为什么需要一个单子:-)

是的,嗯...最主要的是,瓦迪姆 知道 :)))))

我意识到了这一点!

常见问题
维克多,像往常一样,把自己埋在细节中,从复杂的地方去,而情况应该是相反的......
嗯......那么,怎么做?使结构中的所有方法与紧随结构之后创建的对象成为静态的,并在每个类和专家顾问本身中嵌入这个结构?
 
 

我是这样做的。

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;

但由于某些原因,在编译时出现了很多错误。怎么了?

原因: