无法使用#property strict进行迭代

时间:2015-10-27 05:00:23

标签: mql4 mql5 mqlwrite

我让这段代码正常运行。基本上,此代码用于显示每5分钟前五个柱上的移动平均线的值。 MA的当前值被省略。

int     TrendMinDurationBar = 5,
        SlowPeriod          = 14,
        FastPeriod          = 7;

void OnTick()
{
    if ( NewBar( PERIOD_M5 ) == true ) MA( PERIOD_M5 );
}

void MA( int TF )
{
    double Slow[], Fast[];
    ArrayResize( Slow, TrendMinDurationBar + 1 );
    ArrayResize( Fast, TrendMinDurationBar + 1 );

    for (  int i = 1; i <= TrendMinDurationBar; i++ )
    {      Slow[i] = NormalizeDouble( iMA( Symbol(), TF, SlowPeriod, 0, MODE_EMA, PRICE_OPEN, i ), Digits );
           Fast[i] = NormalizeDouble( iMA( Symbol(), TF, FastPeriod, 0, MODE_EMA, PRICE_OPEN, i ), Digits );
           Alert( "DataSlow" + ( string )i + ": " + DoubleToStr( Slow[i], Digits ) );
    }
}

bool NewBar( int TF )
{
    static datetime lastbar = 0;
           datetime curbar  = iTime( Symbol(), TF, 0 );

    if (  lastbar != curbar )
    {     lastbar  = curbar; return( true );
    }
    else                     return( false );
}

如果包含 #property strict ,则代码仅在编译后运行一次。在 M5 图表上存在新栏后,它不会进行任何迭代。

如果我坚持使用#property strict

,该解决方案是什么?

2 个答案:

答案 0 :(得分:0)

欢迎使用其他 New - MQL4.56789 Catch-22

我的候选人来自 Help > MQL4 Reference > Updated MQL4

这一个(列 [New MQL4 with #property strict]

  

任何类型的函数都应返回值

和 还有一个待审查, 即使对于 static double 替代,代码也会失去逻辑,在这种情况下它会非常低效:

  

退出{}阻止

时会释放本地数组

答案 1 :(得分:0)

#property strict完美配合,作为MT4 Build 950中的EA。

您确定要将其作为EA运行,而不是作为脚本或指示器运行吗?