"MQL4'ten MQL5'e geçiş" makalesi için tartışma - sayfa 11

 

Herkese merhaba,

MQL5'te ObjectSet(objname,OBJPROP_FIRSTLEVEL+level,value)'i nasıl kullanacağınızı biliyor musunuz? OBJPROP_FIRSTLEVEL'i aramaya çalıştım ama MQL5'te bulamadım

mql4:

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

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

{

ObjectSet(objname,OBJPROP_FIRSTLEVEL+level,value);

ObjectSetFiboDescription(objname,level,description);

}

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

 
vietlh216:

MQL5'te ObjectSet(objname,OBJPROP_FIRSTLEVEL+level,value)'i nasıl kullanacağınızı biliyor musunuz? OBJPROP_FIRSTLEVEL'i aramaya çalıştım ama MQL5'te bulamadım

mql4:

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

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

{

ObjectSet(objname,OBJPROP_FIRSTLEVEL+level,value);

ObjectSetFiboDescription(objname,level,description);

}

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


Hazır bir çözüm için blog yazımı okuyabilirsiniz.

 
Stanislav Korotky:

Hazır bir çözüm için blog yazımı okuyabilirsiniz.


Çok faydalı, teşekkürler :)

 
Stanislav Korotky:

Hazır bir çözüm için blog yazımı okuyabilirsiniz.


Çözümünüz için teşekkürler Stanislav Korotky, ancak MQL5'te çok iyi değilim ve OBJPROP_FIRSTLEVEL'i MQL5'te kullanmak için nasıl dönüştüreceğimi hala bilmiyorum. dönüştürmek için aynı nesne özelliğini bulamıyorum

mql4'te:

OBJPROP_FIRSTLEVEL+n

210+n

int

Fibonacci nesne seviyesinin değerini n indeksi ile ayarlamak/almak için tamsayı değeri. n indeksi 0'dan (seviye sayısı -1) büyük olabilir, ancak 31'den büyük olamaz

ama MQL5'te bulamıyorum

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

MQL4: ObjectSet(nesneadı,OBJPROP_FIRSTLEVEL+seviye,değer); -> MQL5: ???

 
vietlh216:

Çözümünüz için teşekkürler Stanislav Korotky, ancak MQL5'te çok iyi değilim ve hala OBJPROP_FIRSTLEVEL'i MQL5'te kullanmak için nasıl dönüştüreceğimi bilmiyorum. dönüştürmek için aynı nesne özelliğini bulamıyorum

mql4'te:

OBJPROP_FIRSTLEVEL+n

210+n

int

Fibonacci nesne seviyesinin değerini n indeksi ile ayarlamak/almak için tamsayı değeri. n indeksi 0'dan (seviye sayısı -1) büyük olabilir, ancak 31'den büyük olamaz

ama MQL5'te bulamıyorum

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

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


Ah, buldum.

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

^^

 
vietlh216:

Ah, buldum.

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

^^


Benim eklediklerime aşağıdaki eklemeyi deneyebilirsiniz:

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

Bundan sonra başlangıçtaki MQL4 kodunuz olduğu gibi çalışmalıdır.

 
Stanislav Korotky:

Benim eklediklerime aşağıdaki eklemeyi deneyebilirsiniz:

Bundan sonra ilk MQL4 kodunuz olduğu gibi çalışmalıdır.


Şimdi nasıl çalıştığını anladım, Stanislav Korotky'ye çok teşekkürler.

 

Değiştirmenizi öneririm

string StringConcatenate(..);

tarafından

string StringFormat("",..);

Her iki fonksiyon da belirli koşullar altında değiştirmeyi kolaylaştıran bir dize döndürür!

 
Stanislav Korotky:

Benim eklediklerime aşağıdaki eklemeyi deneyebilirsiniz:

Bundan sonra ilk MQL4 kodunuz olduğu gibi çalışmalıdır.

ind4to5 include'unuza OBJPROP_DOUBLE_BROKER_EXTENDED sınıfını ekledim ve en son Metaeditor derlemesinde olduğu gibi çalışmıyor gibi görünüyor 1958 ObjectSetDouble(chart_ID,name,OBJPROP_PRICE1,price1) çağrısı derleme hatası 'ObjectSetDouble' döndürüyor - aşırı yüklerden hiçbiri işlev çağrısına uygulanamıyor. Herhangi bir fikriniz var mı?

 

ObjectSetDouble'ın ind4to5'e dahil edilmediğini kendim anladım. Aşağıdaki kodu mqh'ye ekledim ve sorun çözüldü.

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