四(七)测试交易策略

测试交易策略

MetaTrader 4交易终端的策略测试器允许您测试EA在历史数据上的表现。
在测试交易机器人时,需要考虑策略测试仪的程序测试和优化特性:

策略测试器中的功能限制

客户端策略测试仪的部分功能存在操作限制。调用该函数会导致错误4059(测试模式下不允许使用该函数)。
Sleep() 函数
在策略测试器中不会导致任何延迟

Print() 和 PrintFormat() 函数
为了提高性能,在优化交易机器人的参数时不执行Print()和PrintFormat()函数。例外情况是在初始化处理程序OnInit()中使用这些函数。这允许您在错误发生时很容易地找到原因。

Alert(), MessageBox(), PlaySound(), SendFTP, SendMail(), SendNotification(), WebRequest() 函数
用于与“外部世界”交互的设计不会在策略测试器中执行。

OrderSend(), OrderModify(), OrderDelete(), OrderClose(), OrderCloseBy() 函数
交易操作不是在与测试符号不同的符号上进行的。

客户机终端的全局变量

由于测试人员是客户端终端的一部分,所以他们共享公共的全局变量。因此,它们的名称不应该与工作应用程序的全局变量的名称重叠。这可能导致程序操作错误和测试结果不准确。

在策略测试器中模拟时间

测试时,根据历史数据模拟时间。TimeLocal()本地时间总是等于TimeCurrent()服务器时间。反过来,服务器时间总是等于GMT - TimeGMT()对应的时间。这样,所有这些函数在测试期间都可以同时显示。
在测试器中故意提供GMT、本地时间和服务器时间之间的差异,以防与服务器的连接丢失。无论是否有连接,测试结果应该总是相同的。关于服务器时间的信息没有存储在本地中, 而从服务器获取。

测试中的图形物件

在可视化过程中,EA与真实的图表交互。如果没有可视化,EA将使用一个不显示的“虚拟”图表。前一种情况有其特殊性。在优化过程中,不支持使用图形物件。

测试人员中的事件处理

在Strategy Tester中处理以下事件:在一次OnInit()运行之前初始化一个EA,在一次OnDeInit()运行之后初始化一个EA,并模拟一个新的tick OnTick()。
另外,OnTester()函数中处理的测试事件是在调用OnDeInit()反初始化函数之前生成的。当优化输入参数时,这个函数返回的值被用作自定义的最大准则。
计时器和ChartEvent事件不在策略测试器中处理。

你可能感兴趣的:(四(七)测试交易策略)