English Русский Español Deutsch 日本語 Português
MetaTrader 4 客户端内的智能交易测试: 内部模式

MetaTrader 4 客户端内的智能交易测试: 内部模式

MetaTrader 4测试者 | 1 五月 2008, 11:00
3 966 1
Slava
Slava


如果您还没有开启测试,在执行测试前打开 "测试"窗口。执行测试有以下几种方法: 进入"查看-策略测试" 主菜单,按 Ctrl+R键,在工具栏中点击 "策略测试",使用图表的上下菜单将智能交易添加到图表中("智能交易-策略测试")或按 F6。

开始测试之前,需要选择智能交易。可以从弹出的窗口中选择或使用鼠标从“导航”窗口拖至“测试”窗口。测试的货币对同样可以通过这种方法选定:在弹出的窗口中选定或从“市场观察”窗口拖出。按键 F6 可以同时选择智能交易、货币对和激活图表周期,但是智能交易必须添加到激活的图表中。

我们必须选择一种历史数据模式 方法。一些交易策略与柱状的价格变动是处于独立的状态,它们是在已成型的柱状图上交易。一个新柱的测试文件显现说明当前柱已经完成模式。一些智能交易也会通过 "仅用开盘价"的模式模式化。值得说明的是,如果当前柱的数据使用到智能交易的交易的决定上,那么这些智能交易测试使用“仅用开盘价”将是远远不够的!通常,智能交易运行完成的柱含有以下代码去检验下一个柱:

static datetime prevtime=0;
...
if(prevtime == Time[0]) return(0);
prevtime = Time[0];

所有其他的情况下必须使用“每个替克”模式。通常不建议使用“控制点”模式。这种模式是对于在优化模式中智能交易运行的天然估测。在 优化的基因演算 添加到策略测试以后,需要使用“控制点”模式。使用每个替克模式测试仅有历史数据是远远不够的,还需要一分钟可用数据。数据的数量是越多越好。如果没有一分钟的可用数据,五分钟的可用数据也可以使用到模式化中。如果同样没有五分钟数据,十五分钟数据同样可以使用等等。 当然,这样质量会有所降低。

当点击“开始”后, 首先将会生成改变价格的测试次序,这些将存储到 FXT 延伸文件中。 全部 FXT 文件存放在<client_terminal_dir>\tester\history 目录和类型名称SSSSSSPP_M.fxt 如下:

  • SSSSSS - 测试的货币对;
  • PP - 一分钟内测试货币对时间周期值;
  • M - 测试模式(0 - "每个替克", 1 - "控制点", 2 - "仅用开盘价")。

在 FXT-文件标题中写出当前护壁对的设定和当前账户的设定。客户端会自动从交易服务器中获取这些设定信息。因此,真实服务器功能将同样被测试:调用保证金的计算, 佣金,税金等等。如果当前没有连接,那么最后的设定将使用到交易服务器上,客户端的最后链接。 当按开始按钮时,FXT文件每次都会格式化。现在出现了问题:如果每次都需要格式化,为什么使用该文件?首先, 很多替克数据不能够与计算机的 RAM融合。因此,出于优化目的外部储备的大量数据是非常重要的。其次,我们可以检验测试生成的次序。在定单中可以独立打开文件查看价格柱的模式发展。



那么,为什么要重新计算已经存在的数据呢?

  • 首先,经常性的需要在最后的历史数据上测试。
  • 其次,经常出现每个替克的初始形成数据在较短的时间期限内不能够从服务器下载生成测试顺序。问题在于数据的抽取是异步的。因为服务器不会通知客户所请求的数据已经传送。但我们可以确定的是所有请求的数据会在一分钟到两分钟内接收到。
  • 第三是最重要的一点。用户的账户拥有不同的经纪商。不同的经纪商提供的不仅仅是不同的交易状态(请保留含有同时交易服务器运行重要信息的 FXT-文件标题), 在历史数据成交量和质量上也存在差别。这种情况下,在切换账户测试时,建议重新计算数据。
  • 第四, 在客户端内经常没有来自不同可用源代码的不同时间期限数据。在客户端为基本货币对提供大量历史下载数据以后,问题变得更加严重。很多交易者使用真实的经纪商交易,从MetaQuotes服务器上下载数据。 这点对于模式化的质量起着决定性的作用。需要注意的是测试考虑对于不同时间期限数据不一致的错误。那么这是些什么样的错误呢?

