有人知道为什么.mqh文件中的这段代码会引发错误'Open' - undeclared identifier吗?
似乎Open, Close, High,Low函数在我的库中没有“检测到”。(其他系统功能,如Print()已正确加载)。
bool isBlueCandle( int candle ) export {
return Open[candle] < Close[candle];
}
有人知道为什么.mqh文件中的这段代码会引发错误'Open' - undeclared identifier吗?
似乎Open, Close, High,Low函数在我的库中没有“检测到”。(其他系统功能,如Print()已正确加载)。
bool isBlueCandle( int candle ) export {
return Open[candle] < Close[candle];
}
//+------------------------------------------------------------------+
//| isBlueCandle TESTs MetaLang.exe: Build 1154 |
//+------------------------------------------------------------------+
bool isBlueCANDLE_TEST( int candle ) export
{
return Open[candle] < Close[candle];
}
bool isBlueCANDLE_TEST2( int candle ) export {
return Open[candle] < Close[candle];
}
bool isBlueCANDLE_TEST3( const int candle ) export {
return Open[candle] < Close[candle];
}
bool isBlueCANDLE_TEST4( const int candle ) export {
return( Open[candle] < Close[candle] );
}
正如上面评论中所发布的,缺少的上下文将有助于追踪您所陈述问题的根本原因。
发布 MetaLang.exe 错误描述的完整副本。使用鼠标右键单击 + 复制(在 [错误] 页面上的 MetaLang.exe-Toolbox 窗口中 + 将完整的描述粘贴到 StackOverflow 上)
举个例子:
return value of 'OrderModify' should be checked
FOREX_SimpleSAR_EA_msMOD_0.00.mq4 227 19
MQL4识别具有特定访问协议的函数 ( Print()) 和其他对象 ( Open) 以使用它们。在函数的情况下,传递与函数期望兼容的“参数”。
Open, High,Volume等不是函数,而是数组,而且这些数组是特殊的,并且在内部 MT4 引擎中精心构建,以提供非常快速和非常有效的操作。
MetaQuotes 称其为TimeSeries对象,一个反向步进索引(否则为正常)数组。
因此,您的函数isBlueCandle()确实是一个函数,但是,在内部它不调用函数,而是将Open([anIntIndexAsPtrIntoTimeSeriesOrderedARRAY]-*referenced cell )的单元格值与 Close(即[anIntIndexAsPtrIntoTimeSeriesOrderedARRAY]-*referenced cell )的值进行比较以构造一个boolwhich函数即将isBlueCandle()返回。