有人知道为什么.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 )的值进行比较以构造一个bool
which函数即将isBlueCandle()
返回。