文章 "以经济方式计算指标的原则"

 

新文章 以经济方式计算指标的原则已发布:

在人类的实践活动的一个或多个领域中保存资源的想法或许是人类发展与进步的过程中最重要和最紧迫的主题。在这一点上,用 MQL5 语言编程也不例外。当然,如果任务的范围仅仅局限于可视化交易,则编程的很多缺陷仍然能够处于未被发现的状况。

但是与自动交易有关的所有一切,开始都需要以最大的经济性编写代码,否则交易机器人的测试和优化过程可能延长到几乎不可能等待它们完成的时间。在此类情形中创建某些有价值的东西的想法似乎很不现实。

因此,在着手实施交易策略之前,最好更好地熟悉对 EA 交易程序的优化和测试时间有影响的编程细节。因为大部分的 EA 交易程序在它们的代码中包含对用户指标的调用,因此我认为我们应该从它们开始。

一般而言,在构建指标时并没有很多要必须记住的相关要点,因此按顺序简单地回顾一下它们是最符合逻辑的。

图 2 EA 交易程序 SMA_Test 的测试结果

作者:Nikolay Kositsin

 

感谢您的文章。

我有一个问题。您使用指标的第一种形式来优化指标计算,其中有 begin。但如果您不能使用它(正确计算需要 open[]、high[]、low[]、close[]......)怎么办? 第二种形式中没有 begin。

 
Prival:

感谢您的文章。

我有一个问题。你使用指标的第一种形式来优化指标计算,这是开始。但如果您不能使用它(正确计算需要 open[]、high[]、low[]、close[]......)怎么办? 第二种形式中没有 begin。

而且也不需要它,因为输入参数始终是价格特征 - 它们包含在所有元素中,而不是使用一个仅从 begin 开始填充的 "任意 "数组。
 

并不是什么都考虑到了,但总的来说还是很有趣的 =)

特别是技术指标 调用的优化问题没有考虑到。

我认为这个话题很有意义。

 

更确切地说,如何更好地初始化技术指标

一般来说,数据检查功能是可以实现的

但初始化的例子并没有完全考虑在内

从帮助中得知

Нельзя обратиться к данным индикатора сразу после его создания, так как на расчет значений индикатора требуется некоторое время, и поэтому создавать хэндлы индикаторов лучше всего в OnInit(). Функция iCustom() создает соответствующий пользовательский индикатор и при успешном создании возвращает его хэндл. Пользовательские индикаторы могут содержать до 512 индикаторных буферов, содержимое которых также можно получать при помощи функции CopyBuffer(), используя полученный хэндл.

如何更好地绕过这一功能....

 

我一直在想同样的问题

   if (Handle == INVALID_HANDLE)  Print(" 获取 SMA 指标句柄失败");

如果这个条件起作用了,我该怎么办? 假设是冠军,就是这样......我不会再跑了

 
Prival:

我也一直在想这个问题。

如果这个条件有效,我该怎么办? 假设是冠军,就是这样......启动器不会再运行了

是的!这是一个没有记录的事实,我也不知道!我们一定要调查清楚!但对我来说更简单,我会把所有的火鸡都打包到 "智能交易系统 "中,就这样,"智能交易系统 "就会像短跑运动员一样在马拉松距离上奔跑,不会在任何地方绊倒,也永远不会绊倒!

 
Prival:

我一直在想同样的问题。

如果这个条件起作用了,我该怎么办? 假设这是一个冠军,就这样......init 不再运行了。

首先,获取错误代码 并输出到日志中。然后尝试在 OnTick() 或 OnCalculate() 中再次访问它。如果无法获取指标句柄,很可能没有该指标或内存不足。在这种情况下,EA 无权进行交易。
Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений
Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений
  • www.mql5.com
Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений - Документация по MQL5
 
Rosh:
首先,获取错误代码并将其输出到日志中。然后尝试在 OnTick() 或 OnCalculate() 中再次访问它。如果无法获取指标句柄,则很可能没有该指标或该指标缺乏内存。在这种情况下,EA 无权进行交易。

好了,我们到了!我们可以自己做!在这种情况下,如果我们能让OnInit() 函数 返回负一,就可以再次调用 OnInit(),如此反复,直到出现句柄!但现在很清楚了,如果不给计算机施加过大压力,就不会出现无法获取句柄的情况。但我曾在更新构建时遇到过一次这种情况,只要重新编译指标就能解决!

Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
Основы языка / Функции / Функции обработки событий - Документация по MQL5
 
可以返回负数,但这对 EA/指标来说不是好兆头。
 
幸运的是,由于终端故障导致的指示器创建 错误实际上并没有发生。