回溯测试/优化 - 页 7

 
lomme:
这就对了。

但对于回测来说,最好的颗粒度也是1分钟。

我可以想象,tick数据不会改变1分钟回测的结果。

有谁回测 过这个数据吗?我也同意1分钟的数据不会有很大的 区别,除非专家顾问使用过度的剥头皮,那么即使是几秒钟也可能算。

 

背面测试和优化

首先要注意的是,优化应该只用于验证基于市场行为或事实的现有想法,而不是发现一个伟大的交易想法。 交易理念必须是第一位的。 对市场进行优化的危险在于过度拟合曲线,在历史数据上起作用的东西在未来可能不起作用,但你为过去的数据找到了一个伟大的组合。 然而,它可以在几个市场中使用,以找到一组不应该使用的参数,而是交易系统的敏感性。 模拟/回测的另一个用途是了解你系统的弱点和优势。 它什么时候表现好,什么时候滞后,什么时候直接失败,这样你就可以开发新的想法来解决这些问题。

在这一点上,重要的是要明白,数据是回溯测试最重要的方面。 由于回溯测试 实际上只是对历史数据的模拟,而不是数学分布,所以你需要在各种货币对上获得高质量的数据,代表不同数量的市场条件。 牛市,熊市,以及具有不同波动性的横盘。 如果该系统能够承受各种市场条件,包括震荡,那么它就足以用于交易。 如果没有代表性的数据,你的结果对真实市场没有意义。

然后,你必须决定需要进行多少次测试,以便对你的结果达到一个信心水平。 这意味着对15-30个有足够代表性的数据集进行反向测试,并制定一个置信区间。 这将假设数据是正态分布,而金融数据不是,它是向左倾斜的,右边的尾巴很厚。 因此,一个选择是使用中心极限理论来改进你的实验,使其更加可靠。

Tradestation的回测器可能比metatrader更可靠,因为它可以进行tick交易,而不是等待收盘价,但这对metatrader中的EA也是一样的。 我不认为metatrader的回溯测试器是可怕的,尽管它只是必须被正确使用,在不了解模拟过程的情况下使用它,总是会导致过度拟合的结果和不现实的期望。 这将导致资本的损失。 实际上,所有这些都是为了给大家一些提示,就是要明白回溯测试、优化、模拟是用来改进系统和比较系统之间的改进的工具,而不是用来代替分析师设计系统。 我对大多数人的建议是,如果你使用回溯测试,了解模拟方法,以节省你的头痛和资本损失。

如果我真的要进行回溯测试,我会的,并且正在尝试将回溯测试系统编入模拟软件,如Arena或Witness,但我对交易站的能力感兴趣。

 

背面测试教程和技巧

我已经看到很多关于回测的讨论,而且似乎有很大的混淆,所以我决定在这里发布信息,而不是在每个与之相关的主题上发布,这可能会很长,但我希望能澄清什么是回测 以及如何正确地使用它。

回溯测试是一种模拟的形式,使用历史数据来评估交易系统的改进。

首先要明白的是,模拟是一种工具,就像制图软件是一种工具一样。 它本身并不能发现一个想法,甚至不能改进它,分析者必须根据对市场基本特征的观察来做这件事。 通常情况下,模拟试图利用历史数据来改进系统,减少系统输出的差异,但金融模拟是一个特殊的品种。 相反,我们正试图改变系统,以更好地应对我们无法控制的数据差异。 因此,我们想要一个稳健的系统,其性能对变化的市场不是很敏感。

仿真有几个部分。 有方法、系统和数据。 我将在这篇文章后详细讨论每一个部分。 我希望你觉得这些信息有用。

 

模拟方法

当决定改进你的交易系统时,重要的是要有系统性,以便设计一个成功的结果。 幸运的是,一种行之有效的模拟方法已经被开发出来。前6个步骤和后5个步骤应占你时间的40%左右。 实验步骤应该只占你时间的20%。 这些步骤如下。

