
面向订单的 Expert Advisor。交易者手册
简介
并非所有交易者都是程序员。同时并非所有程序员都是优秀的程序员。那么,如果你需要自动执行系统而又没有时间也不想研究 MQL4,应该怎么办?通常,访问论坛并创建一个名称类似于“我需要程序员”的主题:
本文是专门为那些需要帮助编写 Expert Advisor 的人员而编写的。你可以在这里找到 EA 编写者的联系信息、有关联系他们的建议以及有关最常见问题的介绍。
在订购 Expert Advisor 之前应做些什么?
在开始寻找程序员之前,请确保你的策略具有盈利性。不要为任何无法盈利的 EA 支付费用。你可以通过查看历史数据或在心中交易来手动实现,然而事实上却很难做到这一点。也可以使用文章测试可视化:手册交易中介绍的手动测试程序做到这一点。可通过在模拟账户或迷你真实帐户上进行交易获得最真实的结果,但这需要更多时间,而且可能需要花费金钱。在测试策略时,请注意以下几点:
- 由于市场一直在不断的变化,历史上正确的指标行为并不能保证它们在实时交易中足够有效;
- 一些指标在已形成的柱上绘制信号。在价格极值上成功放置的箭头属于历史。在实时交易中,它们仅在多个柱之后才显现。例如,分形的信号显示有双柱延迟。你可以使用分形,但应注意你将进入一个没有分形的市场,只有当再形成两个柱(在小时图上为两个小时后)才会出现分形。不要使用你对其运算算法不了解的指标。这会给你带来糟糕的结果;
- 有很多有意或无意面向未来的指标。例如,存在负移位的简单移动平均线将适时地显示市场枢轴。但只是历史...
可通过在模拟帐户上实时测试策略检测出很多此类错误。然而,这种看似可靠的检查无法保证完全满足真实交易,因为模拟帐户和真实帐户有一些不同之处:
- 模拟账户上的订单执行速度始终高于真实帐户的订单执行速度。要做好准备,将仅在你发送订单后的几分钟之内建立真实头寸。尽管这不会影响长期策略的结果,但会完全破坏你的日常交易;
- 在真实帐户上,可在交易期间更改交易条件(点差、与止损订单之间的距离、追加保证金水平等)。例如,在新闻发布或节假日之前。在模拟帐户上测试策略时,你很难遇到此类意外情况,但是在评估策略的有效性时不要忘记将它们考虑在内。
不要忘记真实帐户使用的是真金白银,对待它们的态度不同于对待模拟帐户的资金的态度。Expert Advisor 可以在交易过程中消除很大一部分感情因素,但无法完全消除可能的错误。在模拟帐户上进行的交易坚持一个策略,不会改变计划,也不会做出情绪性的决策。你未来的 EA 将仅仅是一个程序,它将按照严格的规则运行。如果你想知道你的 EA 能获得怎样的结果,你的交易风格必须与 EA 的交易风格相同:简洁、遵守规则。
如果在上述检查之后你的策略仍显示有良好的获利,足以抵补实际交易的所有意外情况,则你可以进入下一个阶段:算法的规范化。
算法规范化
如果你使用策略进行交易的时间足够长,你可以轻松地规范算法。你需要做的就是列出规则,EA 应按照这些规则进行交易。
请注意,程序将由完全不了解你的策略的人员编写而成。你应指定所有最小的细节部分:指标的参数、与止损之间的差价、最大持仓数、追踪止损算法等。你的要求说明必须包含针对每个重大事件的做出的响应的说明:激活止损单、当存在某个头寸时出现重复信号、在断开连接之后启动 EA 等。
你应知道,PC 无法进行猜测、假定或做出独立的决策,它完全是按照我们的规则进行交易的。如果出现了某种情况而算法又未提供针对此情况的响应,则 EA 不会执行任何操作。
我们来看看如果要求说明不是十分简洁或详细会出现什么情况的示例。以下对话展示了程序员根据交易者提供的算法制定 EA 的过程。我特意显示了很荒谬的字符。这将加强对错误的关注度。为了更好地了解,你可以下载所有 EA 的示例并与交易者一起对它们进行测试。
交易者:
你好!我想订购一个 Expert Advisor 。
当 MA(9) 和 MA(18) 交叉时,应开立头寸。
如果快 MA 与慢 MA 向上交叉,应开立买入头寸。反之亦然 - 应开立卖出头寸。
这要花多少钱?
要确定成本,我需要一个简洁而详尽的要求说明。
大约 - 25 美元。
我已经在前面一封信上写下了所有要求!
有两个移动平均线,当快线(周期 9)与慢线(周期 18)向上交叉时,建立买入头寸。反之亦然,建立卖出头寸。
Ok, clear. Here is your Expert Advisor - Sample_1.mq4.交易者:
你写入了什么内容?这不是 EA!
为什么有这么多头寸?它们为什么没有关闭?
你真的是程序员?
头寸数量等于交叉次数。在可视模式下测试 EA,你将看到所有内容 - 每次交叉时建仓。
如果向上交叉,将建立买入头寸。如果向下交叉,将建立卖出头寸。
你的说明没有包含任何有关平仓的字眼。
交易者:
我忘记了告诉你:如果有未平仓头寸,应该在反向交叉时进行平仓- 每次市场中只能建立一个头寸。对于每个建立的头寸,应在距离 50 个点处设置止损。
程序员:
See the second version - Sample_2.mq4.
交易者:
为什么这里持有一个买入头寸?这里没有交叉!
程序员:
这里曾经有交叉,但已经消失了。图表反映已形成的柱上的指标值,你只有使用可视化测试模式或在实时操作中才能看到柱开发过程中的变化。相信我,在仓位建立时有交叉。
如果你愿意的话,我们可以制定 EA,以便在收到形成的柱信号后建仓。在此类情况下,图表上的所有信号都将可见。
很多交易者都这样做。
交易者:
我们试一试。
另外,我可否优化移动平均线的参数以及止损位和获利位的值?
程序员:
这是第三版 - Sample_3.mq4:
- 在形成的柱上搜索信号(第一个和第二个);
- 在外部变量中指定了移动平均线的参数以及止损位和获利位的值。
请查看。
交易者:
现在,这才像是我真正需要的智能交易系统。
但是,当我启动多个 EA 时,只有其中一个系统会进行交易。而且它们有时会为彼此平仓!
程序员:
在第四版 (Sample_4.mq4) 中,我根据魔数添加了订单部分。如果你在一个交易品种的图表上启动了多个 EA,请为每一个的变量 MagicNumber 设置不同的值。
交易者:
现在,真的都可以了!
那么,要求说明必须包括哪些内容,以便程序员在第一次就能够根据其创建第四版的 EA?我们来试一试制定对 Expert Advisor 的要求:- EA 应仅控制其自己的仓位,而不处理手动或通过其他 EA 建立的仓位。
- 当没有 EA 建立的头寸时:
- 如果快 MA 与慢 MA 向上交叉,将建立买入头寸。
- 如果快 MA 与慢 MA 向下交叉,将建立卖出头寸。
- 当有 EA 建立的头寸时:
- 当为买入头寸时:
- 如果快 MA 与慢 MA 向下交叉,关闭买入头寸并建立卖出头寸。
- 当为卖出头寸时:
- 如果快 MA 与慢 MA 向上交叉,关闭卖出头寸并建立买入头寸。
- 当为买入头寸时:
- 快慢 MA(周期、绘制方法、使用价格)的参数必须由外部变量设置。
- 指标值将从图表周期中获取,EA 将基于其运行。
- 对于交叉检测,将使用第一个和第二个柱。
- 头寸大小由外部变量决定。
- 当建立头寸之后,将在由外部变量决定的距离处设置止损和获利位。
- 应有禁用止损和获利的选项。
- 如果出现错误,EA 应显示一个包含错误信息的窗口,并在下一次价格变动时进行重试。
这是最简单的任务。此类简单系统在实际生活中很罕见,因此,在创建要求列表时,请注意到所有细节部分。
毋庸置疑,这样愚蠢的交易者和程序员极其罕见。然而,请相信我,一定有这样的人。最好指明看起来很明显的细节部分,而不是事后再与程序员争论。
在寻找程序员之前可以做的最后一件事情是,根据“规则列表”进行交易 - 交易时仅处理此列表所载明的事项。因此,当你规范算法时,你将看到可能会被忽略的所有细节。这样你无需为改进 EA 而支付可能的费用。
选择程序员
在编程语言 MQL4 面世以来的几年里,出现了很多 Expert Advisor 开发人员。他们很多人都是网站 mql5.com 的常客。他们在 CodeBase 中发布自己的开发成果,在论坛中写文章并进行交流,这不仅能够帮助初学者,还能不断提高自己的技能。他们很多人都有真实帐户,同时使用 Expert Advisor 和通过手动进行交易。
目前尚没有 EA 开发人员的数据库(至少我尚未看到过),如果有此类数据库,就可在其中获得有关专业 MQL4 程序员的所有必要信息。但很难创建一个这样的数据库,因为很多 EA 的编写者从事此行业的时间并不太长。
本文旨在帮助你找到一名程序员。在附录 1 “来自 mql4.com 的 EA 编写者的联系信息”中,你可以找到所有可用的信息。
在选择能够帮助你实现 Expert Advisor 的程序员时:
- 咨询你的朋友 - 与 EA 编写者一起合作过的交易者;
- 阅读有关已实现/未实现的 EA 的论坛主题;
- 查看授权用户的用户资料 - 他们很多人会在用户资料中留下信息;
- 亲自联系程序员 - 通过电子邮件或 ICQ。
沟通,协商。程序员各有不同,请选择合适的程序员。
测试 Expert Advisor
当你详细说明工作条件和批准算法之后,程序员将开始编写 EA,并将完成的系统发送给你进行测试。你的任务是确保智能 EA 的操作符合指定的要求。
首先,在策略测试程序中使用不同的参数组合测试系统,这是检验算法的一种最快的方式。你可以打开一个已在其上测试 EA 的图表,然后目测检查结果。
如果 EA 不仅在柱建立时操作,还在柱形成期间进行操作,请尝试在可视化模式下执行测试 - 你将看到 EA 在每次价格变动时的操作。你将看到零(当前)柱上的指标值、大幅价格波动时止损的偏移和触发等。
如果在策略测试程序进行的测试未显示任何错误,则在模拟帐户上测试 EA。
尝试启动多个具有不同或类似参数的 EA,然后同时使用它们进行交易。无论发生了什么情况,EA 都应按照算法继续工作。如果没有错误,你可以告诉程序员运行正常,然后完成交易。
然而,第一版的 EA 往往会存在算法的不一致之处,可能是由于描述不准确或程序员出错而导致的,这种情况很普遍。只需联系程序员,如果确实是他的错误,他会解决所有问题。在电子邮件中说明以下内容:
- EA 操作出了什么问题;
- 出现错误的 EA 参数;
- 如果在模拟帐户上检查 EA,则说明测试参数(交易品种、周期、时间范围、建模模式、服务器等)或操作时间和服务器地址;
- 从测试程序日志中提取的内容;
- 包含问题说明的多个屏幕截图;
- EA 的日志(测试程序中的“日志”选项卡或在模拟帐户上使用时的“Expert Advisor”选项卡)。
通常,合作意味着技术支持,即便是在 EA 已准备就绪且已完成支付之后。这意味着,如果运行一个月之后出现错误, 程序员将免费修复出现的错误。这取决于你的具体安排。
总结
自动交易越来越受欢迎。很多交易者信赖 Expert Advisor 或全自动交易机器人对他们的帐户进行管理。要编写此类程序,需要具有专门的知识和经验。遗憾的是,并非所有交易者都有时间和意愿来研究能够实现他们的想法的专用编程语言。本文旨在尝试建立并加强交易者与交易者-程序员之间的联系。我希望,本文能够帮助你建立良好、可靠的Expert Advisor。
附录 1.来自 mql4.com 的 EA 编写者的联系信息
本节包含属于 mql5.com 社区成员的 EA 编写者的联系信息。以下列表不断更新,如果你现在找不到帮手,可在不久之后查看此列表,你可能会找到一个合适的帮手。请注意,任何人都可以在此处留下联系信息,甚至于诈骗分子。几乎无法检验所有 EA 开发人员的工作品质和诚信。因此,在与他们中的任何人合作之后(无论成功与否),请留下你对本文的评论,包含你对与你合作的人员的看法,这将有助于其他交易者做出正确的决策。
如果你是 EA 的开发人员,希望列表中包括你的联系信息,请将你的联系信息发送给我,我们会将你加入其中。这是免费的,只要求你履行与订购 EA 的交易者一起商定的义务。如果本文的评论中出现有关对你的工作的投诉,而你无法在一周内解决问题,我们会将你从列表中删除。我希望极少出现这种情况。
昵称 | 姓名 | 电子邮件 | 其他信息 | ||||
---|---|---|---|---|---|---|---|
komposter | Andrey Khatimlianskii | mql@komposter.me | www.komposter.me
| ||||
Mike | Michael Bernardovich | mikemb [@] ittportal [.] net |
| ||||
michal | Michal Rutka | mqlservice.com [@] gmail [.] com |
| ||||
Jan Klimo | jan.klimo [@] gmail [.] com | 电话:+420777288782 | |||||
fuzzbomb | Andrew Young | advisor [@] easyexpertforex [.] com | www.easyexpertforex.com | ||||
giaras | Giampiero Raschetti | giampiero.raschetti [@] gmail [.] com |
| ||||
5leepless | Damian Burrowes | sleepless.damian [@] gmail [.] com | |||||
Vitovd | Witold Wozniak | contact [@] mqlsoft [.] com | www.mqlsoft.com | ||||
vasya_vasya | Vasiliy Orlov | pr0baproba [@] mail [.] ru |
| ||||
linx | Lin Xie | linx_mt [@] hotmail [.] com |
|
本文由MetaQuotes Ltd译自俄文
原文地址: https://www.mql5.com/ru/articles/1460