如果使用日期“起始”和“截至” ,必须清楚测试形成的顺序(必须检验“使用日期”的相关栏)。测试的开始时间没有按照“起始”日期。在开始生成替克之前,在准备模式化的柱中在测试顺序前端的接近 4千左右的柱被略过。如果初始柱较少,历史前端的所有柱都会使用。但这些柱的数额不少于 100。因此,如果 "起始"日期非常接近整个历史的起点,替克生成可能会在指定日期后开始。为此,在测试开始以前我们提供最少100个柱。在生成顺序中的初始柱需要帮助智能交易在先前数据的基础上正确计算指标 (特别是移动平均数)。 下面是一个起始时间设定为2007.08.01模式替克生成的顺序 :

当到达“截至”日期时,模式化结束。从截至日起的 0:00 点开始价格数据退出测试和生成顺序。如果指定数据超出历史范围或无效“使用日期”, 全部历史 (前 100 个柱除外)将介入生成。图表中柱的最多数额设定并不意味着全部模式化 - 使用存储在硬盘上的全部历史。

如果在测试顺序生成期间历史数据少于100 个柱,在测试日志中将会显示 "TestGenerator: deficient data"并且不会开启测试。如果日期范围指定错误,可能没有任何数据显现。在测试日志中也将会显示"TestGenerator: no history data"信息。这种情况下,必须确定提供的历史数据总数。确保这些数据能够打开相应图表并且使用PageUp键手动抽取数据,随后“重新计算”并重新开始测试。

在开始测试之前,必须指定智能交易测试的进入参量。特别要注意货币存款额。例如, 如果不指出RUB,一个 micex类型的账户打开,在GAZP上的智能交易测试将没有任何结果 (这个货币可以手动指出):



如果在智能交易中 外部变量 显示,“输入数据”将会隐藏。输入数据值得不通社之被保存在不同名称的设置文件中 ("保存"键)和备用("加载"键).


点击 "修改智能交易"键将会调用 MetaEditor,智能交易测试可以打开编辑。在测试开始时该键被锁定。不过, MetaEditor 仍然可以进行编译智能交易,甚至是测试在运行中。在下次开始测试时,重新编译的智能交易将自动重新加载测试。

智能交易测试期间有很好的记录功能,无需重新加载。 建议在测试期间改变智能交易的源代码可以节省您的时间。测试完成之后,您可以点击“开始”键再次测试已经修改的智能交易。但不是先前加载的执行文件将被测试。重新加载新版本的智能交易,您需要奠基“停止”键或者等待测试的完成。只有在这之后,在MetaEditor中开始重新编译你的智能交易。

在测试完成之后,您可以打开带有交易业务箭头的图表和测试期间的指标。不过,测试期间使用的指标将以默认颜色显示。例如,如果使用不同时间周期平均数的移动平均数,它们全部以红色显示。当然这样很不方便。这个颜色可以进行手动改变,不过还有其他的解决方法。如果可以提前命名带有附加指标的模板为 <expert_name>.tpl (for example, Moving Average.tpl) ,当图表打开测试时会使用该模板。如果没有可用模板,将接受tester.tpl 模板。

这里还需要注意一处细节。如果以上面的方法打开测试图表,当前历史数据将被加载进入。如果已经包含测试顺序,没有任何问题。如果使用的数据是其他数据提供呢? 很遗憾,测试策略会支持所谓的策略测试直观化。



如果检测“直观化”,使用 <expert_name>.tpl 或 tester.tpl模板“调试”图表将自动从服务器中打开。图表会显示当前测试顺序的状态。通过滑动的方法可以改变直观化的比率。如果向左移动,比率降低。如果向右移动,比率加快。使其停顿,可以按 "||" 按钮或者键盘上的 Pause键。停顿之后继续测试,需要按 ">>"按钮或再次按 Pause键。测试停顿时,可以通过 F12 一步一步地手动直观化。 加速使用 "+" 按钮,减速使用"-"按钮。指定日期可以点击"跳至"。这种情况下,直至测试到达指定日期都无需重新绘制图表,本质上加快了进程。 测试结束后(或是通过点击“停止”),历史数据将会显示在图表上。

查看测试图表,可以通过鼠标双击相应的部分得到对应结果。如果测试图表已经打开 (检测"直观化"或点击 "打开图表"),在“结果”栏中双击将移动至相应的日期。

