学童的EOP。 - 页 17

 
Artyom Trishkin:

这与变量的情况完全一样。

还有重点。

如果在OnTrade函数 中可以进行交易,那么这个指针的意义何在?

#include <Trade\Trade.mqh>
CTrade trade;   // Объект № 1 в глобальной области программы

int OnInit()
{
 trade.SetExpertMagicNumber(123);
}

void OnTick()
{
 trade.Buy(0.1);
}
 
Alexey Viktorov:

如果这个指针在OnTrade函数 中可用,那么这个指针的意义何在?

没有。但通过这一点,我向你展示了你写另一个(第二个)相同类型的对象的方式,和你通过指针访问单个对象的方式之间的区别。

这只是一个简化的例子,用来回答你关于差异和偏好的问题。

你知道,你用过于简单的例子问问题,当你得到回答时,你又问了一个--相当合理的问题--"为什么?"

因为你的例子不需要用类来解决。

这里有两个选择--你要么阅读并理解你被告知的内容,要么...或者你以程序的方式解决你的问题。在这种情况下,你就不会有 "出于什么原因 "的问题。

现在想象一下,你的 CTrade 类不在全局范围内。И ?

还可以想象,你不仅有一个这样的对象(就像kodobase中几乎所有的例子一样),而且有许多你从程序中手动添加/删除的符号。И ?

 
Сергей Таболин:

在这种情况下,是否

不正确的描述?

我的理解是,如果为EA设置,那么任何订单/仓位都应该有这种魔力。((

为什么突然不正确了呢?

一个EA可以有几个Magiks,而且都是他的。

即使在一个ulong-magic中,你可以存储一个普通专家的ID+一些法师+一些不同的ID,仍然有很多剩余的空间。

 
Artyom Trishkin:

没有。但通过这一点,我向你展示了你写另一个(第二个)相同类型的对象的方式,和你通过指针访问单个对象的方式之间的区别。

这只是一个简化的例子,用来回答你关于差异和偏好的问题。

你知道,你用过于简单的例子问问题,当你得到回答时,你又问了一个--相当合理的问题--"为什么?"

因为你的例子不需要用类来解决。

这里有两个选择--你要么阅读并理解你被告知的内容,要么...或者你以程序的方式解决你的问题。在这种情况下,你就不会有 "出于什么原因 "的问题。

现在想象一下,你的 CTrade 类不在全局范围内。И ?

还可以想象,你不是只有一个这样的对象(就像kodobase中几乎所有的例子一样),而是你从程序中手动添加/删除的许多字符。И ?

不,阿尔乔姆,我问问题是为了理解,不是为了应用。而当你为一个愚蠢的想法提出解决方案时,这时我就会问 "为什么?"。你看,如果我以自己的方式反问,并且得到了我认为正确或错误的回答,那么我所被告知的一切就不会再忘记,并且会在理解的情况下这样做,或者在理解的情况下我不会这样做。我有自己的蟑螂...)我不知道如何在不了解的情况下做一些事情。我从来没有仅仅根据一个样本的解法来解决一个数学问题。我不知道如何。在我读完八年级的那一年,我的数学成绩有5个F和一个B。好吧,他们让我参加考试,条件是如果我写的论文有C,就允许我通过考试,纠正F,他们会让我去GPTU。该研究所的成立时间要晚得多。我就是在那里染上了编程的病,但这只是表面上的教学。而当时的OOP,在我看来,可能只是刚刚被设想出来。

 
Alexey Viktorov:

不,Artem,我问问题是为了理解,不是为了应用。而当你为一个愚蠢的想法提供解决方案时,我就会问 "为什么?"。你看,如果我以自己的方式反问,并且得到了我认为正确或错误的回答,那么我所被告知的一切就不会再忘记,并且会在理解的情况下这样做,或者在理解的情况下我不会这样做。我有自己的蟑螂...)我不知道如何在不了解的情况下做一些事情。我从来没有仅仅根据一个样本的解法来解决一个数学问题。我不知道如何。在我读完八年级的那一年,我的数学成绩有5个F和一个B。好吧,他们让我参加考试,条件是如果我写的论文有C,就允许我通过考试,纠正F,他们会让我去GPTU。该研究所的成立时间要晚得多。我就是在那里染上了编程的病,但这只是表面上的教学。而当时的OOP,在我看来,可能只是刚刚被设想出来。

