English
中文
日本語
ID
Vietnam
한국어
Filipino
 
   学院导航

外汇交易中如何设置EA交易参数

Expert Advisor Strategy Design: How to Setup an EA

趋势交易策略一直是所有认真交易者的最爱,趋势交易指标之王一直是移动平均线。 今天使用移动平均线交易的资金可能比使用所有其他技术指标的总和还要多。 它们之所以如此受欢迎,是因为它们提供了识别趋势的最清晰方法。 它们显示趋势的方向,然后平滑或抑制其波动。


因此,我们将注意力转向移动平均线,作为如何制定自动化移动平均线策略的示例指标。


在本文中,您可以学习如何使用不同类型的移动平均线交叉设计 Expert Advisor 策略和设置自动交易。


与任何基于指标的策略一样,您必须在其绝对原始状态下测试移动平均线指标作为可能策略的稳健性。 这意味着您正在尝试尽可能地限制可能的外部选项和内部参数的数量。 一旦我们限制了外部选项和内部参数,我们就可以在我们预定义的时间范围内关注长度和方法方面的最佳移动平均线,以及如何构建简单的移动平均线交叉策略。


让我们为这两个概念提供一些背景信息:


限制外部选择;


限制内部参数。


限制外部选择

限制外部选项意味着,当我们开始测试指标的稳健性时,我们不会用策略常见的任何可能的添加剂来修饰它:


不与其他指标结合。


没有额外的入门技巧。


没有额外的退出技巧

(没有止损、止盈、收支平衡、移动止损……

只是简单的停止和相反信号的反向)。


没有额外的过滤技术(没有每小时或每天的过滤器,没有交易量、趋势或逆趋势过滤器)。


没有额外的订单管理技术。


没有额外的资金管理技巧。


我们现在保持原始和裸露状态的原因是,每个额外的添加剂或指标、进入和退出技术、过滤器、资金管理公式的组合都会增加曲线拟合和指标污染的机会。


过度优化(曲线拟合)是根据具体数据调整指标参数的过程,过度优化交易系统以产生看起来不错的东西。 系统具有的部件和参数越多,计算机可以优化的参数值就越多,以便找到使系统在回溯测试中“盈利”的确切数字,而不是在现实世界中。


指标污染是我刚刚发明的一个术语,用于描述向任何一个指标添加外部指标和技术如何掩盖和扭曲该指标的真实性质。 例如,在基于指标的策略中添加止盈或移动止损可能会迫使其过早退出获利,从而阻止策略开发人员了解其从头到尾的表现,进入买入并反转方向 卖。 同样,添加第二个指标作为确认指标可能会迫使其进入太晚,从而阻止策略开发人员了解其从头到尾的执行情况。 相反,我提倡基于指标的策略应该保持纯净和无污染,这样策略开发者才能真正了解该指标的内在价值。 我不反对在策略中添加其他指标和技术; 为了透明起见,我只是建议一开始就保持干净。


一旦我们弄清楚指标本身是否可以成为有利可图的止损和反向策略,我们就可以看看添加这些额外功能是否可以改善它。


限制内部参数

限制内部参数意味着当我们开始测试指标的稳健性时,我们将重点放在其核心参数上以进行可能的优化,将其他参数默认为通用值。


例如,对于移动平均线指标,除了决定我们是否要将其作为单一、双重或三重交叉系统进行交易之外,我们还必须决定许多内部参数:


什么是最好的货币对(EURUSD 或 GBPUSD 或 USDCHF 或 AUDUSD 等)?


什么是最佳时间范围(从 M1 到 MN1)?


什么是最佳价格(开盘价、最高价、最低价、收盘价)?


什么是最好的方法(简单、指数、线性加权等)?


最佳长度或周期是多少(从 2 到 2000)?


这些参数中的大多数都出现在 MT4 原生的移动平均线指标中,它有自己的特定语法:


double iMA(字符串符号)、int timeframe、int period、int ma_shift、int ma_method、int MAPrice、int Shift)


我喜欢将 iMA 标识符后面括号中的结构想象成一辆有多个指定座位的公共汽车。 公交车上的每个座位都用逗号隔开,称为参数。 iMA 指标 h

