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

 
-Aleks-:

Ich kann nicht verstehen, wie man die Funktion

Der Compiler warnt

'OBJPROP_TIME1' - nicht deklarierter Bezeichner TZ_Sky_and_Ground_V_04.mq5 2891 12
'OBJPROP_TIME1' - konstanter Ausdruck erforderlich TZ_Sky_and_Ground_V_04.mq5 2891 12
'OBJPROP_PRICE1' - nicht deklarierter Bezeichner TZ_Sky_and_Ground_V_04.mq5 2893 12
'OBJPROP_PRICE1' - konstanter Ausdruck erforderlich TZ_Sky_and_Ground_V_04.mq5 2893 12
'OBJPROP_TIME2' - nicht deklarierter Bezeichner TZ_Sky_and_Ground_V_04.mq5 2895 12
'OBJPROP_TIME2' - konstanter Ausdruck erforderlich TZ_Sky_and_Ground_V_04.mq5 2895 12
'OBJPROP_PRICE2' - nicht deklarierter Bezeichner TZ_Sky_and_Ground_V_04.mq5 2897 12
'OBJPROP_PRICE2' - konstanter Ausdruck erforderlich TZ_Sky_and_Ground_V_04.mq5 2897 12
'OBJPROP_TIME3' - nicht deklarierter Bezeichner TZ_Sky_and_Ground_V_04.mq5 2899 12
'OBJPROP_TIME3' - konstanter Ausdruck erforderlich TZ_Sky_and_Ground_V_04.mq5 2899 12
'OBJPROP_PRICE3' - nicht deklarierter Bezeichner TZ_Sky_and_Ground_V_04.mq5 2901 12
'OBJPROP_PRICE3' - konstanter Ausdruck erforderlich TZ_Sky_and_Ground_V_04.mq5 2901 12

Ändern Sie ObjectSetInteger(...) in ObjectSetMQL4(...) in den Zeilen, in denen der Fehler auftritt.

Im Allgemeinen ist es einfacher, umzuschreiben, es ist sehr schnell, dort zu ändern, buchstäblich 2 Minuten Zeit

 
Vitaly Muzichenko:

Ändern Sie ObjectSetInteger(...) in ObjectSetMQL4(...) in den Zeilen, in denen der Fehler auftritt.

Im Allgemeinen ist es einfacher, umzuschreiben, es ist sehr schnell, es dort zu ändern, buchstäblich 2 Minuten der Zeit

Ich verstehe nicht, oder es funktioniert nicht.

Ich hatte eine solche Funktion


//+------------------------------------------------------------------+
//|Funktion zur Anzeige von Informationen auf dem Bildschirm|
//+------------------------------------------------------------------+
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);
  }

Um sie in MQL5 zum Laufen zu bringen, habe ich aus dem Artikel


  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);
  }
Ich bekam die oben beschriebenen Fehler.
 
-Aleks-:

Ich verstehe es nicht oder es funktioniert nicht.

Ich hatte diese Funktion


Damit sie in MQL5 funktioniert, habe ich sie aus dem Artikel hinzugefügt.


Und ich bekam die oben beschriebenen Fehler.

Solche Konstruktionen hätten schon 2013 die Toilette runtergespült werden müssen.

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


Verwenden:

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

Diese Art von Entwürfen hätte schon 2013 die Toilette hinuntergespült werden sollen

Verwenden Sie es:

Vielen Dank! Ich habe verstanden, dass ich in meinem Fall ObjectSetInteger überall einsetzen muss .

 
-Aleks-:

Ich danke Ihnen. Ich verstehe, dass ich in meinem Fall ObjectSetInteger überall einsetzen muss .

Das ist richtig.

In der Hilfe ist alles sehr gut beschrieben, wo Integer benötigt wird und wo Dooble benötigt wird

 
Vitaly Muzichenko:

Absolut richtig.

Die Hilfe beschreibt alles sehr gut, wo Integer benötigt wird und wo Dooble benötigt wird

Ich war ein wenig verwirrt von der Hilfe, weil ich vorher nicht viel über die Arbeit mit Objekten wusste und ich mir die Funktion....

 
-Aleks-:

Ich war dumm mit der Hilfe - da ich vorher nicht viel über die Arbeit mit Objekten wusste, aber ich lieh mir die Funktion....

Ausleihen von neuen Zweigen und Beratern. Leihen Sie nicht von den Zweigen von 2007)

 
Vitaly Muzichenko:

Nehmen Sie Kredite bei neuen Filialen und Beratern auf. Nehmen Sie keine Kredite von den Filialen von 2007 auf.)

Diese Kreditaufnahme fand 2013 statt - ich bin gerade von einem Ort zum anderen gezogen...

 

Bitte um Rat, wie man mit iFractalsMQL4 arbeitet

   for (int i=0; i<np; i++) //Zeichenzyklus
   {
     m_symbols[i].Refresh();
   
               for (int ii=2;ii<=3;ii++)   //Zyklus zum ersten Fraktal
               {
                  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);
               }
   }

Ergebnis:

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 ...

Das heißt, iFractalsMQL4 funktioniert beim ersten Aufruf, dann aber nicht mehr.

CSymbolInfo m_symbols[]; // Symbol-Info-Objekt
und

m_symbols[i].Refresh();
sind nicht korrekt. Was sollte getan werden?

 

Ich danke Ihnen,

Ihre harte Arbeit in diesem Artikel ist sehr hilfreich :)