大家好,今天想和大家分享一个简单的方法,把手动交易订单链接到MetaTrader 5的策略测试器上。我们都知道,ChartEvent在策略测试器中是无法使用的,而目前在基本的MQL5代码中,唯一可以在策略测试器中放置的对象就是“标签”和“按钮”。对于标签来说,使用起来没有任何问题,但对于按钮来说,即使您成功放置了它,点击状态(已点击或未点击)也无法被检测到,除非使用高级编程并将其链接到其他系统。
我用来实现这一点的小技巧是通过一个简单的文件检测过程。可以把这个EA看作是一个独立的接收器,在每次价格波动时,EA会不断检查一个文件夹,看看是否存在一个文件来触发订单。如果在特定文件夹中检测到所需的文本文件,则EA会执行一个命令来处理订单,然后删除该文件。因此,文件在文件夹中的存在就是执行交易的主要触发命令。
现在,您可以使用任何您能想到的方法,通过在文件夹中放置特定的文件来指挥EA执行订单。
在这个EA中,只需在MetaTrader 5的“...\Common\Files\”文件夹中放置名为“buy.txt”、“sell.txt”或“close.txt”的文件,就可以触发相应的订单执行。文本文件可以是空的,重要的是文件名及其在文件夹中的存在。文件应该一次只出现一个在<common_data_folder>\Files中(我的文件夹路径是:C:\Users\Rmd user\AppData\Roaming\MetaQuotes\Terminal\Common\Files\)。在文件夹中,只能同时存在这三个文件中的一个;如果不是,EA会执行第一个读取到的文件,然后删除所有文件。
您还需要其他的外部应用程序来创建或提供所需的文本文件到指定的文件夹中,或者您可以简单地找到一种方法,将提到的文件名转移到目标文件夹中。我是在Visual Basic中制作的,虽然我希望分享,但不确定这里是否允许上传可执行文件,所以最好还是自己创建或寻找这样的工具,任何您能想到的方法,只需将命令文本文件放置到正确的文件夹即可。请查看下方的讨论区,我会分享我制作面板的方法。

建议:
- 如果您想在测试器中使用自己选择的指标,请将指标模板保存或重命名为“StrategyTesterPracticeTrade.tpl”,与您将在策略测试器中使用的EA名称相同。
- 注意命令文本文件出现的正确文件夹位置(...\MetaQuotes\Terminal\Common\Files\)。
- 您可以利用这个思路,不仅用于策略测试器,还可以将外部影响链接到您的其他EA编码中。例如,不仅仅是文件名的存在,您可以使用FileOpen读取文件内容,以便在止盈、止损和手数数据等方面进行数据的提取和使用。因此,您的外部应用程序可以涵盖您希望EA响应的其他可能性。