请注意,当 20 日均线在 2008 年下穿 200 日均线时,它成功地在危机的下行趋势中上涨了 1600 点,然后在 2009 年交叉时,它成功地在从危机的上升趋势恢复中获得了 2700 点左右。 2009 年 3 月至 2011 年 7 月。 这种黄金交叉策略对于捕捉长期外汇趋势确实非常强大。 由于市场的分形性质,它也可以是在较小时间范围内使用的强大组合。


较长周期移动平均线的缺点是它对价格变化和趋势逆转的反应较慢。 您可能会因进入新趋势而延迟太久,从而错失良好的价格入场或完全交易。 较长的周期延长了价格最终越过移动平均线所需的时间,到那时,移动可能已经结束。


缩短移动平均线的长度可以让您更早地进入趋势及其逆转。 这可能是一件好事,因为您希望能够捕获尽可能多的点数。 但要小心。 过度缩短长度会产生更锯齿状、更接近的移动平均线,在横向波动的市场中不可避免地被切碎和伪造。 例如,我发现要在 H1 或更低的时间框架内使用小于 25 个周期的移动平均线是极其困难的,因为较短的长度会使一个人陷入太多的错误趋势和错误的出局。


那么,关于长度的问题的症结在于在平滑度和速度之间找到适当的平衡。 人们希望长度足够长以平滑并避免起伏不定,但又要足够短以快速让您尽早进入趋势。 因此,策略开发人员试图优化长度,以便在流畅性和速度之间找到适当的平衡。 正如我们将看到的,交易者也尝试不同的方法来帮助解决这个问题。


优化提示 #1:将长度设为任何基于指标的策略的外部参数以对其进行优化是个好主意。


例如:


双 ma_current = iMA (NULL,0,200,0,0,0,0);


将:


// 放在外部变量区

外部 int MALength = 200;


// 放在 start() 函数之后

双 ma_current = iMA (NULL,0,MALength,0,0,0,0);


优化提示 #2:我通常从对特定时间范围的可靠长度进行有根据的猜测开始,然后根据我的变量范围以 5、10 或 25 为步长对其进行优化。 例如,如果我要在 H1 时间范围内测试移动平均线,并且我想测试从 25 到 600 的范围,我将以 25 为步长进行测试。请记住,最佳长度应该在所有相邻参数上获利 值。 例如,如果您发现最佳长度为 200,那么 (150, 175) 之前和 (225, 250) 之后的参数值也应该是有利可图的。


方法:指标参数的皇后(在简单和指数之间进行真实选择)。

正如我们所见,改变长度是在平滑度和速度之间找到适当平衡的最重要方法。 改变方法也可以帮助解决这个问题。


在移动平均线指标中,有四种内置方法:简单、指数、平滑和加权。


常数值名称计算说明

MODE_SMA 0 简单移动平均线在计算期间对每个价格赋予相同的权重。

MODE_EMA 1 指数移动平均线更多的权重被赋予最近的价格以试图减少滞后。

MODE_SMMA 2 平滑移动平均线,类似于 SMA; 但是,不是减去最旧的值,而是减去之前的平滑平均值。

MODE_LWMA 3 线性加权移动平均线 旨在将更多权重放在最近的数据上,而将更少的权重放在过去的数据上。

我不打算深入探讨这些模式的数学原理,因为它们在网络上的其他文章中有所介绍。


在实践中,您会看到 4 种模式之间有两个联盟,这将实际选择的数量减少到两个:


平滑联盟:简单+平滑

SMA和SMMA都强调平滑。 你会发现在使用相同长度的情况下,SMMA 比 SMA 更平滑。


例如,这是 GBPUSD H1 图表上的 50 SMMA 与 50 SMA:作为七个参数。 每个参数依次拥有一个默认值,可以自定义(或个性化,以保持总线隐喻)。 了解每个参数的功能、每个参数的默认值、如何自定义它们以及哪些参数真正驱动总线是很有用的。


下表描述了移动平均线的每个参数:


参数说明

Symbol 交易符号,例如 EURUSD。 NULL 或 Symbol() 表示放置指标的图表的货币对。

TimeFrame 应用移动平均线的图表时间段,通常设置为 0,表示 EA 附加到的图表符号。

