Diskussion zum Artikel "In 6 Schritten zum eigenen automatischen Handelssystem!" - Seite 2

 
bivmail:

Ich war schon ganz aufgeregt, aber ich kann das Problem nicht umgehen (comm - ich habe etwas über Speicheradressübertragung gelesen, aber auch das hat nicht funktioniert):

Der Compiler gibt den Fehler 'm_MethodFast' - constant expression required, ' m_MethodSlow' - constant expression required

Das sind natürlich Fragen für einen Dummie. Vielleicht sollte ich solche Fragen in einem anderen Thread stellen, um den Artikel nicht zu verstopfen?


ENUM_MA_METHOD l_array1_select_method[2];
l_array1_select_method[0]=MethodFast();
l_array1_select_method[1]=MethodSlow();
 

Ja. der zweite Weg hat auch nicht so gut funktioniert:

Er stolpert

1)'=' - l-Wert erforderlich //...Search(l_array1_select_method_n2.At(i_array1_n2))=-1)

2) 'At' - Parameter für EnumToString muss eine Aufzählung sein //...EnumToString(l_array1_select_method_n2.At(i_array1_n2)));

Ausdruck nicht boolesch

#include <Arrays\ArrayInt.mqh>
   CArrayInt l_array1_select_method_n2;
   l_array1_select_method_n2.Add(m_MethodFast);
   l_array1_select_method_n2.Add(m_MethodSlow);
   //int total_array1_n2=l_array1_select_method_n2.Total()-1;// ArraySize(l_array1_select_method_n2);

   CArrayInt l_array2_enum_ma_method_n2;
   l_array2_enum_ma_method_n2.Add(MODE_SMA);
   l_array2_enum_ma_method_n2.Add(MODE_EMA);
   l_array2_enum_ma_method_n2.Add(MODE_SMMA);
   l_array2_enum_ma_method_n2.Add(MODE_LWMA);

   bool YesErrorsFlag_n2=false;
   for(int i_array1_n2=0;i_array1_n2<l_array1_select_method_n2.Total()-1;i_array1_n2++)
     {
      if(l_array2_enum_ma_method_n2.Search(l_array1_select_method_n2.At(i_array1_n2))=-1)
        {
         YesErrorsFlag_n2=true;
         PrintFormat("Ungültiger Glättungs-Typ %s gleitender Durchschnitt!",EnumToString(l_array1_select_method_n2.At(i_array1_n2)));
        }
     }

   if(YesErrorsFlag_n2)
     {
      return(false);
     }

Dies hat nun keinen praktischen Zweck. Lassen wir es so, wie es im Beispiel ist...

 
bivmail:

Ja. der zweite Weg hat auch nicht so gut funktioniert:

Er stolpert

1)'=' - l-Wert erforderlich //...Search(l_array1_select_method_n2.At(i_array1_n2))=-1)

2) 'At' - Parameter für EnumToString muss eine Aufzählung sein //...EnumToString(l_array1_select_method_n2.At(i_array1_n2)));

Ausdruck nicht boolesch

Dies hat nun keinen praktischen Zweck. Lassen wir es so wie es ist im Beispiel....

Fügen wir den für die Kompilierung geeigneten Code an (weil Telepathen mühsam sind).
 

Hallo, ich habe das folgende Problem.

Ich habe alle Schritte gemäß der Anleitung bis zum Ende durchgeführt. Ich habe den EA kompiliert und versucht, ihn zu testen - während des gesamten Jahres des Tests sind keine Trades aufgetreten und es gibt einen Fehler - genetischer Durchlauf (nn, Sequenznummer) getestet mit Fehler "kann den Experten nicht initialisieren".

Ich habe versucht, den Expert Advisor aus dem ma_cross.mqh-Signal zu kompilieren, das mit dem Artikel kam, es gibt den gleichen Fehler. Und schließlich habe ich versucht, die fertige Expert Advisor, die mit dem Artikel kam, und wieder den gleichen Fehler!!! Was ist das Problem, können Sie mir sagen?


 
Versuchen Sie, den mitgelieferten benutzerdefinierten Indikator "Custom Moving Average.mq5" neu zu kompilieren. Wenn die Version der Datei "Custom Moving Average.ex5" nicht mit der aktuellen Version des Compilers übereinstimmt, wird der Indikator-Handle während der Initialisierung des generierten Expert Advisors nicht erstellt. Es sieht so aus, als ob dieser Fall bei Ihnen vorliegt.
Переход на новые рельсы: пользовательские индикаторы в MQL5
Переход на новые рельсы: пользовательские индикаторы в MQL5
  • 2009.11.23
  • Андрей
  • www.mql5.com
