创意作者 — Hazem, MQL5 代码作者 — barabashkakvn。
这个策略的核心难点在于将 iCCI 和 iMACD 的值与“买卖水平”变量进行比较。指标的值可能会有几倍甚至几十倍的不同。
例如,对于 EURUSD、USDJPY 和 USDSEK 等货币对,以及 MetaTrader 5 提供的所有时间周期:


从上图可以看出,iCCI 的读数相对稳定,而 iMACD 则高度依赖于价格波动。为了应对这一挑战,我们可以将 iMACD 的值乘以一个比率:
void OnTick()
{
//----
m_ext_lot=NormalizeDouble(m_account.Balance()/50001.0,2);
if(m_ext_lot<0.1)
m_ext_lot=0.1;
m_cci=iCCIGet(0);
m_macd=iMACDGet(MAIN_LINE,0)*1000000;
m_buy_total=0;
m_sell_total=0;
{
//----
m_ext_lot=NormalizeDouble(m_account.Balance()/50001.0,2);
if(m_ext_lot<0.1)
m_ext_lot=0.1;
m_cci=iCCIGet(0);
m_macd=iMACDGet(MAIN_LINE,0)*1000000;
m_buy_total=0;
m_sell_total=0;

小贴士:推荐使用 EURUSD M30 时间周期。
从 2016.01.08 到 2016.11.06 的回测结果,EURUSD M30,初始资金 — 10,000:

评论 0