Ciao, sto scrivendo un indicatore in MQL5, ma qualsiasi cosa io scriva come nome di stringa ObejectDelete restituisce true! anche su un grafico vuoto senza oggetti!
int ObjCount = ObjectsTotal(ChartID(),/*0=sottofinestra principale*/0,/*tutti gli objectTypes*/-1);
bool deleteResult=ObjectDelete(ChartID(), "oggetto non esistente");
Print(__LINE__,"-",deleteResult," | ObjCount=",ObjCount);
ecco il risultato:
2016.12.11 13:46:38.385 Far-Test (EURUSD,H1) 37-true | ObjCount=0
non dovrebbe restituire false?
Ecco il risultato dello stesso codice in mt4:
2016.12.11 14:00:10.141 Far-TestObjDelete EURUSD_e,H1: 38-falso | ObjCount=0
quindi mt5 sta lavorando male!
ecco il risultato dello stesso codice in mt4 :
2016.12.11 14:00:10.141 Far-TestObjDelete EURUSD_e,H1: 38-false | ObjCount=0
quindi mt5 sta lavorando male!
Quale build di MT5 stai usando? L'attuale build disponibile è la 1495 (09 dicembre 2016)!
Sì, la mt5 è la build 1495, 2016.dec.09, e anche metaeditor è 1495.
Per favore, fornisci un piccolo script di prova/codice indicatore completo che possiamo compilare e testare dalla nostra parte per vedere se produce lo stesso effetto?
Se produce lo stesso effetto da noi, allora puoi segnalarlo al Service Desk come possibile bug!
Allegalo come file completo, nel tuo prossimo post!
Per favore, fornisci un piccolo script di prova/codice indicatore completo che possiamo compilare e testare dalla nostra parte per vedere se produce lo stesso effetto?
Se produce lo stesso effetto sul nostro lato, allora potete segnalarlo al Service Desk come possibile bug!
Allegalo come file completo, nel tuo prossimo post!
Ecco lo stesso codice sia in mt5 che in mt4. i risultati sono diversi ma il file di aiuto dice lo stesso.
ObjectDelete
La funzione rimuove l'oggetto con il nome specificato dal grafico specificato.
boolObjectDelete( |
Parametri
chart_id
[Identificatore del grafico. 0 significa il grafico corrente.
nome
[in] Nome dell'oggetto da cancellare.
Valore di ritorno
Restituiscetrue se la rimozione ha avuto successo, altrimenti restituisce false.
L'output era il seguente:#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);
}
Quindi, questo sembra davvero un bug che deve essere segnalato al Service Desk.2016.12.11 11:12:29.999 TestObjectDelete (EURUSD.m,H4) Result of Deleteing non-existing Chart Object: true
In seguito, per assicurarmi che non fosse un bug nel sorgente dell'OP, ho ricreato il mio codice e ho ottenuto lo stesso effetto con il seguente codice Indicator, e anche io ho ottenuto lo stesso risultato dell'OP:
L'output era il seguente:#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);
}
Quindi, questo sembra davvero un bug che deve essere segnalato al Service Desk.2016.12.11 11:12:29.999 TestObjectDelete (EURUSD.m,H4) Result of Deleteing non-existing Chart Object: true
grazie per il tuo tempo :)
Hai intenzione di segnalarlo al Service Desk?
Sì, ho intenzione di scriverlo. Aspettavo la tua conferma, grazie.
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Accetti la politica del sito e le condizioni d’uso
Ciao, sto scrivendo un indicatore in MQL5, ma qualsiasi cosa io scriva come nome di stringa ObejectDelete restituisce true! anche su un grafico vuoto senza oggetti!
int ObjCount = ObjectsTotal(ChartID(),/*0=sottofinestra principale*/0,/*tutti gli objectTypes*/-1);
bool deleteResult=ObjectDelete(ChartID(), "oggetto non esistente");
Print(__LINE__,"-",deleteResult," | ObjCount=",ObjCount);
ecco il risultato:
2016.12.11 13:46:38.385 Far-Test (EURUSD,H1) 37-true | ObjCount=0
non dovrebbe restituire false?