1.定义问题 - 这是模拟过程中最重要的一步。 你必须清楚地说明你打算通过模拟(回测)达到什么目的。 更确切地说,你的系统现在哪里表现不佳。 是不是进场不够快,出场不够快,是不是交易太频繁,不够频繁? 你是否希望比较两个系统,决定哪一个更有价值,更可靠。 这些都是有效的问题。

2.计划项目 - 这一步是为了帮助你确保你有工具,以及成功进行实验的路线图。 我们大多数人在metatrader或其他软件中都有我们需要的东西,包括excel,但也许你不知道足够的编程来自己做一些,所以你可能需要找到帮助。 时间轴对于确定你是否完成得足够快是有帮助的。

3.定义系统--在金融模拟中,这一步涉及到决定你打算交易什么市场,以及你的系统使用什么工具来做这个。 与传统的模拟不同,你要尽可能多地包括细节。

4.4.概念化模型 - 在这一步中,你将概述你的系统是如何工作的,并制定一个将被编入交易系统的规则基础。 你可以考虑成交量、广度、动量、震荡器、周期、季节、行为技术、适应技术、风险控制、资金管理、分配系统或任何你想涉及的方面。

5.初步实验设计--到这一步,我希望你们所有人都能很快在头脑中想出这些想法,但把它们写下来仍然很重要,这样你们可以在完成后回顾和比较你们的结果。 这一步涉及到决定你将如何进行实验。 我将另外发一个帖子详细说明实验设计。

6.输入数据准备--好的数据对任何模拟都是至关重要的,尤其是金融模拟。 糟糕的数据会使你的结果膨胀或放水。 没有足够的数据是不能代表市场的。 我将另外写一篇关于市场数据的文章。 在这一步骤中,你将收集和组织你的数据,使之成为软件可使用的格式。 我认为metatrader更喜欢日期、时间、开盘价、最高价、最低价、收盘价、成交量等栏目。然后你将把它分成实验中使用的各种数据集。

7.模型转换 - 这一步是你实际在系统中编程的地方,在这一点上,你应该对系统的组织和分解成各种功能有一个很好的想法,这样就可以顺利进行。 通常有两种类型的系统;综合和垂直。 一个综合的系统以一种特定的方式一起工作,而一个垂直的系统可以添加和删除一些部件。

8.核实和验证 - 这是一个非常重要的步骤,你要验证模型是否代表你的交易系统,数据是否对各种市场条件有代表性和准确性。 在策略测试器中,运行一个样本后打开图表是一个很好的方法,可以直观地检查系统是否如你所预期的那样工作。

9.最后的实验设计--在验证了想法之后,对系统进行任何修改,如果你意识到在通过方法的过程中是必要的。 这可能意味着你在研究数据时注意到一个新的想法,或者需要一些新的报告措施来满足你的结果。

10.实验--这一步只是你运行实验的迭代,收集输出数据进行分析。 这可能还包括记录数据。

11.分析和解释--在实验运行并收集输出数据后,你应该分析数据并解释它。 这时你将决定对系统的改进是否提供了有效的贡献,如果没有。

12.

 

实验设计扩展

请注意,如果你在进行模拟的过程中忘记了什么,许多方法步骤你可能要跑上好几遍。 但有一个非常重要的方面就是实验设计。

世界上有两种类型的系统。 随机的(可变的结果)和决定性的(单一的结果)。 金融市场是仅次于天气的终极随机系统。 它充满了变数,其结果在每天和每个市场之间都可能非常大。 但我们想要的是一个能以低变化的方式对这种高度变化的数据作出反应的系统,从而在减少风险的同时提高我们的业绩。 变异是自然界的规则,有两种类型。 随机变异和非随机变异。 随机变异是系统中固有的,不可能完全消除,这意味着我们的系统在每个月都会有不同的表现。 非随机变异应该被控制。 这包括超出可接受范围的性能,或系统对数据的巨大峰值或漏洞的反应,停电,失去连接,糟糕的编程。 一个稳定的系统是一个通过某种措施管理所有这些的系统。

