为什么不把输入参数放在结构中? - 页 4

 

Alexey Volchanskiy

顺便问一下,MQL5对函数参数的数量是否有限制?

每个函数似乎有64个参数。

 
Alexey Volchanskiy:

你如何进行优化?这不是我第一次问这个问题了,但没有人说什么。


这就是问题所在--你不知道。这意味着任何自定义窗口(MQL中的DLL、GUI)将完全破坏本地优化。在极端情况下,我们必须在EA内部添加我们自己的优化,这又是一辆自行车。

ini文件是一样的。这里如何方便,一点也不清楚。至少,我还没有看到简单的用户为了改变调谐参数的值而编辑ini文件。

 
Alexey Volchanskiy:

我似乎已经写得够清楚了,但我要用一个例子来重复。有一个专家顾问,它有100个输入参数,所有这些参数都应该传递给算法类的一个实例,所有的工作都在这里进行。有两种方法。

  1. 使参数设置功能在类中得到体现。现在想象一个有100个参数的函数。顺便问一下,在MQL5中,对函数参数的数量有限制吗?
  2. 该类被定义在输入变量之后,也就是说,它们在EA中是可见的。缺点是,在类的多个实例的情况下,灵活性较差。加分项是最小的写作量。

所以问题是如何将输入变量 传递给算法类实例

那么你就说对了。

// Begin: mqh-файл
class CLASS_EXPERT
{
public:  
  template <typename T>
  void Set( void );
};
// End: mqh-файл

input int inNum = 0;

struct INPUTS
{
  const int Num;
  
  INPUTS( void ) : Num(inNum)
  {
  }
};

CLASS_EXPERT Experts[10];

void OnInit()
{
  for (int i = ArraySize(Experts) - 1; i >= 0; i--)
    Experts[i].Set<INPUTS>();
}
 
Ihor Herasko:

这怎么可能呢?我真的不明白这怎么可能。我知道脚本有这样的技巧,但对专家顾问和指标却不知道。

ExpertLoader_Example.mq5 来自这里

伊霍尔-赫拉斯科

这就是问题的关键,它并没有。这意味着任何自定义窗口(MQL中的DLL、GUI)都会完全破坏标准优化。在极端情况下,我们必须在EA内部添加我们自己的优化,这又是一辆自行车。

ini文件是一样的。这里如何方便,一点也不清楚。至少,我还没有看到任何简单的用户为了改变调谐参数的值而编辑ini文件。

https://www.mql5.com/ru/docs/optimization_frames/parametersetrange

Expert
Expert
  • 投票: 16
  • 2017.08.28
  • fxsaber
  • www.mql5.com
Все остальные файлы на данной странице описания библиотеки являются ее примерами/сценариями применения и не нужны для работы самой библиотеки. Возможности Примеры К описанию прикреплены примеры/сценарии ее использования. ExpertsRemove.mq5 ExpertsReopen.mq5 ChartsClose.mq5 ExpertLoader_Example.mq5 ExpertsChange_Example.mq5 Это...
 

你可以把外部变量写在一个 mqh文件中,然后把它插入。

 

我一定是落后于时代了,或者走错了方向。

我以为,一个EA的输入参数越少越好。

在我看来,理想情况下,一个EA应该没有输入参数(输入变量)。

向我解释一下,100个参数的意义何在?

 
Sergey Chalyshev:

我一定是落后于时代了,或者走错了方向。

我以为,一个EA的输入参数越少越好。

在我看来,理想情况下,一个EA应该没有输入参数(输入变量)。

请解释100个参数的意义何在?


只是为了做实验。

 
Sergey Chalyshev:

我一定是落后于时代了,或者走错了方向。

我以为,一个EA的输入参数越少越好。

在我看来,理想情况下,一个EA应该没有输入参数(输入变量)。

请澄清100个参数的含义。


这里不讨论这个问题。我们正在讨论参数传递的技术问题。

 
Dmitry Fedoseev:

你可以 mqh文件中写入 外部变量,并将其插入。


我正在失去理智,人们顽固地无视我。你也可以把它们写在.mqh中,如何把它们传给算法类有 什么区别?

 
Alexey Volchanskiy:

我正在失去理智,我仍然没有被听到。你也可以使用.mqh,如何将它们传递给算法类有 什么区别?


你不需要传递它们,全局变量 可以原封不动地使用。