Diskussion zum Artikel "Die Darstellung der Optimierung einer Handelsstrategie im MetaTrader 5" - Seite 3

 
Rashid Umarov:

@Dennis Kirichenko Haben Sie die Bilder aus dem EasyAndFastGUI.zip -Archiv selbst entpackt? Ich musste alle Bilder als ZIP-Datei anhängen, es gibt im Moment keine andere Möglichkeit.

Ja, ich habe sie selbst entpackt und kopiert. Hätten Sie es anders machen sollen?

Ich bin jetzt so:



 
Dennis Kirichenko:

Ja, ich habe sie selbst entpackt und kopiert. Hätte ich es anders machen sollen?

Ich bin jetzt so:

Alles korrekt.

Zeigen Sie die Liste der vom Expert Advisor erstellten grafischen Objekte an, bevor er den Chart zu Beginn der Optimierung verlässt (Strg + B).

 
Anatoli Kazharski:

Das ist richtig.

Zeigen Sie die Liste der vom Expert Advisor erstellten grafischen Objekte an, bevor Sie den Chart zu Beginn der Optimierung verlassen (Strg + B).

Nur für den Fall, dass die Objekte ausgeblendet sind. Um sie in der Liste anzuzeigen, drücke ich auf die Schaltfläche "Alle".



 
Dennis Kirichenko:

...

Das heißt, Sie haben aus irgendeinem Grund kein Objekt erstellt, um die Schaltfläche zu zeichnen:

Standardbibliothek:

//+------------------------------------------------------------------+
Neues Objekt mit Bitmap-Ressource anhängen //|
//+------------------------------------------------------------------+
bool CCanvas::Attach(const long chart_id,const string objname,ENUM_COLOR_FORMAT clrfmt=COLOR_FORMAT_XRGB_NOALPHA)
  {
   if(OBJ_BITMAP_LABEL==ObjectGetInteger(chart_id,objname,OBJPROP_TYPE))
     {
      string rcname=ObjectGetString(chart_id,objname,OBJPROP_BMPFILE);
      rcname=StringSubstr(rcname,StringFind(rcname,"::"));
      if(ResourceReadImage(rcname,m_pixels,m_width,m_height))
        {
         m_objname=objname;
         m_rcname=rcname;
         m_format=clrfmt;
         m_objtype=OBJ_BITMAP_LABEL;
         //--- Erfolg
         return(true);
        }
     }
//--- fehlgeschlagen
   return(false);
  }

//---

Und es ist unklar, warum das Problem bei einigen Benutzern auftritt und bei anderen nicht.

Haben Sie irgendwelche Änderungen an dieser Klasse vorgenommen?

 

Die Schaltflächen sind da.

Ich bearbeite SB nie.

Ich habe keine Änderungen an der Klasse CCanvas::Attach() vorgenommen. Hier ist es:

//+------------------------------------------------------------------+
Neues Objekt mit Bitmap-Ressource anhängen //|
//+------------------------------------------------------------------+
bool CCanvas::Attach(const long chart_id,const string objname,ENUM_COLOR_FORMAT clrfmt=COLOR_FORMAT_XRGB_NOALPHA)
  {
   if(OBJ_BITMAP_LABEL==ObjectGetInteger(chart_id,objname,OBJPROP_TYPE))
     {
      string rcname=ObjectGetString(chart_id,objname,OBJPROP_BMPFILE);
      rcname=StringSubstr(rcname,StringFind(rcname,"::"));
      if(ResourceReadImage(rcname,m_pixels,m_width,m_height))
        {
         m_objname=objname;
         m_rcname=rcname;
         m_format=clrfmt;
         m_objtype=OBJ_BITMAP_LABEL;
         //--- Erfolg
         return(true);
        }
     }
//--- fehlgeschlagen
   return(false);
  }
 
Dennis Kirichenko:

Es gibt Tasten.

Ich bearbeite die SB nie.

Ich habe keine Änderungen an der Klasse CCanvas::Attach() vorgenommen. Hier ist es:

In diesem Fall kann ich Ihnen nicht helfen.

KR      0       12:44:52.304    MacdSampleWithFrames (EURUSD,H1)        CElement::CreateCanvas > Не удалось присоединить холст для рисования к графику: 4016

//---

Fehler 4016 bedeutet:

ERR_RESOURCE_NOT_FOUND

4016

Ressource mit diesem Namen wurde in EX5 nicht gefunden


//---

Falls noch jemand die Beispiele aus dem Artikel getestet hat, bitte ich um Mitteilung der Ergebnisse. Hat noch jemand dieses Problem?

 

Könnte es daran liegen, dass mein Stammordner "C:/Programme / MetaTrader 5 / MQL5"???? ist?

Dementsprechend befinden sich die Ressourcen in C:/Programme /MetaTrader 5 /MQL5 /Images.

Vielleicht gibt es ein Problem beim Zugriff auf die Bilder? Obwohl das Terminal als Administrator gestartet ist.

 
Dennis Kirichenko:

Könnte es daran liegen, dass mein Stammordner wie "C:\Programme\MetaTrader 5\MQL5" aussieht...?

Dementsprechend befinden sich die Ressourcen in C:\Program Files/ MetaTrader 5/ MetaTrader 5/ MQL5/Images.

Vielleicht gibt es ein Problem beim Zugriff auf die Bilder? Obwohl das Terminal als Administrator läuft.

