Discussione sull’articolo "Migrazione da MQL4 a MQL5" - pagina 11

 

Ciao a tutti,

sapete come utilizzare ObjectSet(objname,OBJPROP_FIRSTLEVEL+level,value) in MQL5? Ho provato a cercare OBJPROP_FIRSTLEVEL ma non lo trovo in MQL5

mql4:

void _SetFibLevel(string objname, int level, double value, string description)

//+------------------------------------------------------------------+

{

ObjectSet(objname,OBJPROP_FIRSTLEVEL+level,value);

ObjectSetFiboDescription(nomeoggetto,livello,descrizione);

}

-----------------------------------

 
vietlh216:

sapete come utilizzare ObjectSet(objname,OBJPROP_FIRSTLEVEL+level,value) in MQL5? Ho provato a cercare OBJPROP_FIRSTLEVEL, ma non lo trovo in MQL5.

mql4:

void _SetFibLevel(string objname, int level, double value, string description)

//+------------------------------------------------------------------+

{

ObjectSet(objname,OBJPROP_FIRSTLEVEL+level,value);

ObjectSetFiboDescription(nomeoggetto,livello,descrizione);

}

-----------------------------------


Potete leggere il mio blogpost per una soluzione già pronta.

 
Stanislav Korotky:

Puoi leggere il mio blogpost per una soluzione già pronta.


Molto utile, grazie :)

 
Stanislav Korotky:

Potete leggere il mio blogpost per una soluzione già pronta.


Grazie Stanislav Korotky per la tua soluzione, ma non sono molto esperto di MQL5 e non so ancora come convertire OBJPROP_FIRSTLEVEL per utilizzarlo in MQL5. Non trovo la stessa proprietà dell'oggetto per convertirla

in mql4:

OBJPROP_FIRSTLEVEL+n

210+n

int

Valore intero per impostare/ottenere il valore del livello dell'oggetto Fibonacci con l'indice n. L'indice n può essere compreso tra 0 (numero di livelli -1), ma non superiore a 31.

ma non lo trovo in MQL5

es: MQL4 : ObjectSetFiboDescription(objname,level,description);->MQL5: ObjectSetString(0,objname,OBJPROP_LEVELTEXT,level,description);

MQL4: ObjectSet(nomeoggetto,OBJPROP_FIRSTLEVEL+livello,valore); -> MQL5: ???

 
vietlh216:

Grazie Stanislav Korotky per la tua soluzione, ma non sono molto bravo in MQL5 e non so ancora come convertire OBJPROP_FIRSTLEVEL per utilizzarlo in MQL5. Non trovo la stessa proprietà dell'oggetto per convertirla

in mql4:

OBJPROP_FIRSTLEVEL+n

210+n

int

Valore intero per impostare/ottenere il valore del livello dell'oggetto Fibonacci con l'indice n. L'indice n può essere compreso tra 0 (numero di livelli -1), ma non superiore a 31.

ma non lo trovo in MQL5

es: MQL4 : ObjectSetFiboDescription(objname,level,description);->MQL5: ObjectSetString(0,objname,OBJPROP_LEVELTEXT,level,description);

MQL4: ObjectSet(nomeoggetto,OBJPROP_FIRSTLEVEL+livello,valore); -> MQL5: ???


ah, l'ho trovato

ObjectSetDouble(0,objname,OBJPROP_LEVELVALUE,level,value);

^^

 
vietlh216:

ah, l'ho trovato

ObjectSetDouble(0,objname,OBJPROP_LEVELVALUE,level,value);

^^


Potete provare la seguente aggiunta al mio include:

class OBJPROP_DOUBLE_BROKER_EXTENDED: public OBJPROP_DOUBLE_BROKER
{
  public:
    OBJPROP_DOUBLE_BROKER_EXTENDED(const ENUM_OBJECT_PROPERTY_DOUBLE property, const int modifier): OBJPROP_DOUBLE_BROKER(property, modifier)
    {
    }
    
    OBJPROP_DOUBLE_BROKER_EXTENDED *operator+(const int add)
    {
      i = add;
      return &this;
    }
};

OBJPROP_DOUBLE_BROKER_EXTENDED OBJPROP_FIRSTLEVEL(OBJPROP_LEVELVALUE, 0);

Dopo questa aggiunta il codice MQL4 iniziale dovrebbe funzionare così com'è.

 
Stanislav Korotky:

È possibile provare la seguente aggiunta al mio include:

Dopo questo il codice MQL4 iniziale dovrebbe funzionare come è.


Ora ho capito come funziona, grazie mille Stanislav Korotky.

 

Suggerirei di sostituire

string StringConcatenate(..);

da

string StringFormat("",..);

Entrambe le funzioni restituiscono una stringa, il che rende più facile la sostituzione in determinate condizioni!

 
Stanislav Korotky:

È possibile provare la seguente aggiunta al mio include:

Dopo questa aggiunta il codice MQL4 iniziale dovrebbe funzionare così com'è.

Ho aggiunto la classe OBJPROP_DOUBLE_BROKER_EXTENDED al vostro include ind4to5 e sembra che non funzioni, poiché nell'ultima versione di Metaeditor 1958 la chiamata di ObjectSetDouble(chart_ID,name,OBJPROP_PRICE1,price1) restituisce l'errore di compilazione 'ObjectSetDouble' - nessuno degli overload può essere applicato alla chiamata di funzione. Qualche idea?

 

Ho capito da solo che ObjectSetDouble non era incluso in ind4to5. Ho aggiunto il seguente codice a mqh e ho risolto il problema.

bool ObjectSetDouble(long chart_id, const string name, const OBJPROP_DOUBLE_BROKER &property, const double value)
{
  return ObjectSetDouble(chart_id, name, property.p, property.i, value);
}