MAPeriod 移动平均线的回顾期。 这是最重要的变量。

MAShift 移动平均线的前移,以柱为单位,通常设置为 0。

MAMethod 移动平均线的计算方法,可选择简单、指数、平滑或线性加权。 第二个最重要的变量。

MAPrice 计算移动平均线时使用的价格数组,可以是收盘价、开盘价、最高价、最低价或某种类型的平均线。 通常使用默认值 0 或关闭。

Shift 返回计算的柱的向后移动。 值 0 返回当前柱的指标值,值 3 将返回 3 柱前的指标值。 正如我们将要看到的,这是第三个最重要的变量。

可在此处找到对 MA 参数(以及所有 20 个本机指标的参数)的便捷快速参考:https://docs.mql4.com/indicators/iMA


现在我们已经了解了所有可能的参数,我想提供一个建议。 只寻求优化其中两个:长度和模式。 如果您在柱线末端进入交叉点,您可能还需要优化时间范围。 其余的保持默认值。


定界参数:货币对、时间框架、价格。

货币对。

当使用移动平均线等趋势指标进行交易时,最好首先测试 EURUSD,原因有二。 首先,大多数主要货币都是高度相关的,因为它们都是与美元配对的,因此最好选择流动性最强的货币对,以获得最低的价差和最快的执行速度。 其次,由于 EURUSD 是交易量最大的货币对,因此它最有可能成为指标的成功之选,因为大多数指标在很大程度上都依赖于其受欢迎程度的自我实现预言。 因此,您想在最流行的货币对上测试最流行的指标,以获得最大的成功机会。 鉴于移动平均线是最受欢迎的指标,而 EURUSD 是最受欢迎的货币对,这种组合最合乎逻辑。 完成 EURUSD 后,接下来将测试 GBPUSD、AUDUSD 和 USDCHF,看看您的策略是否适用于这些相关货币对。


大体时间

对于时间框架如何影响移动平均线本身的形成,存在一个普遍的误解。 许多新手策略开发人员在一个时间框架上开发和优化移动平均线交叉,然后认为如果他们在不同的时间框架上开发它,这就是一个新策略。 但真的如此吗? 相反,我认为长度更重要,它可以取代时间框架提供的许多表面上的优势。 您只需将长度增加/减少时间范围差异的倍数,以说明不同的时间范围。 例如,如果您发现您的 100 周期移动平均线在 H1 时间框架上效果最好,那么它应该或多或少与 M30 时间框架上的 200 周期移动平均线相同(M30 是 H1 的一半,因此 100X2=200) ,或 H4 时间范围内的 25 周期移动平均线(H4 比 H1 大 4 倍,因此 100 / 4 = 25)。


但是,如果您希望您的策略等待在形成交叉的柱线收盘时入场,而不是交叉本身的时刻,那么时间框架确实很重要。 然后您将入场时间延迟到柱线收盘,这使得柱线的时间范围现在更加相关。 在收盘时交易如何使时间框架更相关? 让我们以建立在 H1 时间框架上的 100 周期 MA 交叉策略和建立在 M30 时间框架上的 200 周期 MA 交叉策略为例。 两者都设置为在柱结束时进入/退出。 如上所述,这两种策略会在同一点交叉,在它们各自的条柱内的某个地方。 但是,时间进入/退出将必须针对不同的时间范围进行调整。 如果我将我的策略设置为等待 M30 图表上 200 周期移动平均线的交叉,那么该策略将进入/退出与 100-H1 图表相同的交叉点,但不同之处在于它将进入/退出 在超过/低于移动平均线的 M30 柱的收盘处,而不是后来的 H1 柱。 因此,M30 时间框架会比 H1 柱上构建的相同策略早 30 分钟为您提供交叉机会。 有时如果您希望策略快速跳入和跳出,有时您需要额外的滞后时间以避免噪音。 有时您可能想要 H4 或 D1 柱的滞后而不是 M15 或 M30 柱的快速,反之亦然。 为什么要等收盘? 首先,如果您等待收盘,则更容易回测您的策略。 其次,无论出于何种原因,它有时会产生更好的结果。


