有人知道为什么 .mqh
文件中的此代码会引发错误 'Open' - undeclared identifier
?
我的库中似乎没有“检测到Open
,Close
,High
,Low
个功能。 (其他系统功能如Print()
已正确加载)。
bool isBlueCandle( int candle ) export {
return Open[candle] < Close[candle];
}
答案 0 :(得分:1)
//+------------------------------------------------------------------+
//| 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错误描述的完整副本。 使用鼠标右键单击+复制(在[错误] -page +上的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发动机,从而提供非常快速的&amp;非常有效的操纵。
MetaQuotes将其称为 TimeSeries 对象,这是一个反向步进索引 (否则正常)数组。
因此,您的函数 isBlueCandle()
确实是一个函数,但是,在内部它不调用函数,但它会比较 Open
的单元格值([anIntIndexAsPtrIntoTimeSeriesOrderedARRAY]
- *引用的单元格)
使用值 Close
(即[anIntIndexAsPtrIntoTimeSeriesOrderedARRAY]
- *引用的单元格)构建 bool
,其中 { {1}} 函数即将返回。