Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 1218

 
Pineapple88:

Das Problem ist behoben, alles scheint zu funktionieren).

Ich habe zwei MA-Indikatoren in die OnInit-Funktion übertragen.

Ich verstehe, dass wir nur den Indikator-Handle in der OnInit-Funktion erstellen und alle anderen Manipulationen mit den Arrays in der OnTick-Funktion durchführen und sie bei jedem Tick überprüfen?

Ja, wir erstellen das Indikator-Handle in OnInit. Alle anderen Operationen werden in OnTick implementiert.

 
Vladimir Karputov:

Ja, der Indikator-Handle wird in OnInit erstellt. Und der Rest der Arbeit wird in OnTick implementiert.

Verstanden, danke!

 
Die Optimierung eines EA in MT5 ist eine notwendige und nützliche Sache. Aber hier ist die Frage: Für welchen Zeitraum sind die besten Parameter für den EA-Betrieb, um seine Rentabilität in der Zukunft zu gewährleisten? Es wird angenommen, dass die Optimierung jeden Monat durchgeführt werden muss. Aber die Optimierung garantiert, dass die Einlage zumindest innerhalb des nächsten Monats nicht verloren geht?
 
BORIS GOLICIN:
Die Optimierung eines EA in MT5 ist eine notwendige und nützliche Sache. Aber hier ist die Frage: Für welchen Zeitraum sind die besten Parameter für den Betrieb des EA, die seine Rentabilität in der Zukunft garantieren? Es wird angenommen, dass die Optimierung jeden Monat durchgeführt werden muss. Aber die Optimierung garantiert, dass die Einlage zumindest innerhalb des nächsten Monats nicht verloren geht?

für eine Bürgschaft an den Bankensektor )

 
BORIS GOLICIN:
Die Optimierung des Expert Advisors im MT5 ist sinnvoll und notwendig. Aber hier ist die Frage: Für welchen Zeitraum garantieren die besten Parameter für den Sachverständigen, dass er in der Zukunft die Gewinnschwelle erreicht? Es wird angenommen, dass die Optimierung jeden Monat durchgeführt werden muss. Aber die Optimierung garantiert, dass die Einlage zumindest innerhalb des nächsten Monats nicht verloren geht?

Meiner Meinung nach ist die Optimierung nutzlos. Er ist nur dazu geeignet, abzuschätzen, wie viel Verlust Sie in einem bestimmten Zeitraum gemacht haben und wie viel Gewinn Sie hätten machen können. Außerdem kann sich die Marktlage jederzeit ändern, und dann ist die ganze Optimierung umsonst. Damit eine Strategie im automatischen Modus länger funktioniert, sollten Sie nicht gierig sein. Versuchen Sie nicht, das Maximum aus dem Markt herauszupressen. Die Maklerfirma wird das nicht zulassen.

 

Hier ist, was ich im Internet über Optimierung finden konnte:

Nehmen wir an, wir haben einen Abschnitt der Geschichte von 15 Jahren (mindestens 10), etwa von 2000 bis 2015. Wir unterteilen dieses Stück in die folgenden Perioden: 2000-2003 ist unser Rückwärtstest, 2003-2012 ist der Optimierungszeitraum, 2012-2015 ist der Vorwärtstest. Nach der Optimierung führen wir die üblichen Vorwärtstests durch, indem wir die 10-20 erfolgreichsten Sätze auswählen. Anschließend führen wir diese Auswahlmengen einem Rückwärtstest unterzogen. Die Ergebnisse sollten denen der Vorwärtsprüfung ähnlich sein. Die Sätze, die den Test bestanden haben, werden für weitere Vergleiche gespeichert. Dann führen wir den Test mit den verbleibenden Sätzen in der gesamten Historie durch und wählen den Satz aus, der bessere Ergebnisse als die anderen zeigt. Als Ergebnis bleibt ein Satz von Einstellungen übrig, der am besten geeignet ist.
Wie wählen wir die Sets in der ersten Phase - dem Vorwärtstest - aus? Ganz einfach: Das Wichtigste ist für uns in dieser Phase die Art der Bilanzkurve. Im Idealfall sollte es eine gerade Linie sein, die von der linken unteren Ecke zur rechten oberen Ecke verläuft. Es hat jedoch keinen Sinn, sich alle besten Sets hintereinander anzusehen - sie sind oft fast identisch.

 

Guten Tag an alle!

Beim Zugriff auf den ATR-Indikator-Handler werden in den ersten 30 Sekunden seltsame Werte angezeigt.

Sie können nicht herausfinden, was die Ursache dafür ist?

int ATRdefinition = 0;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnInit()
  {
   ATRdefinition = iATR(_Symbol,_Period,14);
   if(ATRdefinition == INVALID_HANDLE)
     {
      Print("Ошибка создания Хендла");
     }

   return(INIT_SUCCEEDED);
  }

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {

  }

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnTick()
  {
   string signal = "";

   double Ask = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);
   double Bid = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits);

   double ATRarray[];
   ArraySetAsSeries(ATRarray,true);

   CopyBuffer(ATRdefinition,0,0,3,ATRarray);
   
   double ATRValue = NormalizeDouble(ATRarray[0],5);

   Print("ATRVALUE: ",ATRValue);
  }
Dateien:
ATR.png  51 kb
 
Pineapple88:

Guten Tag zusammen!

Beim Zugriff auf den ATR-Indikator-Handler werden in den ersten 30 Sekunden seltsame Werte angezeigt.

Ich kann nicht verstehen, was der Grund dafür ist?

Prüfen Sie, ob der Indikator bereit ist?

//--- determine the number of values calculated in the indicator 
   int calculated=BarsCalculated(handle); 

(fügen Sie Ihr Handle anstelle von'handle' ein)

 

Es stellt sich heraus, dass diese Daten(402082) nicht ausreichen, um den Indikator zu berechnen?

Ich dachte, dass die FunktionBarsCalculated einen Fehler (-1) ausgeben sollte, wenn nicht genügend Daten für die Berechnung vorhanden sind

Dateien:
ATR2.png  21 kb
 
Pineapple88:

Es stellt sich heraus, dass diese Daten(402082) nicht ausreichen, um den Indikator zu berechnen?

Ich dachte, dass die FunktionBarsCalculated einen Fehler (-1) ausgeben sollte, wenn nicht genügend Daten für die Berechnung vorhanden sind

Es scheint, als würde das Terminal den Verlauf immer weiter aufpumpen - bzw. der Indikator wird ständig neu berechnet. Oder, eine andere Möglichkeit: Sie haben in Ihrem Terminal eine SEHR große Anzahl von Balken eingestellt, die auf dem Chart angezeigt werden sollen, und Ihr Computer ist SEHR schwach.


Hinzugefügt.

Überprüft auf MetaTrader 5 x64 build 2470 und mit der Einstellung "Show bars" von 100000 - mit der Geschichte lange heruntergeladen. Der Code funktionierte perfekt.