Diskussion zum Artikel "Übersetzung von MQL4 in MQL5" - Seite 11

 

Hallo zusammen,

wissen Sie, wie man ObjectSet(objname,OBJPROP_FIRSTLEVEL+level,value) in MQL5 verwendet? ich habe versucht, OBJPROP_FIRSTLEVEL zu suchen, aber ich finde es nicht in MQL5

mql4:

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

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

{

ObjectSet(objname,OBJPROP_FIRSTLEVEL+level,value);

ObjectSetFiboDescription(objname,level,description);

}

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

 
vietlh216:

Wissen Sie, wie man ObjectSet(objname,OBJPROP_FIRSTLEVEL+level,value) in MQL5 verwendet? Ich habe versucht, OBJPROP_FIRSTLEVEL zu suchen, aber ich finde es nicht in MQL5

mql4:

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

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

{

ObjectSet(objname,OBJPROP_FIRSTLEVEL+level,value);

ObjectSetFiboDescription(objname,level,description);

}

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


Eine fertige Lösung können Sie in meinem Blogpost nachlesen.

 
Stanislav Korotky:

Sie können meinen Blogpost für eine fertige Lösung lesen.


Sehr nützlich, danke :)

 
Stanislav Korotky:

Sie können meinen Blogpost für eine fertige Lösung lesen.


Vielen Dank Stanislav Korotky für Ihre Lösung, aber ich bin nicht gut in MQL5 und ich weiß immer noch nicht, wie man OBJPROP_FIRSTLEVEL konvertieren, um in MQL5 zu verwenden. ich finde nicht die gleiche Objekteigenschaft, um es zu konvertieren

in MQL4:

OBJPROP_FIRSTLEVEL+n

210+n

int

Ganzzahliger Wert, um den Wert der Fibonacci-Ebene mit Index n zu setzen/zu holen. Index n kann von 0 (Anzahl der Ebenen -1) sein, aber nicht größer als 31

aber ich finde es nicht in MQL5

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

MQL4: ObjectSet(objname,OBJPROP_FIRSTLEVEL+level,value); -> MQL5: ???

 
vietlh216:

Vielen Dank Stanislav Korotky für Ihre Lösung, aber ich bin nicht gut viel in MQL5 und ich weiß immer noch nicht, wie OBJPROP_FIRSTLEVEL zu konvertieren, um in MQL5 zu verwenden. ich finde nicht die gleiche Objekteigenschaft zu konvertieren es

in MQL4:

OBJPROP_FIRSTLEVEL+n

210+n

int

Ganzzahliger Wert, um den Wert der Fibonacci-Ebene mit Index n zu setzen/zu holen. Index n kann von 0 (Anzahl der Ebenen -1) sein, aber nicht größer als 31

aber ich finde es nicht in MQL5

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

MQL4: ObjectSet(objname,OBJPROP_FIRSTLEVEL+level,value); -> MQL5: ???


ah, ich finde es

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

^^

 
vietlh216:

ah, ich finde es

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

^^


Sie können den folgenden Zusatz zu meinem Include ausprobieren:

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);

Danach sollte Ihr anfänglicher MQL4-Code so funktionieren, wie er ist.

 
Stanislav Korotky:

Sie können den folgenden Nachtrag zu meinem Include ausprobieren:

Danach sollte Ihr anfänglicher MQL4-Code so funktionieren, wie er ist.


Jetzt habe ich verstanden, wie es funktioniert, Vielen Dank Stanislav Korotky so viel.

 

Ich würde vorschlagen, zu ersetzen

string StringConcatenate(..);

durch zu ersetzen.

string StringFormat("",..);

Beide Funktionen geben eine Zeichenkette zurück, was das Ersetzen unter bestimmten Bedingungen erleichtert!

 
Stanislav Korotky:

Sie können den folgenden Nachtrag zu meinem Include ausprobieren:

Danach sollte Ihr ursprünglicher MQL4-Code so funktionieren, wie er ist.

Ich habe die Klasse OBJPROP_DOUBLE_BROKER_EXTENDED zu Ihrem ind4to5-Include hinzugefügt und es scheint nicht zu funktionieren, da in der neuesten Metaeditor-Version 1958 der Aufruf von ObjectSetDouble(chart_ID,name,OBJPROP_PRICE1,price1) den Kompilierungsfehler 'ObjectSetDouble' zurückgibt - keine der Überladungen kann auf den Funktionsaufruf angewendet werden. Irgendeine Idee?

 

Ich habe selbst herausgefunden, dass ObjectSetDouble nicht in ind4to5 enthalten war. Ich fügte den folgenden Code zu mqh hinzu und es löste das Problem.

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);
}