自动交易调度器(AutoTrading Scheduler)是一款让您可以基于每周时间表在MetaTrader平台中控制“自动交易”按钮状态的智能交易系统。它不仅可以启用、禁用“自动交易”,还可以在进入“自动交易”禁用时段时尝试关闭所有交易。这款智能交易系统同时适用于MT4和MT5。
这款调度器需要导入DLL才能正确工作。它从标准Windows DLL文件(user32.dll)导入一项函数。将这款智能交易系统添加至图表时,请记得要允许DLL导入。
界面
面板控件非常简单。“开关”按钮可以打开或关闭调度器。右侧的一组单选按钮让您可以切换本地时间和服务器时间。通过“状态”选项,您会知道DLL是否关闭,连接是否丢失,以及“自动交易”是否禁用。七个输入字段可以输入一周内的不同天数,以设置您想启用“自动交易”的时间范围。“设置所有空白天数”按钮会将您为周一输入的数值应用于一周内的其他空白天数。每周天数下方的第一个复选框允许您用智能交易系统在禁用自动交易之前尝试关闭所有交易。最后,底部的复选框可设置调度器是否采用严格执行模式(勾选,智能交易系统将始终按计划启用/禁用自动交易;取消勾选,智能交易系统仅会在下一个时段开始或结束时启用/禁用自动交易)。
用法
关闭“调度器”后,它不会采取任何操作。如要采用操作,您必须打开它。
如果您想让“调度器”根据经纪商的交易服务器时间工作(例如,在夏令时切换周),您可以将时间设置从“本地”更改为“服务器”。
“状态”可以是“确定”、“无自动交易”、“无连接”或“DLL已禁用”。前两种只通知您状态,不会有任何影响。“无连接”意味着EA将无法在禁用“自动交易”之前关闭任何交易,但它依然会成功地禁用“自动交易”。“DLL已禁用”将带来真正的问题,因为您将无法启用/禁用“自动交易”。
“调度器 ”的主要操作是设置有效的每周时间表。“自动交易”会在您设置的时间段内启用。
时间输入字段采用24小时格式的时间范围,开始时间与结束时间中间用连字符分隔。例如,9-17
将被解读为“从9:00到17:00”(或“从上午9点到下午5点”)。
如果有多个时间范围,可以用逗号作为分隔符。例如,13:30-16:30,19:30-20:05
将在以下两个时段启用“自动交易”:从13:30到16:30和从19:30到20:05。
默认情况下,调度器始终会尝试在允许的时段之外关闭自动交易或在时段之内开启自动交易。即使您自己开启或关闭了自动交易,调度器也会覆盖您的操作。为了避免这种情况,您可以取消面板底部的复选框——这会使调度器仅在允许时段开始或结束时切换自动交易,并且每次只能切换一次。
自动交易调度器的主要目的是控制 MetaTrader 中“自动交易”按钮的状态。不过,它还可以用于在禁用自动交易之前关闭交易。勾选每周天数下方的复选框即可。智能交易系统将尝试关闭头寸并删除挂单,但无法保证这项操作一定会成功执行。它不会重新尝试关闭交易,因为它的首要任务是禁用自动交易;禁用之后,将无法管理交易。
调度文件
遗憾的是,MetaTrader 不允许在面板编辑字段中输入长度超过 63 个字符的字符串。如果您想制定复杂的日程计划,但该操作又不符合限制条件(例如,每小时打开和关闭自动交易),则您您应该使用一个调度文件。为此,您可以在 MetaTrader 数据文件夹的 \MQL4\文件\(或\MQL5\文件\)子文件夹中创建一个简单的文本文件,并将其文件名设置为 ScheduleFile 输入参数。
文件格式应遵循一条简单的规则。工作日名称所在行之后应跟随当天的调度行。例如,如果您希望仅在星期二和星期三每小时的前 10 分钟打开 AutoTrading(自动交易),则文本文件的内容应如下:
Tue 0-0:10,1-1:10,2-2:10,3-3:10,4-4:10,5-5:10,6-6:10,7-7:10,8-8:10,9-9:10,10-10:10,11-11:10,12-12:10,13-13:10,14-14:10,15-15:10,16-16:10,17-17:10,18-18:10,19-19:10,20-20:10,21-21:10,22-22:10,23-23:10 Wednesday 0-0:10,1-1:10,2-2:10,3-3:10,4-4:10,5-5:10,6-6:10,7-7:10,8-8:10,9-9:10,10-10:10,11-11:10,12-12:10,13-13:10,14-14:10,15-15:10,16-16:10,17-17:10,18-18:10,19-19:10,20-20:10,21-21:10,22-22:10,23-23:10
您可以使用星期几的全名或缩写,但必须用英文。
您无需将所有日期的日程计划都设置在文件中。您只需用它来设置那些很长的无法通过面板设置的日程计划。
当调度文件加载成功后,相应的日期将显示为非活跃状态并包含字符串 <<
FILE
>>
:
输入参数
通知
- EnableNativeAlerts (默认 = false) - 如果为 true,则切换自动交易时,将使用本地 MetaTrader 弹出提醒。
- EnableEmailAlerts (默认 = false) - 如果为 true, 则切换自动交易时,将发送电子邮件消息。邮件应通过以下方式在 MetaTrader 中正确配置:工具->选项->电子邮件。
- EnablePushAlerts (默认 = false) - 如果为 true, 则切换自动交易时,将发送电子邮件消息。通知应通过以下方式在 MetaTrader 中正确配置:工具->选项->通知。
默认项
- DefaultTurnedOn (默认 = false) - 调度器“开/关”按钮的默认状态。
- DefaultTime (默认 = 本地) - 默认要使用的时间类型,可以为本地时间或服务器时间。
- DefaultMonday (默认 = "") - 在周一启用自动交易的默认时段。
- DefaultTuesday (默认 = "") - 在周二启用自动交易的默认时段。
- DefaultWednesday (默认 = "") - 在周三启用自动交易的默认时段。
- DefaultThursday (默认 = "") - 在周四启用自动交易的默认时段。
- DefaultFriday (默认 = "")- 在周五启用自动交易的默认时段。
- DefaultSaturday (默认 = "") - 在周六启用自动交易的默认时段。
- DefaultSunday (默认 = "") - 在周日启用自动交易的默认时段。
- DefaultClosePos (默认 = false) - “关闭所有交易”复选框的默认状态。
- DefaultEnforce (默认 = true) - “始终执行时间表”复选框的默认状态。
- DefaultAllowDeny (默认 = true) — the default state of the 'Allow/Deny' button.
其他
- 滑点(默认 = 2) — 关闭头寸时,经纪商点数中给出的滑点值。
- ScheduleFile (默认 = "") - 包含日程计划的文本文件名称。文件应存放在 MT4 的
\MQL4\Files\
子文件夹或 MT5 的\MQL5\Files\
s子文件夹中。 - WaitForNoPositions (默认 = false) - 如果为 true,则调度器将等待所有头寸被关闭后再关闭“AutoTrading”(自动交易)。
- WaitForNoOrders (默认 = false) - 如果为 true, 则调度器将等待所有挂单被删除后再关闭“AutoTrading”。
下载 (ver. 1.03, 2024-06-17)
MetaTrader 4版自动交易调度器 MetaTrader 5版自动交易调度器安装方法:解压“自动交易调度器”文件夹后,将它复制到终端数据文件夹中的MQL4/Experts/或MQL5/Experts/(如果您使用MetaTrader 5)。
探讨
您对这款智能交易系统有什么建议或疑问吗?您随时可以在论坛上与其他交易者及MQL程序员 讨论关于“自动交易调度器”的话题。
更新日志
1.02 — 2023/12/7
- 增加了通过文本文件(ScheduleFile)来加载日程计划的选项。
- 增加了一种方法,使调度器一直等到没有未平仓头寸(WaitForNoPositions)或挂单(WaitForNoOrders)后再关闭自动交易。
1.01 — 2023/6/6
- 增加了在切换自动交易时可选择的提醒功能。
- 增加了非强制的时间表执行模式,且仅在新周期开始或结束时切换自动交易。
- 为所有面板字段添加了带默认值的输入参数。这会简化设置并将面板设置从一个平台复制到另一个平台。
- 优化了修改图表时间周期/交易品种时的处理过程。
- 修复了导致面板最小化后无法最大化的错误。
- 修复了当调度器被设为关闭交易时可能会产生多个触发器的错误。
- 修复了从之前崩溃的 ATS 面板中删除残留图表对象时出现的错误。
- 删除了 PanelOnTopOfChart 参数。它应该通过图表设置处理。