真实作者:弗拉基米尔·赫利斯托夫
这款最简单的自动交易系统(EA)基于Fractal_WeightOscillator加权振荡器。它在振荡器下跌穿越超买水平时卖出,在振荡器上涨穿越超卖水平时买入。信号在K线收盘时生成,如果水平被突破。
EA中的Fractal_WeightOscillator_HTF指标仅用于在策略测试器中更方便地可视化趋势,在其他操作模式下该指标是非活动的。
请将Fractal_WeightOscillator.ex5和Fractal_WeightOscillator_HTF.ex5编译文件放入<terminal_data_folder>\MQL5\Indicators目录。
经过编译后,Exp_Fractal_WeightOscillator.ex5专家文件包含Fractal_WeightOscillator.ex5和Fractal_WeightOscillator_HTF.ex5指标作为资源,因此在编译的EA工作时不需要它们存在于终端文件夹中!为此,相应的代码已添加到EA代码中,以将这些指标包含在专家的可执行文件中。
指标可执行文件作为全局范围内的资源被添加
//---- 将指标作为资源包含在EA代码中
#resource "\\Indicators\\Fractal_WeightOscillator.ex5"
#resource "\\Indicators\\Fractal_WeightOscillator_HTF.ex5"
#resource "\\Indicators\\Fractal_WeightOscillator.ex5"
#resource "\\Indicators\\Fractal_WeightOscillator_HTF.ex5"
已更改在OnInit()函数块中使用的指标路径字符串
//---- 获取Fractal_WeightOscillator句柄
InpInd_Handle=iCustom(Symbol(),InpInd_Timeframe,"::Indicators\\Fractal_WeightOscillator",
e_period,normal_speed,RSIWeight,RSIPrice,MFIWeight,MFIPrice,MFIVolumeType,
WPRWeight,DeMarkerWeight,bMA_Method,bLength,bPhase,HighLevel,LowLevel);
if(InpInd_Handle==INVALID_HANDLE)
{
Print(" 获取Fractal_WeightOscillator指标句柄失败");
return(INIT_FAILED);
}
//---- 获取Fractal_WeightOscillator_HTF指标句柄以便在策略测试器中可视化
if(MQLInfoInteger(MQL_VISUAL_MODE))
{
//---- 获取Fractal_WeightOscillator_HTF指标句柄
int Ind_Handle=iCustom(Symbol(),Period(),"::Indicators\\Fractal_WeightOscillator_HTF",InpInd_Timeframe,
e_period,normal_speed,RSIWeight,RSIPrice,MFIWeight,MFIPrice,MFIVolumeType,
WPRWeight,DeMarkerWeight,bMA_Method,bLength,bPhase,HighLevel,LowLevel);
if(Ind_Handle==INVALID_HANDLE)
{
Print(" 获取Fractal_WeightOscillator_HTF指标句柄失败");
return(INIT_FAILED);
}
}
InpInd_Handle=iCustom(Symbol(),InpInd_Timeframe,"::Indicators\\Fractal_WeightOscillator",
e_period,normal_speed,RSIWeight,RSIPrice,MFIWeight,MFIPrice,MFIVolumeType,
WPRWeight,DeMarkerWeight,bMA_Method,bLength,bPhase,HighLevel,LowLevel);
if(InpInd_Handle==INVALID_HANDLE)
{
Print(" 获取Fractal_WeightOscillator指标句柄失败");
return(INIT_FAILED);
}
//---- 获取Fractal_WeightOscillator_HTF指标句柄以便在策略测试器中可视化
if(MQLInfoInteger(MQL_VISUAL_MODE))
{
//---- 获取Fractal_WeightOscillator_HTF指标句柄
int Ind_Handle=iCustom(Symbol(),Period(),"::Indicators\\Fractal_WeightOscillator_HTF",InpInd_Timeframe,
e_period,normal_speed,RSIWeight,RSIPrice,MFIWeight,MFIPrice,MFIVolumeType,
WPRWeight,DeMarkerWeight,bMA_Method,bLength,bPhase,HighLevel,LowLevel);
if(Ind_Handle==INVALID_HANDLE)
{
Print(" 获取Fractal_WeightOscillator_HTF指标句柄失败");
return(INIT_FAILED);
}
}
因此,该专家的编译可执行文件可以在其他交易终端上独立使用,无需指标。
请注意,TradeAlgorithms.mqh库文件允许与提供非零点差的经纪商使用专家顾问,并且可以在开仓时同时设置止损和止盈。您可以在以下链接下载更多的库变体:交易算法.
在下面的测试中使用了默认专家顾问的输入参数。在测试中未使用止损和止盈。

图1. 图表上的交易示例
2015年GBPUSD H6的测试结果:

图2. 测试结果图表
评论 0