Многие ищут функцию iBarShift, которая была в языке MQL4 (например, 1,2,3). В языке MQL5 ее нет, но есть все возможности для ее реализации в виде библиотеки. В качестве альтернативы многие программисты предложили свои варианты реализации этой функции на MQL5. Обнаружилось, что все 4 версии содержат ошибки (не воспроизводят в точности работу...
Print("iBarShift = "+IntegerToString(iBarShift (_Symbol,PERIOD_H1,D'01.04.2018 10:00:00')));
Print("iBarShift3 = "+IntegerToString(iBarShift3(_Symbol,PERIOD_H1,D'01.04.2018 10:00:00'))); // показывает на единицу меньше
你发现了什么问题?
下面是一个你的函数在 "BarShift1 "名称下虚假工作的例子
下面是一个你的函数虚假工作的例子--它在 "BarShift1 "的名字下工作。
事实上,它只显示了相反的情况,我的版本是唯一正确的。(而这段代码 中原来的iBarShift1是正确的)。
我的版本被设计成一个独立的功能,就像mql4的iBarShift。
它没有针对多次查询进行优化,所以时间比较是不相关的。@nicholishen 发表了一个 为大量调用而优化的好库。
事实上,它显示的只是反面,我的版本是唯一正确的。(同时这段代码 中的原iBarShift1也是正确的)。
我的版本被设想为作为一个独立的功能,与mql4 iBarShift 完全一样。
它没有针对多个请求进行优化,所以时间比较是不相关的。@nicholishen 发表了一个很好的库,为批量调用进行了优化。
事实上,它只显示了相反的情况,我的版本是唯一正确的。(而这段代码 中原来的iBarShift1是正确的)。
我的版本被设计成一个独立的功能,就像mql4的iBarShift。
它没有针对多次查询进行优化,所以时间比较是不相关的。@nicholishen 发表了一个 为大量调用而优化的好库。
事实上,它显示的只是反面,我的版本是唯一正确的。(同时这段代码 中的原iBarShift1也是正确的)。
我的版本被设想为作为一个独立的功能,与mql4 iBarShift 完全一样。
它没有针对多个请求进行优化,所以时间比较是不相关的。@nicholishen 发表了一个很好的库,为批量调用进行了优化。
我不是在说处理时间,我是在说条数。
在图片中,你可以看到,在8:37,代码认为最近的酒吧是前一天23:00的酒吧,但实际上最近的酒吧是10:00。它在数学和逻辑上都比较接近。
我说的不是处理时间,我说的是酒吧的数量。
图片显示,在8:37,代码认为最近的条形是前一天23:00的条形,但实际上最近的条形是10:00。他在数学和逻辑方面都比较接近。
关于交易、自动交易系统和策略测试的论坛
类似于iBarShift
Alain Verleyen, 2018.04.05 00:18
事实上,它只显示了相反的情况,我的版本是唯一正确的。(而这段代码 中原来的iBarShift1是正确的)。
我的版本被设想为一个独立的功能,就像mql4 iBarShift 一样。
让我们把它简化一下。
我明白你的论点。我不会检查它。显然,是我的任务与公认的逻辑不同。
你发现了什么问题?
我很久以前就写过这个。我已经不记得了,但有些东西让我感到困惑。
不管怎样,现在我只发现了一种异常情况。
当尚未加载的符号数据可能返回-1,而应该返回0。
这可以用我所附的MQL4的脚本来检查。
这个脚本采取随机的时间和随机的时间框架。如果iBarShiftX的值与常规的iBarShift函数 不匹配,则通过Print发送消息。
如果你在一个新打开的符号上运行这个脚本,你会看到错误。在同一个符号上重新运行脚本,不会出现错误。
但这是一件小事。在我的版本中也有同样的问题。
我对你的版本只有一个抱怨:它非常复杂和缓慢。
这里是你的变体。
这是我的函数,它做同样的事情,但算法简单,速度更快。
你可以用一个更短的,没有功能的。
试图证明这一点。找到一个单一的参数组合,当你的函数和我的函数会显示不同的值。
只是我没有实现其中的最后一个参数,因为我不明白为什么需要它。我个人从不需要它。
但如果有人真的需要,就可以实施。
我留下了iBarShift3的变体,因为它不正确地处理了历史漏洞。它可以被修复,但我不认为有什么意义,因为上面的选项已经足够了。
我留下了iBarShift3选项,因为它不能正确处理历史漏洞。它可以被修复,但我不认为有什么意义,因为上面的选项已经足够了。
窟窿是因为酒吧里没有亲友交易,还是其他的?而且,这种不准确是如何表现出来的?
窟窿是由于酒吧里缺乏亲情交易,还是其他?那么不准确的地方在哪里呢?
让我们把没有交易的星期天作为任何时间。
假设我们把星期天作为没有交易的任何时间。
所以它显示的是星期一?这就是我想要的...:)