我们实验的重点是确定我们的系统在哪些方面的表现超出了规定的要求(不可接受的差异),并试图改进它。 因此,第一步是定义我们的衡量标准(测量值)。 Meta交易员为我们做了许多重要的指标,缩减、利润系数、良好交易百分比。 我们可能关注的是这些以外的系统功能,如进入信号和它应该进入的位置之间的差异。 这种更复杂的指标可能需要手动编程。

在确定了需要从模拟/回测中收集的重要指标后,你需要决定如何进行实验。 由于市场数据是随机的,一次运行(在一组市场数据上对系统进行一次测试)并不足以让我们对系统的性能有任何信心。 统计学会鼓励我们运行几千次,但不幸的是,我们没有那么多数据或时间。 运行的数量取决于在数据中发现的方差。 这并不是指市场数据的方差,而是指你的交易系统性能的方差。 关于交易的一切,都是为了理解方差并控制它。在 这种情况下,最好运行独立的运行(不同的数据集/市场),可能是15-30次运行,在足够长的时间段内代表所有类型的市场,即牛市、熊市和非趋势性市场。 对于外汇来说,非趋势性可能是最重要的,要看一个趋势性交易系统如何处理区间交易市场,但这取决于你的系统。

根据这些信息,你可以围绕你的结果制定一个置信区间。 置信区间是你对你的指标有一定程度的信心的性能范围。 因此,根据你对30个数据集的测试,你可以说你有90%的信心,你将赚取100,000至200,000美元之间。 这取决于你在模拟中使用的市场数据对不同的市场条件有多大的代表性,最好是你尽可能多地看到它们的表现。 如果一个新的情况出现了,就没有理由让你的结果与你的置信区间相似。 计算置信区间很简单,用x(平均值)+-(α/2的学生t值)*(s/sqrt(n))。 其中学生t值可以在表格中找到,n是样本大小。s是标准差,α是你的置信水平--可能是0.9的90%。 平均值是你对有关指标的结果的平均值,可能是利润。

如果你比较两个不同的系统,请阅读假设检验,可能使用方差检验。

所以我们学到的是要做多少次运行,需要多长时间,它们应该代表什么,以及如何评估以确定其意义。 这可能是一个令许多人困惑的部分,请随时提问。

 

回溯测试 数据的扩展

我谈到了回测的方法和实验设计以及目的。 现在我想谈谈你使用的数据。

我已经很累了,所以如果有什么不明白的地方,我很抱歉哈。

数据是非常重要的,必须有一些特征才能被适当地评估。 数据应该有足够长的时间,代表你将要执行的条件,准确和有效。

扩展开来,这意味着如果可能的话,数据应该多次代表各种市场条件。 牛市、熊市、高波动性、低波动性、严重的价格震荡、区间市场、非趋势性市场,以及其他任何你能想到的情况,因为你很可能在某些时候遇到这些情况,你希望你的系统能够处理它们。 许多人在回溯测试中犯的一个错误是,他们做了一次运行,运行了优化器,认为他们找到了交易系统的圣杯。 请永远记住,如果你的结果真的非常好,或者真的非常糟糕,可能是你的数据、程序设计出了问题,或者是你对曲线过度拟合。 过度拟合是优化你的系统,使其在以前的数据上工作得非常好的过程。 不幸的是,你可能再也看不到那样的市场条件,而你的系统是如此的优化,它对新的市场条件非常敏感,会很快崩溃。 为了具有代表性,它应该持续数年,如果有的话,应该持续数十年,如果市场发生了重大变化,如市场合并,就不应该包括在内。 我不同意一些人的观点,我觉得市场数据就是市场数据,只要它能代表某种情况,就可以作为回溯测试的好数据,所以请使用你自己的判断力。

收集用于测试的市场数据可能是一个漫长的试验,因为它从来没有以你想要的格式出现,并且总是需要比你希望的时间长三倍的时间来采购。