那么你一开始就问这些问题就很奇怪了。

你确实了解在不同作用域中声明的变量之间的区别。你会的。你问了一个问题,好像你是第一次听说变量的范围

当有人告诉你如何使用一个指向先前创建的对象的指针时,你会问一个奇怪的问题--"为什么,如果这个对象已经是可见的?"。 所以你并没有看到如何做,而是在那个例子中如何获得一个指针,并通过指针来引用对象。而且它不会是不同范围内的两个不同对象,而是一个。
但是,如果这个对象不在全局范围内,而是在其他对象内,该怎么办?而那个其他对象只是返回一个指向你所需要的CTALO对象的指针。在这种情况下,这个例子不会引起 "为什么?我认为它不会。但可以暗示的是,你的回答是假设你理解了你的例子的简单性并省略了 "括号后面 "的全局对象的可见性。

 
Artyom Trishkin:

为什么会突然不正确呢?

一个专家可以有几个魔术师,而且都是他的。

即使在一个魔法中,你可以存储一个普通EA的ID+几个魔法+几个不同的ID,仍然有足够的剩余空间。

我明白。在提出交易请求 时,你可以指定任何魔术师。一个EA可以用一个新的魔术师来开启每个新的位置。我还在我的魔术师中对符号、TF等进行编码。这一切都很清楚。

只有我确信SetExpertMagicNumber 就像一个全局解决方案。如果一个交易请求没有明确指定一个魔法,那么它采用通过SetExpertMagicNumber 设置的值。否则,我个人不认为有什么意义)。

 
Сергей Таболин:

我明白。在提出交易请求 时,你可以指定任何向导。一个EA可以用一个新的魔法打开每个新的位置。我还在我的魔法中编码了一个符号、TF等。这一切都很清楚。

只有我确信SetExpertMagicNumber 就像一个全局解决方案。如果一个交易请求没有明确指定一个魔法,那么它采用通过SetExpertMagicNumber 设置的值。否则,我个人不认为有什么意义 ))

该方法不是将魔法数字设置为专家顾问,而是设置为交易类的一个对象。一个EA中可以有几个交易类,可以为每个交易类设置一个单独的魔法号码,其数值中既包括EA的公共魔法号码,也包括每个交易对象的单独魔法号码。

 
Artyom Trishkin:

那么你问这些问题就很奇怪了。

这一点都不奇怪。如果我完全不理解OOP,那么我就不确定,或者有一些怀疑,我是否正确理解了它。要求澄清,得到确认,现在我确定了(明天)。像G-哈扎诺夫的那段独白。

- 想象一下,你站在窗前,对面的窗户里,毫无戒心的是一个裸体女人。你有什么感觉?

- 对未来充满信心。

- 而你的下一步行动是什么?

- 我正在搬到另一个房间。我那里有一个更大的窗口。

 
Alexey Viktorov:

我是否正确地认为,通过这个选项

在不考虑编译器警告 的情况下,可以用123以外的魔数打开位置?

也就是说,在OnTick函数中会创建一个新的对象,其中的神奇数字将不等于123。

仓位将以等于 "0 "的魔数开仓--即行

void OnTick()
{
 CTrade trade;

重新创建对象,在创建交易类对象时,CTrade magic默认被初始化为 "0"(在类构造函数中)。

//+------------------------------------------------------------------+
//| Constructor                                                      |
//+------------------------------------------------------------------+
CTrade::CTrade(void) : m_async_mode(false),
   m_magic(0),
   m_deviation(10),
   m_type_filling(ORDER_FILLING_FOK),
   m_log_level(LOG_LEVEL_ERRORS)
 
Vladimir Karputov:

位置将以等于 "0 "的魔法数字打开 - 即字符串

重新创建对象,并且在创建贸易类对象时,CTrade magic默认初始化为零(在类构造函数中)。

是吗?难道它不创建一个新的、独立的对象吗?