#include <Trade\Trade.mqh>
CTrade trade;// Объект № 1 в глобальной области программыintOnInit()
{
trade.SetExpertMagicNumber(123);
}
voidOnTick()
{
CTrade trade;// Объект № 2 в локальной области OnTick()
trade.Buy(0.1);
}
#include <Trade\Trade.mqh>
CTrade trade;// Объект trade в глобальной области программыintOnInit()
{
trade.SetExpertMagicNumber(123);
}
voidOnTick()
{
CTrade *trade_ptr=GetPointer(trade);// Указатель на объект trade
trade_ptr.Buy(0.1);
}
我请版主把所有的讨论放在一个单独的主题中。可能有几十个这样的主题在讨论OOP的优势。
还有一个问题:声明一个变量、获取/创建一个指针、创建一个对象实例之间有什么区别。这不是区别,而是在哪些情况下使用更好。例如,只需声明一个用于开仓的变量即可。
以及在什么情况下使用指针更好,什么情况下我们不能没有对象实例。
一种方法或另一种方法的优点和缺点是什么?
1.如果一个对象在全局范围 内,它就是一个静态对象。它被放置在静态内存中,只要程序存在就会存在。
它的构造函数在调用程序的第一个函数之前被调用。解构器在OnDeinit()之后被调用。
例如,像这样。
或者甚至像这样。
它将在退出街区时被销毁。当它被销毁时,会调用析构器。
由于堆栈的大小通常是有限的,非常大的对象不能放在堆栈中。
例子。
在这个例子中,有两个变量被创建。堆中的MyClass类的一个对象。
而pObject变量是一个指向MyClass的指针。这个变量被分配给动态内存中的对象的地址。
当从函数中退出时,pObject变量将被销毁,但该对象将保留在动态内存中。
为了能够删除它,它的地址必须被储存在某个地方。
当它们被创建和销毁时,构造函数和析构函数也被调用。
动态变量的访问时间通常比局部变量要长。
在创建一个对象时,你应该考虑到这一切。
1.如果一个对象在全局范围 内,它就是一个静态对象。它被放置在静态存储器中,只要程序存在就会存在。
...
我是否正确地认为,通过这个选项
在不考虑编译器警告的 情况下,该位置可能以一个不等于123的神奇数字打开?
也就是说,在OnTick函数中会创建一个新的对象,魔术师在其中不等于123。
我是否正确地认为,通过这个选项
在不考虑编译器警告的 情况下,该位置可能以123以外的神奇数字打开?
也就是说,一个新的对象将在OnTick函数中被创建,而魔术师在其中不会等于123。
设置专家的魔法号码
我是否正确地认为,通过这个选项
在不考虑编译器警告的 情况下,该位置可以用一个神奇的非123?
也就是说,一个新的对象将在OnTick函数中被创建,它的MagicNumber不是123。
是的,这是正确的。这是两个不同的对象。由于OnTick中的本地对象与全局对象的名称相同,所以只有它可以在OnTick函数中被访问。全局对象超出了范围。因此,对于本地贸易对象,MagicNumber还没有被设置。
我是否正确地认为,通过这个选项
在不考虑编译器警告的 情况下,该位置可以用一个神奇的非123?
也就是说,一个新的对象将在OnTick函数中被创建,而魔术师将不会在其中被123。
这与变量的情况完全一样。
还有重点。
为什么一开始就需要这个SetExpertMagicNumber?
它为贸易类的对象设置了一个神奇的数字。整个程序可以有一个以上的 CTrade 类对象,就像现在 kodobase 中的做法一样。这是一个对象。该对象用于执行交易操作。没有必要为整个程序创建一个对象,并在每次需要改变新的魔术师、滑移和其他在初始化期间设置的参数时对其进行重置。可以为每个交易的符号创建一个单独的交易对象,根据符号的属性为其设置必要的参数,这个特定的CTrade类的对象属于这个对象,并通过从必要的符号获得必要的交易类对象的指针来轻松进行交易,而不需要覆盖在此设置的参数。
为了与另一个魔术师合作,可以定义一个单独的交易对象,并进行适当的设置。一个EA中可以有几个巫师。
这一切都取决于对什么和如何使用它的理解。
它为一个贸易类的对象设置一个魔法。整个程序不可能只有一个CTALT类的对象,因为它通常在kodobase中是这样做的。 这是一个对象。该对象用于执行交易操作。没有必要为整个程序创建一个对象,并在每次需要改变新的魔术师、滑移和其他在初始化期间设置的参数时对其进行重置。可以为每个交易的符号创建一个单独的交易对象,根据符号的属性为其设置必要的参数,这个特定的CTrade类的对象属于这个对象,并通过从必要的符号获得必要的交易类对象的指针来轻松进行交易,而不需要覆盖在此设置的参数。
为了与另一个魔术师合作,可以定义一个单独的交易对象,并进行适当的设置。一个EA中可以有几个巫师。
这一切都取决于对什么和如何使用它的理解。
在这种情况下,是否
SetExpertMagicNumber Устанавливает идентификатор эксперта
不正确的描述?
我的理解是,如果为EA设置,那么任何订单/仓位都应该有这种魔力。((