Я не буду перечислять все новые возможности и особенности нового терминала и языка. Их действительно много, и некоторые новинки вполне достойны освещения в отдельной статье. Вы не увидите здесь кода, написанного по принципам объектно-ориентированного программирования — это слишком серьезная тема для того, чтобы просто быть упомянутой в контексте как дополнительная вкусность для кодописателей. В этой статье остановимся подробней на индикаторах, их строении, отображении, видах, а также особенностях их написания по сравнению с MQL4.
 

Vielen Dank für Ihre Hilfe. Ich habe neu kompiliert, aber das Problem bleibt bestehen. Außerdem möchte ich klarstellen, dass ich den Metatrader vor einer Woche von der offiziellen Metatrader-Website heruntergeladen habe, so dass ich bezweifle, dass irgendetwas Zeit hatte, veraltet zu werden.

Außerdem habe ich versucht, diesen Expert Advisor von zwei verschiedenen Computern aus zu testen.

 
danielalmaty:

Vielen Dank für Ihre Hilfe. Ich habe neu kompiliert, aber das Problem bleibt bestehen. Außerdem möchte ich klarstellen, dass ich den Metatrader vor einer Woche von der offiziellen Metatrader-Website heruntergeladen habe, so dass ich bezweifle, dass irgendetwas Zeit hatte, veraltet zu werden.

Außerdem habe ich versucht, diesen Expert Advisor von zwei verschiedenen Computern aus zu testen.

Sie sollten versuchen, einen einzelnen Test durchzuführen (nicht die Optimierung). Das Protokoll wird detailliertere Informationen über den Grund der Nichtinitialisierung des Expert Advisors enthalten.
 

Ich habe versucht, einen einzigen Test ohne Optimierung durchzuführen, keine Fehler, alles läuft reibungslos, aber es wurde während des gesamten Zeitraums kein einziger Handel im Test getätigt.

 
danielalmaty:

Ich habe versucht, einen einzigen Test ohne Optimierung durchzuführen, keine Fehler, alles läuft reibungslos, aber während des gesamten Zeitraums wurde kein einziger Handel im Test durchgeführt.

Können Sie die Einstellungen des Expert Advisors zeigen und mir sagen, auf welchem Handelsserver Sie den Test durchführen? Haben Sie ein aktives Konto?
 

Beginn der Tests auf dem MIGBank-Demo-Server.

Die Einstellungen des Expert Advisors sind wie folgt

//+------------------------------------------------------------------+
//| Eingaben|
//+------------------------------------------------------------------+
//--- Eingaben für Experten
input string         Expert_Title             ="ssssa";  // Name des Dokuments
ulong                Expert_MagicNumber       =847;      // 
bool                 Expert_EveryTick         =false;    // 
//--- Eingänge für Hauptsignal
input int            Signal_ThresholdOpen     =10;       // Zu öffnender Signalschwellenwert [0...100]
input int            Signal_ThresholdClose    =10;       // Signalschwellenwert zum Schließen [0...100]
input double         Signal_PriceLevel        =0.0;      // Preisniveau für die Ausführung eines Geschäfts
input double         Signal_StopLevel         =50.0;     // Stop-Loss-Niveau (in Punkten)
input double         Signal_TakeLevel         =50.0;     // Gewinnmitnahme-Niveau (in Punkten)
input int            Signal_Expiration        =4;        // Verfall der schwebenden Aufträge (in Takten)
input int            Signal_MaCross_FastPeriod=13;       // My_MA_Cross(13,MODE_SMA,21,...) Zeitraum des schnellen MA
input ENUM_MA_METHOD Signal_MaCross_FastMethod=MODE_SMA; // My_MA_Cross(13,MODE_SMA,21,...) Methode der schnellen MA
input int            Signal_MaCross_SlowPeriod=21;       // My_MA_Cross(13,MODE_SMA,21,...) Zeitraum des langsamen MA
input ENUM_MA_METHOD Signal_MaCross_SlowMethod=MODE_SMA; // My_MA_Cross(13,MODE_SMA,21,...) Methode der langsamen MA
input double         Signal_MaCross_Weight    =1.0;      // My_MA_Cross(13,MODE_SMA,21,...) Gewicht [0...1.0]
//--- Eingaben gegen Geld
input double         Money_FixLot_Percent     =10.0;     // Prozentsatz.
input double         Money_FixLot_Lots        =0.1;      // Festes Volumen

Wie gesagt, ich habe versucht, den Expert Advisor aus dem Artikel auszuführen, was zum gleichen Ergebnis führte. Sie können also die Einstellungen sehen, indem Sie einfach die Datei aus dem Artikel herunterladen.