mql5语言的特点、微妙之处以及技巧 - 页 142 1...135136137138139140141142143144145146147148149...247 新评论 Edgar Akhmadeev 2019.10.14 22:24 #1411 为了减少优化过冲的数量,我使用了两种方法来创建一个非线性的尺度。 足够准确地列举出以小时为单位的时间。 enum eHours { _0, _4, _6, _8, _12, _16, _24, _32, _48, _64, _96, _128 }; input eHours TrendHours = _8; int eHours2Hours(eHours e) { switch (e) { case _0: return 0; case _4: return 4; case _6: return 6; case _8: return 8; case _12: return 12; case _16: return 16; case _24: return 24; case _32: return 32; case _48: return 48; case _64: return 64; case _96: return 96; case _128: return 128; default: return -1; } } 例如,以2位数的精度(~1%)来列举SAR步骤。 // Приводит параметр оптимизации к нелинейному виду // 001-099 >> 0.0001-0.0099 // 101-199 >> 0.001-0.099 // 201-299 >> 0.10-0.99 // Внимание: коды 000, 100, 200 возвращают 0.0 double NonlinPar(int code) { int order = code / 100; int mod = code - order * 100; return mod * MathPow(10, order) / 10000; } 从0.0001到0.99的优化将需要近10K个步骤。在优化 中使用代码 001-299,将需要不到300个步骤。 fxsaber 2019.10.28 06:24 #1412 遇到除以0 的方法,即使有支票也是如此。 void OnStart() { const double Profit = 100; const double Lots = 1; double TickValue[]; ArrayResize(TickValue, 1); const double Points = TickValue[0] ? Profit / (Lots * TickValue[0] * _Point) : 0; // zero divide } 这个错误在事实上是很明显的。但在编写这样的代码时,并不总是很明显,这样的检查并不足以避免除以零。 TheXpert 2019.10.28 08:59 #1413 一个不使用三元运算符 的借口。 fxsaber 2019.10.28 09:19 #1414 TheXpert: 一个不使用三元运算符 的借口。 当然,如果类似的话。 Alexey Viktorov 2019.10.28 09:22 #1415 只是不要指望如果没有值,就一定是0,因此是假的,如果它不是一个bool类型的 变量。即使明确地转换为bool类型也不会保存它。 void OnStart() { const double Profit = 100; const double Lots = 1; double TickValue[]; ArrayResize(TickValue, 1); const double Points = TickValue[0] == 0? Profit / (Lots * TickValue[0] * _Point) : 0; } 它这样工作没有错误。 fxsaber 2019.10.28 09:25 #1416 关于交易、自动交易系统和交易策略测试的论坛 mql5的特殊性,技巧和窍门 Alexey Viktorov, 2019.10.28 10:22 你只是没有想到,如果没有值,就一定是0,因此如果不是bool类型的 变量,就是假的。即使明确转换为bool类型也不会保存。 void OnStart() { const double Profit = 100; const double Lots = 1; double TickValue[]; ArrayResize(TickValue, 1); const double Points = TickValue[0] == 0? Profit / (Lots * TickValue[0] * _Point) : 0; } 它这样工作没有错误。 在强调的地方有一个错误。 Alexey Viktorov 2019.10.28 09:28 #1417 fxsaber: 在强调的地方有一个错误。 我看不到亮点。错误是什么? Artyom Trishkin 2019.10.28 09:30 #1418 fxsaber: 在强调的地方有一个错误。 你写的是"==",应该是"!="。 它的下划线是 "非常淡的黄色" :) Alexey Viktorov 2019.10.28 09:34 #1419 Artyom Trishkin: 你写的是"==",应该是"!="。 它的下划线是 "非常淡的黄色" :) 好吧,不是每个人都知道我就像那只猴子一样,"我老了,眼睛就没劲了"。 我想是的,但由于某些原因,它在不除以0的情况下也能工作。 而总的来说,我的信息是,我们不应该把任何变量的0当作布尔值的假来检查。 fxsaber 2019.10.28 09:40 #1420 Alexey Viktorov: 我想是的,但由于某些原因,没有除以0也能成功。 因为TickValue不是零。 1...135136137138139140141142143144145146147148149...247 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
为了减少优化过冲的数量,我使用了两种方法来创建一个非线性的尺度。
足够准确地列举出以小时为单位的时间。
例如,以2位数的精度(~1%)来列举SAR步骤。
从0.0001到0.99的优化将需要近10K个步骤。在优化 中使用代码 001-299,将需要不到300个步骤。
这个错误在事实上是很明显的。但在编写这样的代码时,并不总是很明显,这样的检查并不足以避免除以零。
一个不使用三元运算符 的借口。
当然,如果类似的话。
只是不要指望如果没有值,就一定是0,因此是假的,如果它不是一个bool类型的 变量。即使明确地转换为bool类型也不会保存它。
它这样工作没有错误。
关于交易、自动交易系统和交易策略测试的论坛
mql5的特殊性,技巧和窍门
Alexey Viktorov, 2019.10.28 10:22
你只是没有想到,如果没有值,就一定是0,因此如果不是bool类型的 变量,就是假的。即使明确转换为bool类型也不会保存。
它这样工作没有错误。
我看不到亮点。错误是什么?
你写的是"==",应该是"!="。
它的下划线是 "非常淡的黄色" :)
你写的是"==",应该是"!="。
它的下划线是 "非常淡的黄色" :)
好吧,不是每个人都知道我就像那只猴子一样,"我老了,眼睛就没劲了"。
我想是的,但由于某些原因,它在不除以0的情况下也能工作。 而总的来说,我的信息是,我们不应该把任何变量的0当作布尔值的假来检查。
我想是的,但由于某些原因,没有除以0也能成功。
因为TickValue不是零。