在外汇市场上,所有的美元对都是高度相关的,这意味着它们以类似的方式移动。 即使在一个市场内,这种情况也经常被打破,因为有自相关,这意味着下一个数据与上一个数据相关或依赖。 第二种观察在整个过程中应该是相同的分布。 同样,金融市场的分布一直在变化,但基本形状可能足够接近。 通常,它们应该是正态分布。 这总是被打破,因为价格往往停留在较低的水平上,而价格分布和价格运动分布是向左倾斜的,并且在右边有一个较厚的尾巴,这是预期的。 尽管这使我们能够赚钱,但它违反了模拟的一个基本假设。 在分析中,有纠正这种情况的方法,如对数转换,但中心极限定理通常更容易实验。 这意味着,如果你运行15次,每次运行值都是其他15次运行的平均值,这将是一个更正常的分布,是一个更现实的置信区间。 如果这没有意义,请忽略它,但请记住,回溯测试的结果与你交易的物理系统之间没有关联,它只是一个工具,而且是一个好工具,但必须理解并正确使用它。

许多其他的主题应该被考虑,而且可能会在以后出现,比如。

回溯测试程序

优化

统计学

概率

转换

实际考虑

分布和理解它们

随机流和综合数据

假设检验

monte carlo优化/比metatraders更快

但在那之前,我希望这有点帮助,当你实施你的交易系统时,你可以进行更好的回溯测试并取得更好的结果。 欢迎提出问题,我知道这是一个很大的问题。

 

很好的解释。

谢谢你,Cro2314

 

关于不同的回测系统的简短问题...

Tradestations软件是否比Metatrader软件更适合做回测

有没有人对这两个软件都有经验?

到目前为止,我的结论是Tradestations的回测系统似乎比Metatrader更先进,但另一方面,Metatrader是免费的,而Tradestation要花费美元。

任何关于它们之间差异的反馈都是好的。

 

我只知道一些

编辑****5月27日。 其重要的是要注意,回测是一种模拟练习,而不是模拟器。有一个模拟器似乎工作得很好,在这个网站上被列为Forex tester。 可以作为回测器使用,但还不能用EA的。 模拟/回测实际上是为了提供关于你的交易系统性能的统计数据,以便你能分析其弱点。 最终试图减少你的权益曲线的斜率随时间变化的差异。 我想知道这是否就是人们不喜欢metatraders backtester的原因。 也许他们正在寻找一个模拟器。 但是,如果你要找的是视觉效果,只需在你运行策略测试器后 打开图表,你就可以看到EA的确切交易情况。 这对系统的验证非常有帮助。

实际上,我对tradestations backtester没有什么经验。 但我确实认识到一些优势。 Tradestation可以进行日内(tick)购买,而不是在策略测试器中使用收盘价,(在最新版本中刚刚发生)而metatrader使用收盘价。 根据你的策略,如果你的交易速度非常快,并试图抓住偶尔出现的两到三个柱状移动,这可能会对你的系统产生重大影响。 但这也违背了许多等待收盘价的基本策略。 另一个区别是,你可以用不同的语言来编程,而一些常见的任务,如变量求和,在tradestation上似乎更容易。 我听说metatrader有一些内存限制,而tradestation则没有限制,但我没有遇到过这种情况。 我不知道它对系统变量有什么限制,比如那些使EA不能像metatrader那样为你在屏幕上加载其指标的变量。 另外,tradestation给你提供的预写统计数据在回测结果上似乎更强大。 TradeStation有一些优势,但请记住,如果你只是运行一个完全自动化的系统,回测器的反应应该和软件一样。 如果是这样的话,我建议在你用于自动交易的同一软件上进行回测,否则你可能会感到惊讶。

总的来说,我认为它的程序设计更好,但与许多人不同的是,我认为如果使用得当,并且你对它如何执行你的代码有一定的了解,metatraders的回测器就能准确地按照它的要求工作。 不过模拟软件总是这样,所以我不认为这是一个缺点。 你使用什么软件通常并不重要,重要的是你如何解释它给你的数据。 现在我只是在发牢骚,所以我就不说了。

顺便感谢Felix的夸奖,非常感谢。

 

我的回溯测试器 走得很慢......帮助。

有时它很快,有时它又太慢了。 我不知道为什么。 我在日志中发现了一个1.5GB的文件,我把它删除了,但它仍然很慢。 有什么更好的方法来回测程序吗? 我在使用Metatrader,我经常只有20%的建模质量。