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

 
-Aleks-:

Fonksiyonu nasıl kullanacağımı anlayamıyorum

Derleyici uyarır

'OBJPROP_TIME1' - bildirilmemiş tanımlayıcı TZ_Sky_and_Ground_V_04.mq5 2891 12
'OBJPROP_TIME1' - sabit ifade gerekli TZ_Sky_and_Ground_V_04.mq5 2891 12
'OBJPROP_PRICE1' - bildirilmemiş tanımlayıcı TZ_Sky_and_Ground_V_04.mq5 2893 12
'OBJPROP_PRICE1' - sabit ifade gerekli TZ_Sky_and_Ground_V_04.mq5 2893 12
'OBJPROP_TIME2' - bildirilmemiş tanımlayıcı TZ_Sky_and_Ground_V_04.mq5 2895 12
'OBJPROP_TIME2' - sabit ifade gerekli TZ_Sky_and_Ground_V_04.mq5 2895 12
'OBJPROP_PRICE2' - bildirilmemiş tanımlayıcı TZ_Sky_and_Ground_V_04.mq5 2897 12
'OBJPROP_PRICE2' - sabit ifade gerekli TZ_Sky_and_Ground_V_04.mq5 2897 12
'OBJPROP_TIME3' - bildirilmemiş tanımlayıcı TZ_Sky_and_Ground_V_04.mq5 2899 12
'OBJPROP_TIME3' - sabit ifade gerekli TZ_Sky_and_Ground_V_04.mq5 2899 12
'OBJPROP_PRICE3' - bildirilmemiş tanımlayıcı TZ_Sky_and_Ground_V_04.mq5 2901 12
'OBJPROP_PRICE3' - sabit ifade gerekli TZ_Sky_and_Ground_V_04.mq5 2901 12

Hatanın oluştuğu satırlarda ObjectSetInteger(... )ObjectSetMQL4(...) olarak değiştirin.

Genel olarak, yeniden yazmak daha kolaydır, orada değişiklik yapmak çok hızlıdır, kelimenin tam anlamıyla 2 dakikalık zaman

 
Vitaly Muzichenko:

Hatanın oluştuğu satırlarda ObjectSetInteger(... ) ifadesini ObjectSetMQL4(...) olarak değiştirin.

Genel olarak, yeniden yazmak daha kolaydır, orada değiştirmek çok hızlıdır, kelimenin tam anlamıyla 2 dakikalık zaman

Anlamıyorum ya da çalışmıyor.

Böyle bir işlevim vardı


//+------------------------------------------------------------------+
//|Ekranda bilgi görüntülemek için fonksiyon|
//+------------------------------------------------------------------+
void Label(string _name,int _window,int _x,int _y,string _text,int _font,color _color,int corner)
  {
   ObjectDelete(0,_name);
   ObjectCreate(0,_name,OBJ_LABEL,_window,0,0);
   ObjectSet(_name,OBJPROP_CORNER,corner);
   ObjectSet(_name,OBJPROP_XDISTANCE,_x);
   ObjectSet(_name,OBJPROP_YDISTANCE,_y);
   ObjectSetText(_name,_text,_font,"Arial",_color);
  }

MQL5'te çalışmasını sağlamak için makaleden ekledim


  bool ObjectSetText(string name, string text, int font_size,string font="", color text_color=CLR_NONE)
  {
   int tmpObjType=(int)ObjectGetInteger(0,name,OBJPROP_TYPE);
   if(tmpObjType!=OBJ_LABEL && tmpObjType!=OBJ_TEXT) return(false);
   if(StringLen(text)>0 && font_size>0)
     {
      if(ObjectSetString(0,name,OBJPROP_TEXT,text)==true
         && ObjectSetInteger(0,name,OBJPROP_FONTSIZE,font_size)==true)
        {
         if((StringLen(font)>0)
            && ObjectSetString(0,name,OBJPROP_FONT,font)==false)
            return(false);
         if(text_color>-1
            && ObjectSetInteger(0,name,OBJPROP_COLOR,text_color)==false)
            return(false);
         return(true);
        }
      return(false);
     }
   return(false);
  }
  