因此,如果您决定使用收盘柱构建您的交叉策略,您可能需要在 H1 时间框架上测试作为初始时间框架,然后测试下面的时间框架(M15 和 M30)以查看速度是否可以更快 有利,并测试上述时间框架(H4 和 D1),看看滞后或缓慢是否更有利。


如果时间范围对您的策略至关重要,最好将时间范围作为外部参数以对其进行优化。


价格

价格应保持默认为 0,即收盘价。 我确实想到了将价格更改为高价、低价或开盘价的任何充分理由。 实际上,其他价格可能有充分的理由,但如果您的移动平均线策略不适用于收盘价,那么它也不会适用于其他价格。


长度:指标参数之王

长度是任何移动平均线最重要的组成部分。 这是应该寻求优化的第一个变量。


如果您使用的是双移动平均线,那么真正定义趋势的是慢速移动平均线。 快速移动平均线的长度通常是慢速移动平均线长度的 1/4 到 1/10 的小数部分,因此正确与否并不是什么大问题。


一般来说,长度越长,对价格行为的反应就越平滑和缓慢。 这就是您想要找到较大和中型趋势所需要的。 例如,200 天 SMA(简单移动平均线)与更快的 20 天 SMA 或 50 天 SMA 的交叉是著名的“黄金交叉”的基础,全世界的交易者都用它来识别更大的趋势:


以下是 AUDUSD 高于/低于 200 天 SMA 的 20 天 SMA 交叉:

如您所见,SMMA (50) 对价格变化的反应比其 SMA (50) 对应物更慢。 我们被告知这是因为 SMMA 提供了比 SMA 更平滑的计算。


然而,如果 SMMA 的长度减半,它看起来与 EMA 非常相似,这一视觉事实削弱了它的区别。


这是 GBPUSD H1 图表上的 50 EMA 与 25 SMMA:

如您所见,50 EMA 和减半的 SMMA (25) 之间几乎没有区别。 线条完全重叠。


因此,如果 EMA 和 SMMA 之间的真正区别在于长度,则最好使用 SMA 作为平滑度的真正代表。 使用 simple 的好处是它流行且意图平滑,即它意图(给定足够长的长度)提供更可靠的趋势信号。


然而,有些人不喜欢 SMA 因其平滑特性而滞后于最新数据点这一事实,他们更愿意为最近的数据点赋予更多权重,如加权和指数移动平均线。


速度联盟:指数 + 线性加权

指数和线性加权移动平均线都试图通过为最近的价格分配更多的意义而为旧的价格分配更少的意义来克服价格滞后。 这样一来,他们都能更快地对价格变化做出反应。 然而,在实践中,您会发现,尽管它们以不同的方式为近期价格赋予更多意义,但它们通常遵循相同的路径。


例如,这是 GBPUSD H1 图表上的 50 EMA 与 50 LWMA:

虽然这不是完全匹配,但大多数趋势逆转都发生在同一地点。 您不会在 50 周期 EMA 的交叉与 50 周期 LMMA 的交叉之间找到完全不同的策略。


因此,如果两者之间没有显着差异,则最好使用指数,因为它更受欢迎。


与简单指数相比,使用指数指数的优势在于它比简单指数更快地适应市场价格。 它减少了滞后,让你更早地进入趋势逆转。 缺点是它可能过于敏感,否定了移动平均线的初衷:平滑价格行为。 EMA 往往更容易受到市场波动的影响。


真正的选择:SMA 和 EMA 之间

虽然事先知道方法的真正选择是在简单方法和指数方法之间要容易得多,但很难事先知道哪种方法更好。 虽然人们可能会因为它的流畅性而倾向于简单,或者因为它的速度而倾向于指数,但最终,在对两者进行公平审判之前,人们永远无法知道谁将成为游戏的真正女王。


优化提示#1:将方法作为任何基于指标的策略的外部参数以对其进行优化是一个好主意。


例如:


双 ma_current = iMA(NULL,0,200,0,0,0,0);


将:


// 放在外部变量区

外部 int MATime = 0;

外部 int MALength = 200;

外部 int MAMethod = 0; // 0 = 均线; 1 = 均线; 2 = 标准移动平均线; 4= SWMA


// 放在 start() 函数中

