我让这段代码正常运行。基本上,此代码用于显示每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
?
答案 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运行,而不是作为脚本或指示器运行吗?