class Ордер
{
public: int SELL;
Ордер(void) // Конструктор имеет то же имя, что и класс. Выполняется при инициализации переменной класса
{
SELL=0;
int k=OrdersHistoryTotal()-1;
for(; k>=0; k--)
{
if(!OrderSelect(k, SELECT_BY_POS, MODE_HISTORY)) continue;
if(OrderType()==OP_SELL)SELL++;
}
}
}x;
voidOnStart()
{
Alert(x.SELL);
}
那你打算如何使拖尾适应不同的参数?
最好能引出一项具体的任务。这样的描述并不十分清楚。在我的实践中,算法不会因为改变外部参数而改变。对于这些参数的任何数值,它都是事先通用的。因此,你的意思不是很清楚。用一个具体的例子来描述它。
由于采用了OOP,主程序非常简短和清晰。这只是我想到的第一个例子。如果你需要经常计算订单数量,其优势是显而易见的。在第一时间很难理解它。但函数,即使是带参数的函数,也曾是一个难题
让我们在一些特定的任务上进行尝试。如果你有,请提供。
具体任务。客户已经订购了两个MA的专家顾问,这将包括代码库中所有可用的尾随变体,但在测试器中不会放慢。
该EA也应该有前景,可以在未来更新新的尾随变体(成本低)。
由于采用了OOP,主程序非常简短和清晰。这只是我想到的第一个例子。如果我们需要经常计算订单数量,其优势是显而易见的。在第一时间很难理解它。但函数,即使是带参数的函数,也曾是一个难题
我不明白,为什么不做一个函数 "int Number_orders()",总是做上述循环,并返回计数器的值 "SELL"?
比如说。
为什么我们在这里需要一个班?
例如,100个尾随止损变体需要塞进一个专家顾问。当程序化编程时,你会得到这样的混乱。
100个相同的代码片段。当程序运行时,通常只包括一个尾随止损,其余的99个if只会消耗资源。
现在说说OOP的变体。在专家顾问的初始化过程中,我们根据轨迹的数量来扩展带有指针的数组,我们只为包含的轨迹创建对象。因此,下面的代码将一直工作。
如果启用了一个尾巴,那么cnt=1,也就是说,没有什么不必要的。
做一个函数名称的数组,从索引中选择名称并访问。
OOP与此毫无关系。这是他们试图用OOP来解决的语言限制
我没有试过,但比如说没有OOP,你就不能做一个非典型的语言。
我不明白为什么不做一个函数 "int Number_orders()",它总是做上述循环并返回计数器的值 "SELL"?
具体任务。客户已经订购了两个MA的专家顾问,这将包括代码库中所有可用的尾随变体,但在测试器中不会放慢。
并有望在未来增加新的尾随变体(不贵)。
通过提炼类,我将得到x.SELL x.BUY x.ALL和其他需要的东西。而解决这些问题将是非常容易的。OOP类--为了简单起见
做一个函数名称的数组,从索引中选取一个名称并调用它。
这与OOP没有关系。这是他们在OOP的帮助下试图解决的语言限制。
没有定义为字符串的名称的函数调用。而在那些存在的语言中,它是通过表的哈希值完成的,也就是说,它是一个可怕的障碍。
解决这个问题的正常方法是使用 函数的指针(关于这一点我在这里写过)。但为什么要单独使用指针呢,有一种更方便的方法--OOP,它不仅可以利用函数指针的优势,还可以方便地构造数据和代码。