双 ma_current = iMA (NULL,MATime,MALength,0,MAMethod,0,0);


优化提示 #2:仅在 SMA 和 EMA 之间进行优化。

因为我已经表明 SMMA 是 SMA 的冗余版本,而 LWMA 是 EMA 的冗余版本,所以您实际上也不需要对这两者进行优化。 在 SMA 和 EMA 之间,在 0 和 1 之间,以 1 为步长进行优化会更智能、更容易。


交叉:从双重移动平均线交叉开始

当交易者来尝试构建移动平均线交叉系统时,他经常会问自己是否应该进行单一、双重或三重移动平均线交叉。 有关差异,请参阅我关于移动平均线的文章。


答案很简单:双移动平均线交叉是最好的。


有些人会争辩说,单一移动平均线交叉具有最简单的优势。 当收盘价超过/低于移动平均线时,您做多或做空。 但是双移动平均线也可以很简单:当快速移动平均线穿过/低于慢速移动平均线时,您可以做多或做空。 单 MA 的优势在于交叉速度更快,但如果快速 MA 足够短,双 MA 也可以在交叉速度更快。 事实上,如果您构建双移动平均线交叉系统,您可以通过将快速 MA 设置为 1 来测试单移动平均线交叉作为潜在策略。将快速 MA 设置为 1 基本上将快速 MA 简化为 a 的函数 关闭柱线,使其表现得像一个单一的移动平均线交叉系统。


三重移动平均线可能会有问题。 进场机制与双均线基本相同,在快均线穿越慢均线时进场。 不同之处在于退出机制,它需要更快的方法,当第三个更快的 MA 越过/低于慢速 MA 时退出。 但是第三个 MA 的引入存在指标污染的风险。 如果它在较快的 MA 穿过/低于较慢的 MA 时退出,它会以与止盈或追踪止损相同的方式缩短移动平均线的潜在寿命。 添加这第三个 MA 会迫使 MA 策略过早退出,从而阻止策略开发人员了解它从头到尾的执行情况、退出和反向信号。


因此,我们将从双交叉开始。


形成停止和反向双 MA 交叉的进入/退出条件

从一开始就限制了一些外部选项和内部参数,现在是时候开始使用双移动平均线策略了,该策略只寻求优化慢速 MA 长度和两种方法,SMA 和 EMA。


那么,我们最初的想法是编写 20-200 周期 MACross 的入场条件,但我们不会像最初预期的那样在较高的每日时间范围内对其进行测试,而是在 H4 时间范围内进行测试。 鉴于市场的分形性质,它应该在这个较短的时间范围内同样有效,并且它应该为我们提供比每日时间范围更大的交易样本量。 我们将相反的入场转换为出场,以使其成为一个简单的停止和反向系统——这是测试入场方法强度的最佳方法。 一个好的入场方法,翻转过来使相反的入场变成出场,也应该作为出场方法发挥足够的作用。 稍后我们将更改时间范围、长度和方法的移动平均线,看看这种变化是否给我们带来了更好的可能性。


参赛条件:


如果短 SMA 线穿过长 SMA 上方,买入(多头)。


如果空头 SMA 线穿过多头 SMA 下方,则卖出(空头)。


我们只会在任何给定时间打开一个交易订单。


退出条件:


如果 SMA 短线穿过 SMA 长线下方,收盘(买入)


如果 SMA 短线穿过 SMA 长线上方,收盘(空头)


使用 MT4,通常有多种方法可以为完全相同的条件创建 EA,但现在我将坚持使用最基本的版本。


编码移动平均线交叉的标准方法是指示两组变量和条件:


FastMA 与当前柱上 SlowMA 的关系(大于/小于)以及 FastMA 与前一个柱上 SlowMA 的关系。


变量定义示例:


// 放在外部变量部分

外部 int MATime = 0;

外部 int MAFastLen = 20;

外部 int MASlowLen = 200;

外部 int MAMethod = 0;


// 放在全局变量部分,就在外部变量下面

双倍的

FastMAC 当前,

FastMAPrevious,

慢MAC电流,

慢MAPrevious;


// 放置在 Start() 函数中,在入口条件之前

FastMACurrent = iMA (NULL, MATime, MAFastLen, 0, MAMethod, 0, 0);

