大家好,今天想和大家分享一下我自己设计的一款交易助手(EA),它是基于双移动平均线的策略。代码部分是由Sergey Diubakin编写的。
这款EA主要用于PAMM账户交易。在我的操作下,实际净利润达到了20%,但最大可达84%的收益率。真实交易时间为2015年2月23日至2015年7月23日。
根据我的观察,这款EA的交易需要较大的资金支持,建议最低资金在15,000到20,000之间。
这款EA使用了移动平均线指标的数值进行交易。当快速移动平均线位于慢速移动平均线之上,并且两者之间的距离大于设定值时,EA会开设买单。
相反,当指标的值发生变化时,则会开设卖单。订单关闭时机则根据移动平均线的数值来决定。
这款EA还配备了多种插件模块,包括快速与慢速移动平均线之间的距离、止盈、止损、跟踪止损、订单间距(上下)、止盈平均方法、交易时间、转向等功能,如果上一单亏损,首个主手数会增加。
EA的算法:
- EA会检查是否有未平仓的订单。
- 如果没有未平仓的订单,EA会分析图表,如果所有设定的条件都满足,就会开设首个主订单。
- 开设首个主订单后,EA会设置止盈和止损水平(如果这些模块已启用)。
- 如果首个主订单亏损,EA可能会以增大手数的方式开设下一个订单。
- 如果首个主订单已经开设,且开启了向上和向下的模块,当价格达到设定值时,会开设额外的订单。额外订单只能在EA检测到之前已经开设了首个主订单或有未平仓的额外订单时进行。
- 这款EA有两种操作模式:
- a) 第一种模式是当快速MA在慢速MA之上时,EA会下买单;一旦趋势变化(快速MA在慢速MA之下),所有开设的订单都会被平仓,随后下卖单。
- b) 第二种模式是当EA已开设买单并且趋势变化(快速MA在慢速MA之下)时,订单将保持开仓状态。EA只会在快速MA低于慢速MA且所有EA的订单平仓(止盈、止损触发或手动平仓)时才会下卖单。
- 这款EA还有一个交易时间模块,启用后,EA只会在指定的时间段内开设首个主订单。该模块不适用于向上、向下和转向的额外订单。也就是说,如果EA之前开设了订单,而向上、向下或转向模块被启用,额外订单将不受时间限制。
EA设置:
操作模式:
- 1 — 如果趋势变化,所有开设的订单都会被平仓,反向订单会被开设;
- 2 — 如果趋势变化,开设的订单不会被平仓(EA会等待止盈、止损触发或手动平仓)。
快速MA — 移动平均线指标插件的设置:周期、偏移量、MA方法,使用的是MetaTrader 4终端内置的移动平均线。
慢速MA — 移动平均线指标插件的设置:周期、偏移量、MA方法,使用的是MetaTrader 4终端内置的移动平均线。
初始手数
4.1. 初始手数
- LotConst_or_not — 允许用户选择是否从固定手数开始交易,或者根据存款变化重新计算初始手数:
true — 首个手数将是固定的;
false — 首个手数将根据存款变化动态调整,取决于风险百分比和存款大小。 - Lots — 设置交易的初始手数;
RiskPercent — 根据存款设置初始手数。
- LotConst_or_not — 允许用户选择是否从固定手数开始交易,或者根据存款变化重新计算初始手数:
手数增加
- FirstLotMultiplicator — 决定每次后续主订单的增加比例,如果前一个主订单亏损;
- First_LotSize — 如果首个主订单达到设置的值,则EA会在接下来指定的水平上设置止盈;
- First_LotSize_TakeProfit — 首个主订单的新止盈水平;
- First_MaxLotSize — EA将增加的首个主订单的最大值。
快速MA与慢速MA之间的距离
- Distance — 开设订单所需的快速MA与慢速MA之间的距离,以点为单位。
true — 启用距离模块,
false — 禁用距离模块。
- Distance — 开设订单所需的快速MA与慢速MA之间的距离,以点为单位。
止盈(TP)
- 止盈 — 平仓时所期望的利润值,以点为单位。
true — 启用止盈模块,
false — 禁用止盈模块。
- 止盈 — 平仓时所期望的利润值,以点为单位。
止损(SL)
- StopLoss — 可能会遭受的亏损点数。
true — 启用止损模块,
false — 禁用止损模块。
- StopLoss — 可能会遭受的亏损点数。
订单间距(向上)
true — 启用向上模块,
false — 禁用向上模块。订单间距(向下)
true — 启用向下模块,
false — 禁用向下模块。EA订单的标识符 — Magic(魔法数字) — 此参数帮助EA识别在同一终端上交易的订单。
Logo与数据输出 — ShowTableOnTesting — 该参数允许开启或关闭表格显示(今日、昨日收益等):
true — 开启,
false — 关闭。时间框架 — 程序代码决定EA将在哪个图表时间框架上进行交易。
- 当前 — 在终端指定的图表时间框架。
- M1, M5, M15, M30, H1, H4, D1, W1, MN1 — 固定时间框架。
交易时间 — 在特定时间内开设首个主订单的模块。
true — 启用交易时间模块,
false — 禁用交易时间模块。转向 — 根据首个主订单的止损水平在相反方向上开设限价订单。
true — 启用转向模块,
false — 禁用转向模块。
交易结果:

这款EA在PAMM账户上的真实交易期为2015年2月23日至2015年7月23日。最大收益可达84%,但由于我的干预,实际净利润仅为20%。
我进行的EA测试显示,月净利润在5%、10%、15%之间,回撤不超过20%。
P.S. 附带的设置仅适用于我所交易的账户。每个交易商/经纪商和账户(模拟或真实)都需要自定义的EA设置。
请不要过于依赖优化,因为优化并不总是有效,且可能在快速波动时忽略订单执行速度。