Ich weiß es nicht. Versuchen Sie, diesen Punkt zu untersuchen.

Die Ressourcen im Code für das Formular sind wie folgt geschrieben:

//+------------------------------------------------------------------+
//|| Erzeugt Schaltflächen auf dem Formular|
//+------------------------------------------------------------------+
#resource "\\Images\\EasyAndFastGUI\\Controls\\close_black.bmp"
#resource "\\Images\\EasyAndFastGUI\\Controls\\close_white.bmp"
#resource "\\Images\\EasyAndFastGUI\\Controls\\full_screen.bmp"
#resource "\\Images\\EasyAndFastGUI\\Controls\\minimize_to_window.bmp"
#resource "\\Images\\EasyAndFastGUI\\Controls\\up_thin_white.bmp"
#resource "\\Images\\EasyAndFastGUI\\Controls\\down_thin_white.bmp"
#resource "\\Images\\EasyAndFastGUI\\Controls\\help.bmp"
//---
bool CWindow::CreateButtons(void)
  {
//--- Wenn der Programmtyp "Skript" ist, beenden
   if(CElementBase::ProgramType()==PROGRAM_SCRIPT)
      return(true);
//--- Anzahl, Größe, Menge
   int i=0,x_size=20;
   int buttons_total=4;
//--- Dateipfad
   string icon_file="";
//--- Ausnahme im Erfassungsbereich
   m_right_limit=0;
//---
   CButton *button_obj=NULL;
//---
   for(int b=0; b<buttons_total; b++)
     {
      //---
      if(b==0)
        {
         CElementBase::LastId(LastId()-1);
         m_button_close.MainPointer(this);
         if(!m_close_button)
            continue;
         //---
         button_obj=::GetPointer(m_button_close);
         icon_file ="Images\\EasyAndFastGUI\\Controls\\close_white.bmp";
        }
      else if(b==1)
        {
         m_button_fullscreen.MainPointer(this);
         //--- Beenden, wenn (1) die Schaltfläche nicht aktiviert ist oder (2) dieses Dialogfenster
         if(!m_fullscreen_button || m_window_type==W_DIALOG)
            continue;
         //---
         button_obj=::GetPointer(m_button_fullscreen);
         icon_file="Images\\EasyAndFastGUI\\Controls\\full_screen.bmp";
        }
      else if(b==2)
        {
         m_button_collapse.MainPointer(this);
         //--- Beenden, wenn (1) die Schaltfläche nicht aktiviert ist oder (2) dieses Dialogfenster
         if(!m_collapse_button || m_window_type==W_DIALOG)
            continue;
         //---
         button_obj=::GetPointer(m_button_collapse);
         if(m_is_minimized)
            icon_file="Images\\EasyAndFastGUI\\Controls\\down_thin_white.bmp";
         else
            icon_file="Images\\EasyAndFastGUI\\Controls\\up_thin_white.bmp";
        }
      else if(b==3)
        {
         m_button_tooltip.MainPointer(this);
         //--- Beenden, wenn (1) die Schaltfläche nicht aktiviert ist oder (2) dieses Dialogfenster
         if(!m_tooltips_button || m_window_type==W_DIALOG)
            continue;
         //---
         button_obj=::GetPointer(m_button_tooltip);
         icon_file ="Images\\EasyAndFastGUI\\Controls\\help.bmp";
        }
      //--- Eigenschaften
      button_obj.Index(i);
      button_obj.XSize(x_size);
      button_obj.YSize(x_size);
      button_obj.IconXGap(2);
      button_obj.IconYGap(2);
      button_obj.BackColor(m_caption_color);
      button_obj.BackColorHover((b<1)? C'242,27,45' : C'0,150,245');
      button_obj.BackColorPressed((b<1)? C'149,68,116' : C'0,160,255');
      button_obj.BackColorLocked(m_caption_color_locked);
      button_obj.BorderColor(m_caption_color);
      button_obj.BorderColorHover(m_caption_color);
      button_obj.BorderColorLocked(m_caption_color_locked);
      button_obj.BorderColorPressed(m_caption_color);
      button_obj.IconFile(icon_file);
      button_obj.IconFileLocked(icon_file);
      if(b==3)
        {
         button_obj.TwoState(true);
         button_obj.IconFilePressed(icon_file);
         button_obj.IconFilePressedLocked(icon_file);
        }
      button_obj.AnchorRightWindowSide(true);
      //--- Berechnung der Einrückung für die nächste Schaltfläche
      m_right_limit+=x_size-((i<3)? 0 : 1);
      i++;
      //--- Ein Element erstellen
      if(!button_obj.CreateButton("",m_right_limit,0))
         return(false);
      //--- Hinzufügen eines Elements zum Array
      CElement::AddToArray(button_obj);
     }
//---
   return(true);
  }
 

Ja, Anatoly, ich habe dies entdeckt.

In Ihren Code-Beispielen zum Artikel, in den heruntergeladenen Dateien, ist die Datei MacdSampleWithFrames.mq5 identisch mit der Datei MovingAverageWithFrames.mq5 in Bezug auf den Code-Inhalt .

Bitte korrigieren Sie dies. Ich danke Ihnen.

 

Ich habe es auf einem anderen Terminal getestet, wo alle Dateien im Ordner %AppData\Roaming\MetaQuotes\Terminal\... gespeichert sind.

Gleicher Fehler. Irgendetwas stimmt hier nicht.