FastMAPrevious = iMA (NULL, MATime, MAFastLen, 0, MAMethod, 0, 1);

SlowMACurrent = iMA (NULL, MATime, MASlowLen, 0, MAMethod, 0, 0);

SlowMAPrevious = iMA (NULL, MATime, MASlowLen, 0, MAMethod, 0, 1);


注意:有关 iMA(移动平均线)参数的便捷参考,请访问此处:https://docs.mql4.com/indicators/iMA


FastMACurrent 与 FastMAPrevious 的区别不是我分配给每个变量的名称(我选择这些名称只是为了帮助我记住我正在处理的移动平均线); 它是 iMA 的最后一个参数。 最后一个参数称为“shift”,用 0 表示当前柱,用 1 表示前一个柱,用 2 表示当前柱后两根柱,等等。


在我的设置中,我将引用这些变量作为进入条件:


布尔值

开买=假,

开卖=假,

关闭买入 = 假,

关闭卖出=假;


如果(FastMACurrent > SlowMACurrent && FastMAPrevious < SlowMAPrevious)

{

打开购买=真; // 买

如果(相反关闭)

关闭卖出=真;

}


如果(FastMACurrent < SlowMACurrent && FastMAPrevious > SlowMAPrevious)

{

开卖=真; // 卖

如果(相反关闭)

关闭买入=真;

}


对于买入信号,您可以看到我需要指出当前柱的快速移动平均线必须大于当前柱的慢速移动平均线。 当前柱的条件是有道理的。


那么,为什么我还必须指出第二个条件,即前一个柱的快速移动平均线必须小于前一个柱的慢速移动平均线?


如果我没有指明第二个条件,并且仅使用当前 MA 关系作为买入信号 — 例如,如果 (FastMACurrent > SlowMACurrent),我将在每次止损或获利后连续买入头寸,因为代码告诉 程序需要下新订单,因为当前快速移动平均线仍高于慢速移动平均线。 但是,我不想连续输入。 我想在交叉的那一刻进入。 由于 MT4 中没有本机交叉功能,我必须创建一个解决方法:我必须创建第二个条件,声明当快速 MA 当前高于慢速 MA 时我无法进入,除非快速 MA 先前低于慢速 MA。


与 TS8 的轶事比较

在 Tradestation 的 EasyLanguage 中,您使用名为“Crosses Above/Over”或“Crosses Below/Under”的保留字(函数)来省去这个额外的步骤; 您只需要说,“如果 AverageFC (C,20) 越过 AverageFC (C,200),则购买”。 然而,在 MT4 中,它并不那么简单。 除非您自己创建一个,否则您没有“交叉”功能的便利。 相反,您必须阐明具有两个条件的交叉过程:如果当前柱的 MA (20) > MA (200),以及过去柱的 MA (20) < MA (200),则买入。


我们现在需要做的就是将我们的设置参数插入到 EA 中,您可以在 EA 中看到我是如何这样做的:


ForexRazor_MACrossoverEA_InstrumentX_v1.0


下载 EA 并打开引擎盖,看看它的外观。


使用 MA Crossover EA 进行初步回测

我计划在 10K 模拟账户上使用 0.1 迷你手在 EURUSD 的 H4 时间框架上测试我新创建的 20-200 SMA 交叉。 因为这是 MA 交叉,所以最好的信号通常是从较高帧上的较长长度生成的。 较短时间范围内的较短长度可能会产生太多错误信号。 我选择三个时间段进行回溯测试。


在正式采用欧元之前,我将使用 FXPro 对从 1971 年到 1999 年 1 月的 28 年期间的 EURUSD 进行回测。 如果欧元不存在,FXPro 如何获得 1999 年 1 月之前的 EURUSD 数据? 可能有两种方式: FXPro 可能采用德国马克的数据,这是 t 的最强代表欧元,或者它可以使用 1999 年 1 月开始时组成欧元的 11 种传统货币的合并历史篮子。 接下来,我将对从 1999 年 1 月到 2009 年 1 月这 10 年的 EURUSD 进行回溯测试,这应该可以了解该策略在其正式推出的头 10 年的起起落落中是如何运作的。 最后,我将对 2009 年至 2012 年的过去三年进行回测,看看该策略在最近这段受主权债务危机困扰的时期是如何运作的。


