胜利日快乐!
能给我点建议吗?
Expert Advisor 包含一个交替搜索所有未结头寸的循环。在循环中使用PositionGetDouble(POSITION_SL)函数。从 POSITION_SL 参数的描述中可以看出,该参数可用于获取未结头寸的止损水平。
问题 1: 如果未结头寸是由于触发了几个具有不同止损水平的挂单而形成的,PositionGetDouble(POSITION_SL) 函数将显示什么值?
问题 2: 如果未结头寸是由于触发了多个具有不同止损水平的挂单而形成的,那么获取这些止损水平数据的最佳方法是什么?
如果以前讨论过这个问题,请提供链接。

- www.mql5.com
你检查过函数的返回值吗?
没有。因为我不知道在检查(测试)某个函数时必须观察到的所有重要初始条件。另外,在学习一门新的编程语言时,我对使用科学 "戳 "法的可能性持否定态度。
解释。由于专门介绍智能交易系统的文章数量很少,而且没有关于 MQL5 的教科书,因此普通用户在实施自己的交易策略时,只能依靠网上的资料,包括这篇(非常有用的)文章。
正如您所理解的,我的问题涉及理论和应用 方面,而这些方面在当前版本的 MQL5 参考指南以及有关 MQL5 Expert Advisors 的可用文章中都没有反映出来。
在这种情况下,我认为向知识渊博的人(语言开发人员和文章作者)询问有关MQL5 函数 的某些理论和应用 方面的问题要合理得多,而不是进行实验、在特定条件下 "检查函数返回什么 "以及类似的业余行为。
我同意,知识渊博的人对 "应该是什么 "的回答比 "你检查过函数返回什么吗 "这样的反问(在我不了解函数功能的特殊性的情况下)看起来更理想。
找到答案了。在《客户端终端用户指南》中:
...Уровни Тейк Профит и Стоп Лосс устанавливаются для позиции по последнему ордеру (рыночному или сработавшему отложенному).
Иными словами, стоп уровни в каждом последующем ордере по одной позиции заменяют предыдущие.
...Срабатывание ордеров Тейк профит и Стоп Лосс приводит к полному закрытию позиции.
奇怪。由于每种金融工具只能有一个未结头寸,因此原则上无法通过止损来部分平仓?
附注: 在发现 MT5 固有的这一特殊性后,如果未结头寸是由于触发了多个具有不同止损水平的挂单 而形成的,则无需检查 PositionGetDouble(POSITION_SL)函数返回的值。
can be made as a function "from-sub-sub-sub-sub-sub-sub-sub-sub-sub-sub-sub-sub-sub-sub-sub-sub-sub-sub-sub" ...
是的,我已经为这个问题伤透了脑筋。有三种选择)
- 针对 MT5 的特殊性,创造性地重新设计现有方案;
- 或者创建一类子子子孙孙函数;
- 或避免在订单中使用止损和止盈,最初使用相反方向的订单捆绑操作。
没关系,我们会解决的!:)
关于ArraySetAsSeries 函数 在智能交易系统中的位置问题。
ArraySetAsSeries 函数放在 OnTick() 函数中,紧随 CopyTime、CopyHigh 和 CopyLow 函数之后。
将 ArraySetAsSeries 函数放在 OnInit() 函数中是否有任何障碍,还是数组应始终在复制后才进行索引?

- www.mql5.com
关于 ArraySetAsSeries 函数在 EA 中的位置问题。
ArraySetAsSeries 函数放在 OnTick() 函数中,紧随 CopyTime、CopyHigh 和 CopyLow 函数之后。
将 ArraySetAsSeries 函数放在 OnInit() 函数中是否有任何障碍,还是数组应始终在复制后才进行索引?
对于指示器缓冲区,应使用SetIndexBuffer:
注意
链接后,动态数组 缓冲区[]的 索引将与普通数组一样,即使被链接的数组预先设置为按时间序列 索引。如果需要更改指标数组元素的访问顺序,则必须在使用 SetIndexBuffer() 函数绑定数组后应用ArraySetAsSeries() 函数。智能交易系统的情况也类似,请查看
新文章 MQL5 简介:如何编写简单的EA 交易和自定义指标已发布:
相比 MQL4,MetaTrader 5 客户端的 MetaQuotes 编程语言 5 (MQL5) 具有许多新的发展潜力和更高的性能。本文将帮助您熟悉这一新的编程语言。文中给出了编写EA 交易和自定义指标的简单示例。我们还会涉及到 MQL5 语言的一些细节,这些细节对于理解示例是必要的。
文章细节和 MQL5 语言的完整说明可在 MetaTrader 5 中包含的 MQL5 参考中找到。MQL 5 内置的“帮助”内容足以帮助您学习本语言。本文对于那些熟悉 MQL4 以及那些刚刚涉足交易系统和指标编程的初学者而言均可提供帮助。
MQL5 入门
MetaTrader 5 交易平台允许您以手动或自动模式对金融工具和交易进行技术分析。MetaTrader 5 与之前的版本 MetaTrader 4 有所不同,尤其是交易、持仓和订单概念得到改进。
客户端具有内置编程语言 MQL5,可用于编写具有不同目的的多种类型的程序:
“EA 交易”、“指标”和“脚本”可调用 MQL5 标准库的函数及 DLL 函数,包括操作系统库。位于其他文件中的代码可包含于以 MQL5 编写的程序文本中。
要编写程序(“EA 交易”、“指标”或“脚本”),您可以启动 MetaTrader 5 客户端,从 Tools(工具)菜单选择 MetaQuotes Language Editor(MetaQuotes 语言编辑器),或按 F4 键。
作者:Denis Zyatkevich