优化交易策略, 至少需要两步完成。在“设置”栏中检测“优化”并设定初始值和最终值。在智能交易属性窗口“输入数据”栏改变优化参量的增加值。



如果智能交易没有任何输入数据,则不能够进行优化。优化的过程可以提高优化限定设置。



当达到相应的限定后,测试停止通过参量。测试开始新(下一个)输入数据的设定。另外,如果因为限定而终止参量通过,优化视为失败并且不会列出结果。负值赢利同样视为失败。为了使没有通过的参量不在优化结果的列表中出现,需要在“优化结果”栏的上下菜单中选择“忽略无效结果”。

经常性由于类似“策略优化没有运行”的原因,以默认的方式列出失败结果。这种情况下,在日志内将会显示 "NNN results have been discarded as insignificant" 信息。

要加快优化的进程,需要实现结果存储。如果重复优化通过参量,测试在当前输入数据设定的存储结果中找到,找到结果会被使用。这样,优化可以停止运行,因为在下一个智能交易的相同数据优化开启时将允许从先前计算结果和继续计算结果中获得。如果测试数据已经改变、智能交易重新编译或者智能交易使用的数据库被替换,优化结果将被重新设置并且在此进行计算。

测试不能够控制水平2或更高数据库的改变 (即,数据库调用其他数据库)! 这就是在一些情况下需要手动重设存储的原因。例如,智能交易的重新编译。包含存储数据的文件被保存在 tester\caches 目录中。

基因演算 开启后,对于优化结果存储会起到帮助作用。在智能交易的属性窗口的“测试”栏中可以开启优化基因演算。



基因演算的参量被自动指定
  • 总体的数量取决于全部可结合参量的总数,并且其值在64 到256之间。
  • 最少生成总数取决于总体大小,并且其值在15到31之间。
  • 因此,最少基因优化通过总数在 960到7936的范围之内。
  • 交叉的可能性为100%。基因随意偶然交叉,不排除自身交叉。
  • 变化的可能性为10%。
  • 反方向的可能性为10%。
  • 如果基因库在10代之后没有改进,基因优化将会停止。需要具备最少基因代形成数量。

测试日志在目录 \logs中被锁定。 文件本身含有延伸 .log。每天有存在相应单独的 log 文件。测试 log会在5天之内自动删除。如果从“日志”的上下菜单中选择 "清除全部日志",该栏的当前内容将被删除,所有 log 文件将被移除。

测试期间日志内大量数据输出在“日志”栏内可能不会得到完整的信息,但是可以确定它们进入 log 文件。优化过程中日志内没有输出数据提供。

测试完成后,可以删除不再继续使用测试业务的数据。 腾空数据,可以在主菜单中关闭“测试”窗口或 Ctrl-R 再者在工具栏中点击“策略测试”。

转自俄罗斯MetaQuotes Software Corp.
原文: http://articles.mql4.com/ru/articles/1417

本文由MetaQuotes Ltd译自俄文
原文地址: https://www.mql5.com/ru/articles/1417

最近评论 | 前往讨论 (1)
[删除] | 6 8月 2009 在 11:17

好的,学习下,谢谢

我的第一个 "圣杯" 我的第一个 "圣杯"
及时检测频繁出现的错误,第一时间引导程序创建一个“超级赢利”(测试时)的交易系统。" 在测试中示范智能交易显示意想不到的结果,但在真实交易中接近亏损。
在 MQL4.Community上轻松简单地公布影音图像 在 MQL4.Community上轻松简单地公布影音图像
通常通过展示总是会比文字描述收益更多。我们在本文中提供一个简单的方法。通过使用CamStudio创建影音图像在上 MQL4.community 论坛公布。
如何成为2008自动交易锦标赛的参赛者? 如何成为2008自动交易锦标赛的参赛者?
举办锦标赛的主要目的 - 推广自动交易并且积累自动交易的实用信息。作为锦标赛的主办方-- 我们将致力保持锦标赛的公正性并防止一切企图欺骗的行为。 为此设定了严格的锦标赛规则。
在 MetaTrader 4 中比较基因演算方法和简单搜索 在 MetaTrader 4 中比较基因演算方法和简单搜索
文章比较了使用基因演算方法和简单搜索获取的智能交易的时间和结果。