嗨,我正在用MQL5写一个指标,但无论我写什么字符串名称,ObejectDelete都会返回真!即使是在一个没有对象的空图表上也是如此!我想知道为什么?
int ObjCount = ObjectsTotal(ChartID(),/*0=main subwindow*/0,/*all objectTypes*/-1)。
bool deleteResult=ObjectDelete(ChartID(), "非现有对象")。
Print(__LINE__,"-",deleteResult," | ObjCount=",ObjCount)。
这里是结果。
2016.12.11 13:46:38.385 Far-Test (EURUSD,H1) 37-true| ObjCount=0
它不应该返回false吗?
这是mt4中相同代码的结果。
2016.12.11 14:00:10.141 Far-TestObjDelete EURUSD_e,H1: 38-假| ObjCount=0
所以mt5的工作是错误的!
这是mt4中相同代码的结果。
2016.12.11 14:00:10.141 Far-TestObjDelete EURUSD_e,H1: 38-false| ObjCount=0
所以mt5的工作是错误的!
你使用的是MT5的哪个版本?目前可用的版本是1495(2016年12月9日)!
是的,mt5是build 1495,2016.12.09,metaeditor也是1495。
请提供一个完整的小测试脚本/指示器代码,我们可以在我们这一端进行编译和测试,看看它是否也产生同样的效果?
如果它在我们这端确实产生了同样的效果,那么你可以把它 作为一个可能的bug报告给服务台!
把它作为一个完整的文件,在你的下一个帖子中附上!
请提供一个完整的小测试脚本/指示器代码,我们可以在我们这一端进行编译和测试,看看它是否也产生同样的效果?
如果它在我们这端确实产生了同样的效果,那么你可以把它 作为一个可能的bug报告给服务台!
把它作为一个完整的文件,附在你的下一篇文章中!
这是mt5和mt4中的相同代码,结果是不同的,但帮助文件说的是一样的。
ObjectDelete
该函数从指定的图表中删除具有指定名称的对象。
bool ObjectDelete( |
参数
chart_id
[in] 图表标识符。0表示当前图表。
名称
[in] 要删除的对象的名称。
返回值
如果删除成功则返回true, 否则返回 false。
输出结果如下。#property strict
#property indicator_chart_window
int OnInit()
{
return(INIT_SUCCEEDED);
}
int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[],
const double &open[], const double &high[], const double &low[], const double &close[],
const long &tick_volume[], const long &volume[], const int &spread[])
{
static bool boolFirstTime = true;
if( boolFirstTime )
{
boolFirstTime = false;
bool boolDeleteResult = ObjectDelete( 0, "Non-existing Object" );
Print("Result of Deleteing non-existing Chart Object: ", boolDeleteResult );
}
return(rates_total);
}
所以,这确实是一个需要报告给服务台的错误。2016.12.11 11:12:29.999 TestObjectDelete (EURUSD.m,H4) Result of Deleteing non-existing Chart Object: true
在后续工作中,为了确定这不是OP的源代码的错误,我重新创建了自己的代码,用下面的指标代码得到了同样的效果,我也确实得到了与OP相同的结果。
输出结果如下。#property strict
#property indicator_chart_window
int OnInit()
{
return(INIT_SUCCEEDED);
}
int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[],
const double &open[], const double &high[], const double &low[], const double &close[],
const long &tick_volume[], const long &volume[], const int &spread[])
{
static bool boolFirstTime = true;
if( boolFirstTime )
{
boolFirstTime = false;
bool boolDeleteResult = ObjectDelete( 0, "Non-existing Object" );
Print("Result of Deleteing non-existing Chart Object: ", boolDeleteResult );
}
return(rates_total);
}
所以,这确实看起来是一个需要报告给服务台的错误。2016.12.11 11:12:29.999 TestObjectDelete (EURUSD.m,H4) Result of Deleteing non-existing Chart Object: true
谢谢你的时间 :)
你要在服务台报告吗?
是的,我准备写。我在等待你的确认。谢谢。
嗨,我正在用MQL5写一个指标,但无论我写什么字符串名称,ObejectDelete都会返回真!即使是在一个没有对象的空图表上也是如此!我想知道为什么?
int ObjCount = ObjectsTotal(ChartID(),/*0=main subwindow*/0,/*all objectTypes*/-1)。
bool deleteResult=ObjectDelete(ChartID(), "非现有对象")。
Print(__LINE__,"-",deleteResult," | ObjCount=",ObjCount)。
这里是结果。
2016.12.11 13:46:38.385 Far-Test (EURUSD,H1) 37-true| ObjCount=0
它不应该返回false吗?