错误、漏洞、问题 - 页 1492 1...148514861487148814891490149114921493149414951496149714981499...3184 新评论 Slava 2016.02.03 14:35 #14911 Maxim Khrolenko: 而全球(而不是外部)不是,这不是好事。为什么它不好呢?明确地说,全局变量在程序启动时被初始化一次。你想要不同的行为,在OnInit中按你的要求进行初始化 Slava 2016.02.03 14:36 #14912 Yuri Evseenkov: 在文件中反映这一点会很好。 是的,我们会的。 Slava 2016.02.03 14:43 #14913 zaskok3: 在MQL4++中,当我需要以编程方式 改变输入参数 时,我不能不使用extern。例如,当把一个标准的指标转换为一个交互式的指标时,我必须用extern来代替input。编译器将输入变量视为常量,并对试图改变它们的行为提出抱怨。有了extern,就没有这样的问题了。使用输入参数的 "倍增器"。我们在MQL5\Indicators\Examples\ADX.mq5中有一个例子。//--- input parameters input int InpPeriodADX=14; // Period //---- buffers double ExtADXBuffer[]; double ExtPDIBuffer[]; double ExtNDIBuffer[]; double ExtPDBuffer[]; double ExtNDBuffer[]; double ExtTmpBuffer[]; //--- global variables int ExtADXPeriod; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ void OnInit() { //--- check for input parameters if(InpPeriodADX>=100 || InpPeriodADX<=0) { ExtADXPeriod=14; printf("Incorrect value for input variable Period_ADX=%d. Indicator will use value=%d for calculations.",InpPeriodADX,ExtADXPeriod); } else ExtADXPeriod=InpPeriodADX; Ilya Malev 2016.02.03 14:49 #14914 同志们,有没有人在编译时经常出现 "内部编译器错误"?没有明显的原因,在重新编译的情况下--挂起,在关闭编辑器的情况下,再次打开它(用同样的标签,用同样的代码)--编译通常是正常的。代码中没有任何变化!但有时这种错误会连续发生几次,第一次重启编辑器也没有用。到目前为止,由于重新加载的结果,所有的东西都成功地编译了。但我担心,它迟早会停止工作。我想找到其他遇到类似bug的人,这样我们就可以一起向servicedesk提供关于其发生条件的数据。 [删除] 2016.02.03 15:18 #14915 Slawa:对输入参数使用 "倍增器"。我们在MQL5\Indicators\Examples\ADX.mq5中有一个例子。现在,要将一个指标转换为交互式版本,你只需要在源代码中添加一行。如果你做的是双关语,除了创建双关语的额外字符串外,你必须对整个文本进行替换。你只需改变一行就可以了,何必这么麻烦。是什么阻止了你在编译时删除输入变量的 const-awareness? Vladimir Karputov 2016.02.03 15:20 #14916 zaskok3:要将该指标转换为交互式变体,你只需在源码中添加一行。如果你做的是复式,那么除了要多写一行来创建复式外,你还需要替换整个文本。为什么这么麻烦,因为你可以轻松地改变一行。是什么阻止了你在编译时删除输入变量的 const-awareness? 文本编辑。"Ctrl" + "H" - 搜索和替换。并不复杂。只是不要偷懒。 Slava 2016.02.03 15:23 #14917 zaskok3:是什么阻止了你在编译时删除输入变量的 const-awareness?在MT5历史库中全局存储指标。对他们来说,输入参数是关键。当你改变输入参数时,带有旧参数的指标被销毁,带有修改过的参数的同一指标被重新创建。也就是说,这种限制是纯粹的建筑性限制在第四个版本中,我们可以从实例中删除常量,但这样一来,新的MQL4和MQL5就不兼容了。因此,我们不会这样做。请继续使用extern [删除] 2016.02.03 15:29 #14918 Slawa:也就是说,这种限制是纯粹的建筑性的。 遗憾的是,架构是如此僵化,甚至没有简单的灵活性的可能性。事实证明,MQL5中的互动性将需要一个拐杖。问题是,如果语言限制了可能性,那么优势在哪里呢...。 Andrey Dik 2016.02.03 21:29 #14919 pako: 脱离终端的窗口 怎样? [删除] 2016.02.03 21:38 #14920 Joo Zepper: 怎样? 这是在某个论坛上,一个DLL 1...148514861487148814891490149114921493149414951496149714981499...3184 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
而全球(而不是外部)不是,这不是好事。
为什么它不好呢?明确地说,全局变量在程序启动时被初始化一次。
你想要不同的行为,在OnInit中按你的要求进行初始化
在文件中反映这一点会很好。
在MQL4++中,当我需要以编程方式 改变输入参数 时,我不能不使用extern。例如,当把一个标准的指标转换为一个交互式的指标时,我必须用extern来代替input。编译器将输入变量视为常量,并对试图改变它们的行为提出抱怨。有了extern,就没有这样的问题了。
使用输入参数的 "倍增器"。
我们在MQL5\Indicators\Examples\ADX.mq5中有一个例子。
对输入参数使用 "倍增器"。
我们在MQL5\Indicators\Examples\ADX.mq5中有一个例子。
现在,要将一个指标转换为交互式版本,你只需要在源代码中添加一行。如果你做的是双关语,除了创建双关语的额外字符串外,你必须对整个文本进行替换。你只需改变一行就可以了,何必这么麻烦。
是什么阻止了你在编译时删除输入变量的 const-awareness?
要将该指标转换为交互式变体,你只需在源码中添加一行。如果你做的是复式,那么除了要多写一行来创建复式外,你还需要替换整个文本。为什么这么麻烦,因为你可以轻松地改变一行。
是什么阻止了你在编译时删除输入变量的 const-awareness?
是什么阻止了你在编译时删除输入变量的 const-awareness?
在MT5历史库中全局存储指标。对他们来说,输入参数是关键。当你改变输入参数时,带有旧参数的指标被销毁,带有修改过的参数的同一指标被重新创建。
也就是说,这种限制是纯粹的建筑性限制
在第四个版本中,我们可以从实例中删除常量,但这样一来,新的MQL4和MQL5就不兼容了。因此,我们不会这样做。请继续使用extern
Slawa:
也就是说,这种限制是纯粹的建筑性的。
脱离终端的窗口
怎样?