错误、漏洞、问题 - 页 951

 
是否可以在MQL5中编写一个参数数量可变的函数?例如,像StringConcatenate(...)或Print(...)?
 
skteks:

我在策略测试器中 测试了标准的ExpertMACD专家顾问,它与MT5一起交付,它产生了错误。

2013.03.30 19:18:09 核心2的遗传密码(0, 15)在46毫秒内被测试出错误 "OnInit failed"

2013.03.30 19:18:08 核心 1 遗传通 (0, 13) 测试,错误 "OnInit failed",时间为32 ms

2013.03.30 19:18:07 核心2的遗传密码(0, 5)在0毫秒内被测试出错误 "OnInit failed"。

我通过搜索发现,错误在模块中。"SignalMACD "在优化快速和慢速MACD周期时(在策略测试器参数中打勾)。

有没有人遇到过这样的问题,如何处理?(当只有一个刻度线时,它不知何故能工作,但只要你检查两个刻度线,就会出现错误。)

设置不同的变化范围 慢和快。该错误将消失。你可以不理会它。

 
w1sp:
是否可以在MQL5中编写一个参数数量可变的函数?例如,像在StringConcatenate(...)或Print(...)?
是的,你可以,这被称为函数重载
 
w1sp:
是否可以在MQL5中编写一个具有可变参数数量的函数?例如,像StringConcatenate(...)或Print(...)?

例如,你可以做一个数组,其大小将等于你的参数数量,作为参数。

 
我对StringConcatenate 中的可变参数数感兴趣。像这样:string Concatenate(string s, ...); 这可能吗?
 
w1sp:
我对像StringConcatenate中的可变数量的参数感兴趣。像这样:string Concatenate(string s, ...); 这可能吗?

类似的情况是可能的。一个函数最多可以传入64个参数。

void OnStart()
  {
string s1=Foo("5");
string s2=Foo("5","t");

// string s=Foo(,"5"); // Ошибка
   
  }
//+------------------------------------------------------------------+
string Foo(string i0="", string i1="", string i2="")
{

string rez=i0+i1+i2;

return rez;
} 
 
Snaf:

类似的情况是可能的。一个函数最多可以传入64个参数。

而我们只有通过重载才能得到所有参数的任意类型?也就是说,不仅字符串,而且双数也可以传递给一个函数,例如:字符串s = Concatenate("abc",2.0, "def")

 
w1sp:

而所有参数的任意类型只有通过重载才能实现?也就是说,不仅字符串,而且双数也可以传给函数,例如:字符串s = Concatenate("abc",2.0, "def")

void OnStart()
  {
//string s1=Foo("5");  // Это теперь ошибка. Компилятор не знаек какой функцией из двух пользоваться
string s2=Foo("5",3.0);

// string s=Foo(,"5"); // Ошибка
   
  }
//+------------------------------------------------------------------+
string Foo(string i0="", string i1="", string i2="")
{

string rez=i0+i1+i2;

return rez;
}

string Foo(string i0="", double i1=2.0, string i2="")
{
string rez;
if (i1>2.0) {rez=i0+i2;} else rez=i0+"99"+i2;

return rez;
}  
 
Snaf:
谢谢你。明白了。做一个有64个字符串类型的 参数的函数,并为除第一个参数外的所有参数添加默认值就足够了。
Документация по MQL5: Основы языка / Типы данных / Тип string
Документация по MQL5: Основы языка / Типы данных / Тип string
  • www.mql5.com
Основы языка / Типы данных / Тип string - Документация по MQL5
 
你好。升级MT5构建后,该指标在测试器中不再正常显示,在终端本身则正常显示。该指标相当复杂,资源密集(ZUP),我把它从MT4翻译到MT5。在测试器中,Bild 756 ZigZag线显示正常,在测试器后Bild 770 - ZigZag价格值正确,但时间框架不正确(移位,不均匀)ZigZag - 输出缓冲器。同时,图形对象(三角形、直线等,顺便说一下,它们是基于输出缓冲区的数据(ZigZag也是如此))正常显示。请帮助我理解这一点。