Backest#1:从1971年1月到1999年1月的28年(点击图片查看详细报告):

该 EA 在 49 次交易(16 次获胜)和 28 年(每年 2.8% 的回报率)中产生了 7690 美元/7690 点/76% 的回报,如果您碰巧从错误的起点开始,则会遭受 3786 美元/3780 点/37% 的回撤 时间。 如果您能忍受这种下降,那么这些都是不错的结果,因为在超过 28 年的时间里,大多数 EA 的性能都会严重下降,而这个 EA 却始终保持领先地位并产生了结果。


好吧,让我们看看它在欧元诞生的最初十年里做了什么。


回测 #2:1999 年 1 月至 2009 年 1 月的 10 年(点击图片查看详细报告):

在接下来的 10 年里,EA 仍然设法保持领先地位。 在这里,10 年的回报率为 4996 美元/4996 点/49%(每年 4.9%),最大回撤为 2088 美元/2088 点/20%,这些数字表明比过去 28 年更好; 然而,它的利润系数已经从 1.8 下降到 1.48,这表明有更多的回撤期。 当您比较两个股票图表时,情况似乎就是这样; 第一个看起来像稳步上升,而第二个看起来锯齿状上升。


好的,现在让我们看看它在过去三年中的表现如何。


回测#3:从 2009 年 1 月到 2012 年 1 月的 3 年期间(点击图片查看详细结果):


如您所见,EA 看起来很有前途。 它在 3 年(每年 7%)和 41 笔交易(11 次胜利)中获得了 2152 美元/2152 点/21% 的回报,同时遭受了 1978 美元/1978 点/19% 的亏损。 我喜欢看到每年的业绩翻了一番,总体统计数据与过去 38 年的情况大致相同。 请记住,对策略进行回溯测试的时间越长,退化的可能性就越大。 很少有 EA 策略开发人员/供应商会在他们的 EA 上显示超过 3 年的回测,甚至更少的部分可以显示超过 10 年。 他们没有显示,因为他们已经将他们的策略曲线拟合到最近的数据周期,而它在之前的周期根本不起作用。 我在上面创建的 EA 是一个没有优化和曲线拟合的基本系统,在 41 年的时间里,它在捕捉更大趋势方面表现得非常可靠。


结论

到目前为止,我们界定了大多数外部选项并界定了所有内部参数,以创建一个非常原始、简单的止损和反向 20-200 双移动平均线交叉。 正如我们所见,在过去 41 年的 EURUSD H4 支持中,它表现得非常好,10K 账户产生超过 15000 美元/15000 点,没有资金管理。 我相信它做得很好正是因为它的原始状态。 当您不使用额外的指标、进入/退出技术、过滤器、订单和管理技术来修饰基于指标的策略时,您会看到它按应有的方式运行,曲线拟合和指标污染的可能性较小。 系统的部件和参数越少,系统对历史数据进行曲线拟合的可能性就越小。 此外,叠加指标和技术的多种组合可能会掩盖和扭曲基于指标的策略的真实性质,因此至少在开始时保留此装备过程可以帮助人们了解基于指示的策略如何在其赤裸裸的情况下执行 状态。


此外,我认为在所有内部参数中,长度是最重要的,方法(这里的真正选择是简单和指数)次之。 我选择 20-200 Dual SMA Crossover 是因为它是最受欢迎的移动平均线交叉版本之一,用于确定长期趋势方向。 虽然大多数人在每日时间框架上使用它,但我认为它也可以在 H4 时间框架上使用,因为市场的分形性质,并且因为我们可以看到更大的交易样本量。 看到它在 41 年的时间里取得成功,我并不完全感到惊讶,因为每当我将这两个简单的移动平均线绘制在图表上时,我都能想象出快速穿越慢速通常如何获得更大的趋势。


在下一篇文章中,我们将继续优化长度和方法,看看是否可以发现我们的双移动平均线交叉是否可以通过不同于 200 的长度或不同于简单的方法(例如指数)来增强。 在这样做的过程中,我们将寻求避免过度优化和曲线拟合的双重危险。