移动平均线:MetaTrader 4 的交易助手

Mike 2005.11.29 21:04 17 0 0
附件

大家好!今天我们来聊聊移动平均线(Moving Average),这可是在外汇交易中非常重要的工具,尤其是在 MetaTrader 4 平台上,它是许多交易者的最佳助手。

移动平均线交易系统主要依靠一条移动平均线来生成交易信号。当最新的蜡烛(bar index 等于 1)价格与移动平均线相交时,系统就会执行开仓或平仓操作。我们的交易手数会根据一个特定算法进行优化。

这个专家顾问会分析移动平均线与市场价格图表之间的关系,具体的检查是通过 CheckForOpen() 函数来完成的。如果移动平均线在蜡烛中处于开盘价之上而平盘价之下,系统就会开仓做多(BUY);反之,如果移动平均线在开盘价之下而平盘价之上,系统就会开仓做空(SELL)。

在资金管理方面,我们采用的是一种简单但有效的方法:每个交易头寸的大小会根据之前交易的结果进行调整。这个算法是通过 LotsOptimized() 函数实现的。基本手数的计算基于可接受的最大风险:

lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/1000.0,1);

这里的 MaximumRisk 参数表示每笔交易的基本风险百分比,通常在 0.01(1%)到 1(100%)之间。例如,如果可用保证金(AccountFreeMargin)为 $20,500,而资金管理规则要求风险为 2%,那么基本手数将为 20500 * 0.02 / 1000 = 0.41。控制手数的精确性非常重要,结果需要规范化为允许的值,通常允许以 0.1 为步进的分手数交易。交易量为 0.41 的订单将不会被执行。为此,我们使用 NormalizeDouble() 函数,精确到小数点后 1 位,最终基本手数将规范为 0.4。通过可用保证金来计算基本手数,可以根据交易成功率增加操作的手数,也就是进行再投资。这是提高交易有效性的基本机制。

DecreaseFactor 是在连续亏损后减少手数的比例,正常值为 2, 3, 4, 5。如果前面的交易出现亏损,后续的手数会按 DecreaseFactor 的比例减少,以便度过亏损期。这是资金管理算法的主要因素。思路很简单:如果交易成功率提高,系统将以基本手数最大化盈利;但如果出现亏损,系统会“减速”,直到再次产生正收益的交易。若要禁用“减速”功能,只需将 DecreaseFactor 设置为 0。系统将根据交易历史中连续亏损的交易次数来重新计算基本手数:

if(losses>1) lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1);

这样,算法能够有效降低由于连续亏损而带来的风险。最后,在函数结束时,手数会强制检查是否符合最小允许手数的标准,以避免计算结果为 0 的情况:

if(lot<0.1) lot=0.1;

这个专家顾问主要用于日线周期的交易,在测试模式下会使用收盘价进行测试。它只会在新蜡烛开始时进行交易,所以每个 tick 模型的模式并不是必需的。

测试结果会在报告中显示出来,大家可以参考。

策略测试报告

移动平均线


交易品种EURUSD(欧元对美元)
周期1小时(H1) 2003.01.08 00:00 - 2003.11.25 00:00
模型每个 tick(基于所有可用的最小时间框架,并进行每个 tick 的分形插值)
参数Lots=0.1; MaximumRisk=0.01; DecreaseFactor=1; MovingPeriod=16; MovingShift=11;

测试中的蜡烛数量19371模拟的 ticks 数量656918建模质量25.00%

初始存款10000.00



总净利润1695.20总利润4293.20总亏损-2598.00
利润因子1.65预期收益10.80

绝对回撤40.35最大回撤(%)318.50 (3.0%)


总交易次数157短仓(胜率 %)73 (26.03%)多仓(胜率 %)84 (32.14%)

盈利交易(占总数 %)46 (29.30%)亏损交易(占总数 %)111 (70.70%)
最大盈利交易262.55亏损交易-91.00
平均盈利交易93.33亏损交易-23.41
最大连续盈利(资金盈利)2 (387.15)连续亏损(资金亏损)7 (-287.25)
最大连续盈利(胜数)387.15 (2)连续亏损(负数)-287.25 (7)
平均连续盈利1连续亏损3
列表
评论 0