bool ObjectSet(string name, int index, double value)
  {
   switch(index)
     {
      case OBJPROP_TIME1:
         ObjectSetInteger(0,name,OBJPROP_TIME,(int)value);return(true);
      case OBJPROP_PRICE1:
         ObjectSetDouble(0,name,OBJPROP_PRICE,value);return(true);
      case OBJPROP_TIME2:
         ObjectSetInteger(0,name,OBJPROP_TIME,1,(int)value);return(true);
      case OBJPROP_PRICE2:
         ObjectSetDouble(0,name,OBJPROP_PRICE,1,value);return(true);
      case OBJPROP_TIME3:
         ObjectSetInteger(0,name,OBJPROP_TIME,2,(int)value);return(true);
      case OBJPROP_PRICE3:
         ObjectSetDouble(0,name,OBJPROP_PRICE,2,value);return(true);
      case OBJPROP_COLOR:
         ObjectSetInteger(0,name,OBJPROP_COLOR,(int)value);return(true);
      case OBJPROP_STYLE:
         ObjectSetInteger(0,name,OBJPROP_STYLE,(int)value);return(true);
      case OBJPROP_WIDTH:
         ObjectSetInteger(0,name,OBJPROP_WIDTH,(int)value);return(true);
      case OBJPROP_BACK:
         ObjectSetInteger(0,name,OBJPROP_BACK,(int)value);return(true);
      case OBJPROP_RAY:
         ObjectSetInteger(0,name,OBJPROP_RAY_RIGHT,(int)value);return(true);
      case OBJPROP_ELLIPSE:
         ObjectSetInteger(0,name,OBJPROP_ELLIPSE,(int)value);return(true);
      case OBJPROP_SCALE:
         ObjectSetDouble(0,name,OBJPROP_SCALE,value);return(true);
      case OBJPROP_ANGLE:
         ObjectSetDouble(0,name,OBJPROP_ANGLE,value);return(true);
      case OBJPROP_ARROWCODE:
         ObjectSetInteger(0,name,OBJPROP_ARROWCODE,(int)value);return(true);
      case OBJPROP_TIMEFRAMES:
         ObjectSetInteger(0,name,OBJPROP_TIMEFRAMES,(int)value);return(true);
      case OBJPROP_DEVIATION:
         ObjectSetDouble(0,name,OBJPROP_DEVIATION,value);return(true);
      case OBJPROP_FONTSIZE:
         ObjectSetInteger(0,name,OBJPROP_FONTSIZE,(int)value);return(true);
      case OBJPROP_CORNER:
         ObjectSetInteger(0,name,OBJPROP_CORNER,(int)value);return(true);
      case OBJPROP_XDISTANCE:
         ObjectSetInteger(0,name,OBJPROP_XDISTANCE,(int)value);return(true);
      case OBJPROP_YDISTANCE:
         ObjectSetInteger(0,name,OBJPROP_YDISTANCE,(int)value);return(true);
      case OBJPROP_FIBOLEVELS:
         ObjectSetInteger(0,name,OBJPROP_LEVELS,(int)value);return(true);
      case OBJPROP_LEVELCOLOR:
         ObjectSetInteger(0,name,OBJPROP_LEVELCOLOR,(int)value);return(true);
      case OBJPROP_LEVELSTYLE:
         ObjectSetInteger(0,name,OBJPROP_LEVELSTYLE,(int)value);return(true);
      case OBJPROP_LEVELWIDTH:
         ObjectSetInteger(0,name,OBJPROP_LEVELWIDTH,(int)value);return(true);

      default: return(false);
     }
   return(false);
  }
Yukarıda açıklanan hataları aldım.
 
-Aleks-:

Anlamıyorum ya da çalışmıyor.

Bu fonksiyona sahiptim


MQL5'te çalışması için makaleden ekledim.


Ve yukarıda açıklanan hataları aldım.

Bu tür yapıların 2013 yılında tuvalete atılması gerekirdi.

   ObjectSet(_name,OBJPROP_CORNER,corner);
   ObjectSet(_name,OBJPROP_XDISTANCE,_x);
   ObjectSet(_name,OBJPROP_YDISTANCE,_y);
   ObjectSetText(_name,_text,_font,"Arial",_color);


Kullanın:

ObjectSetDouble(...)
ObjectSetInteger(...)
 
Vitaly Muzichenko:

Bunlar 2013 yılında tuvalete atılması gereken türden tasarımlar

Kullan:

Teşekkür ederim. Benim durumumda ObjectSetInteger'ı her yere koymam gerektiğini anladım.

 
-Aleks-:

Teşekkür ederim. Benim durumumda ObjectSetInteger'ı her yere koymam gerektiğini anlıyorum.

Kesinlikle.

Yardım, Integer'ın nerede gerekli olduğunu ve Dooble'ın nerede gerekli olduğunu her şeyi mükemmel bir şekilde açıklıyor

 
Vitaly Muzichenko:

Kesinlikle.

Yardım, Integer'ın nerede gerekli olduğunu ve Dooble'ın nerede gerekli olduğunu mükemmel bir şekilde açıklıyor

Yardım konusunda biraz kafam karıştı çünkü daha önce nesnelerle çalışma konusunda fazla bilgim yoktu ve.... işlevini ödünç aldım.

 
-Aleks-:

Daha önce nesnelerle çalışma konusunda fazla bilgim olmadığı için yardım konusunda aptaldım ama işlevi ödünç aldım....

Yeni şubelerden ve danışmanlardan borç alın. 2007'nin şubelerinden ödünç almayın)

 
Vitaly Muzichenko:

Yeni şubelerden ve danışmanlardan borç alın. 2007'deki şubelerden borç almayın)

Bu borçlanma 2013 yılındaydı - bir yerden başka bir yere taşınıyorduk...

 

Lütfen iFractalsMQL4 ile nasıl çalışılacağını önerin

   for (int i=0; i<np; i++) //karakter döngüsü
   {
     m_symbols[i].Refresh();
   
               for (int ii=2;ii<=3;ii++)   //ilk fraktala döngü
               {
                  double dF=0;
                  int TMODE=1;
                  dF = iFractalsMQL4(Pairs[i],PERIOD_D1,TMODE,ii);
                  Print("i  ",i,"  ii  ",ii,"  Pairs[i] ",Pairs[i],"  TMODE  ",TMODE," dF ",dF);
               }
   }

Sonuç:

2017.08.10 17:28:23.458 TwoFingersSymbolsExp_v1.03_my_pa (_DJI,M5) i 0 ii 2 Pairs[i] AUDCAD_i TMODE 1 dF 1.00731
2017.08.10 17:28:23.458 TwoFingersSymbolsExp_v1.03_my_pa (_DJI,M5) i 0 ii 3 Pairs[i] AUDCAD_i TMODE 1 dF 1.797693134862316e+308
2017.08.10 17:28:23.458 TwoFingersSymbolsExp_v1.03_my_pa (_DJI,M5) i 1 ii 2 Pairs[i] AUDCHF_i TMODE 1 dF 1.797693134862316e+308 ...

Yani, iFractalsMQL4 ilk çağrıda çalışır, ancak daha sonra çalışmaz.

CSymbolInfo m_symbols[]; // sembol bilgi nesnesi
ve

m_symbols[i].Refresh();
doğru değildir. Ne yapılması gerekiyor?

 

Teşekkür ederim,

Bu makaledeki sıkı çalışmanız çok yararlı :)