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

 
Freunde. Gemeinsam haben wir den Expert Advisor-Algorithmus entwickelt, den ich im Sinn hatte,
und ich danke Ihnen vielmals. Man könnte sagen, wir alle haben es getan)
Es funktioniert, die Ergebnisse sind wie erwartet, und wir können weitermachen.
---
Frage zum Testen im OHLC M1-Modus.
Ist es realistisch, den Expert Advisor so zu programmieren, dass die Testergebnisse auf OHLC M1 denen auf "all ticks" nahe kommen?
Ich habe das ganze Forum durchsucht, es gibt klare Erklärungen, warum der OHLC M1 Modus mit 4 Referenzpunkten nicht übereinstimmt
mit den tick-basierten Modi.

Aber ich habe keine Empfehlungen gefunden, Beispiele, wie man diese Bedingung zu programmieren, um ähnlich wie OHLC M1 sein, und ist es überhaupt möglich?

Ich mag den OHLC M1-Modus ausschließlich wegen der Geschwindigkeit der Berechnungen.
Die Besonderheiten des EA. (Wenn es wichtig ist)
Setzt Stop-Orders mit festem SL und TP, ändert oft die Orders bei neuen Kursniveaus und wartet auf die Auslösung.
Es gibt keine Indikatoren, nur Preiszähler.
Wenn es nicht möglich ist, den Modus "OHLC M1" zu simulieren, wäre es vielleicht besser, den Modus "Nach Eröffnungskursen" zu verwenden?
Schließlich möchte ich wissen, welcher Modus sinnvoll ist, damit die Berechnungen schnell und einfach durchgeführt werden können.
Ich würde gerne verstehen, was ich verwenden sollte, um Berechnungen schnell durchzuführen und die Divergenz zwischen den verschiedenen technischen Modi zu minimieren.

Bislang habe ich bei denselben Einstellungen folgende Abweichungen festgestellt.

"OHLC M1; 8 Jahre; 1681 Trades. (ursprünglich habe ich diese Methode verwendet)

OHLC M1

"Eröffnungskurse" ; 8 Jahre; 1655 Abschlüsse.

Nur Eröffnungspreise

"Alle Zecken" 8 Jahre; 1676 Verkäufe.

alle Ticks

Der Algorithmus scheint robust zu sein, und möglicherweise kann ich die Ergebnisse der einzelnen Methoden sogar noch verbessern,

aber es würde an Vielseitigkeit verlieren und überflüssig erscheinen.




 
vladzeit:


Kurz gesagt, wenn Sie zum Beispiel TP-Kaufpositionen bei 1,16000 eingestellt haben, dann werden "alle Ticks" ungefähr zu diesem Preis schließen. OHLC wird zu diesem Preis über 1,16000 schließen, und das kann ein ziemlich großer Unterschied sein, so dass OHLC immer bessere Ergebnisse zeigen wird. Das Gleiche gilt für "Zu Eröffnungspreisen".

 
Nauris Zukas:

Kurz gesagt, wenn Sie zum Beispiel TP-Kaufpositionen bei 1,16000 festlegen, werden "alle Ticks" ungefähr zu diesem Preis geschlossen. OHLC wird auf den Preis, der über 1,16000 war dies zu schließen und kann eine ziemlich große Differenz, so dass immer OHLC wird bessere Ergebnisse zeigen. Das Gleiche gilt für "Zu Eröffnungspreisen".

Nauris, ich danke dir. Ich verstehe (ich kann es mir denken), warum die Ergebnisse von Methode zu Methode unterschiedlich sind. Aber was ich verstehen möchte, ist Folgendes:

Wenn der Tester die "OHLC M1"-Methode simuliert hat, wie kann man dann die gleiche Methode im Expert Advisor programmatisch wiederholen.

Der Prüfer hat es irgendwie reproduziert...

 
vladzeit:

Nauris, ich danke dir. Ich verstehe (ich kann es mir denken), warum die Ergebnisse von Methode zu Methode unterschiedlich sind. Aber was ich verstehen möchte, ist Folgendes:

Wenn der Tester die "OHLC M1"-Methode simuliert hat, wie kann man dann die gleiche Methode im Expert Advisor programmatisch wiederholen.

Der Prüfer hat es irgendwie reproduziert...

Glauben Sie mir, Sie brauchen diese Präzision nicht, optimieren Sie das Ergebnis und lassen Sie es auf allen Zecken laufen, die beste Option ...

Wenn Sie nicht 3-4 Pips entfernt sind, würde es keinen großen Unterschied machen, wenn er mit zwei Pips mehr oder weniger schließt...

Wenn Sie etwas im Expertenratgeber zurückspielen, wird Ihre Zeit nicht schneller, sondern im Gegenteil langsamer...

 
xxz:

Glauben Sie mir, Sie brauchen diese Präzision nicht, optimieren Sie das Ergebnis und lassen Sie es auf allen Ticks laufen, die beste Option ...

Wenn Sie nicht 3-4 Pips entfernt sind, dann macht es keinen großen Unterschied, ob Sie mit zwei Pips mehr oder weniger geschlossen haben...

Das Abspielen von etwas im Expert Advisor beschleunigt die Zeit nicht, sondern verlangsamt sie im Gegenteil...

Ich danke Ihnen. Wenn niemand den Weg zur Umsetzung der"OHLC M1"-Methode fortsetzen wird, werde ich nur dazu verurteilt, Ihren Rat zu verwenden)))

 
vladzeit:

Ich danke Ihnen. Wenn niemand die Methode"OHLC M1" fortsetzt, bin ich dazu verdammt, Ihren Ratschlag zu befolgen))))

Wenn Ihnen keine besonders brillante Idee einfällt, liegt der Unterschied in der Richtung der Ticks, im realen Handel können die Ticks öffnen, unten, oben, schließen, und wenn die Kerze groß ist, können Sie unten kaufen und beim Schließen einen Gewinn erzielen, in der Simulation wird die Kerze als offen, oben, unten, schließen geformt, sagen wir, die offene und die obere Kerze fallen mit dem Schluss zusammen, dann kaufen Sie bei einer solchen Kerze, aber nicht mit Gewinn, und wenn der Markt nach unten gegangen ist, dann haben Sie hier eine Hanging-Loss-Order ...

... daher die Divergenz...

 
vladzeit:

Ich danke Ihnen. Wenn niemand mehr weiß, wie man die"OHLC M1"-Methode umsetzt, bin ich dazu verdammt, Ihren Rat anzunehmen)))

Die Methode spricht für sich selbst. Verwenden Sie in Ihrem EA nur die OHLC-Preise aller Minutenbalken, die im aktuellen Balken enthalten sind.
 
vladzeit:

Ich danke Ihnen. Wenn niemand mehr weiß, wie man die"OHLC M1"-Methode umsetzt, bin ich einfach dazu verdammt, Ihren Rat anzunehmen)))

Öffnen/Schließen im Expert Advisor nicht nach Preisniveau, sondern nach Öffnung. Es gibt ein Öffnungs-/Schließungssignal, warten Sie die nächste 1M-Kerze ab und öffnen/schließen Sie.

 
Artyom Trishkin:
Die Methode spricht für sich selbst. Verwenden Sie in Ihrem EA nur die OHLC-Preise aller im aktuellen Balken enthaltenen Minutenbalken.

Artyom, ich habe es versucht. Auf alle Bedingungen, Eröffnung und Änderung von Aufträgen habe ich eine Bedingung "auf die Geburt eines neuen Bar" durch boolsche FunktionisNewBar() gesetzt

wie diese:

if (Buys==true )
   {
   int count_buy_stops=0;   int count_pos_buy=0;
   CalOrders_Buy(count_buy_stops);   CalPosition_Buy(count_pos_buy);
   if(count_buy_stops==0 && count_pos_buy==0) && isNewBar())
   {
   BuyStop();
   }
   }

Die FunktionisNewBar() selbstaus den Beispielen und den code.base-Artikeln.

bool isNewBar()
  {
//--- в статической переменной будем помнить время открытия последнего бара
   static datetime last_time=0;
//--- текущее время
   datetime lastbar_time=(datetime)SeriesInfoInteger(Symbol(),Period(),SERIES_LASTBAR_DATE);
   if(last_time==0)//--- если это первый вызов функции
   {
   last_time=lastbar_time;    //--- установим время и выйдем 
   return(false);
   }
   if(last_time!=lastbar_time)//--- если время отличается
   {
   last_time=lastbar_time;    //--- запомним время и вернем true
   return(true);
   }
//--- дошли до этого места - значит бар не новый, вернем false
   return(false);
  }

Es scheint zu funktionieren und platziert Aufträge und ändert sie nur bei einem neuen Takt, aber aus irgendeinem Grund gibt es eine Diskrepanz.

Es gibt eine Diskrepanz zwischenOHLC auf M1, die ich ohneisNewBar() und "all ticks" mit der FunktionisNewBar() angewendet habe.

Ich hatte erwartet, dassich durch die Anwendung vonisNewBar() auf "alle Ticks" das gleiche Ergebnis wieOHLC auf aktuelle Preiseerhalten würde.

Also, ich verstehe nicht, ob ich den Code vermasselt haben muss oder ob ich denOHLC-Modus nicht richtig versteheund erwarte, dass es unmöglich ist.

Ich weiß nicht, wo ich graben soll.

Artyom, erzähl mir mehr, wenn es nicht schwierig ist.

Die Order kann auf einem neuen Balken gesetzt und geändert werden, aber SL und TP (im Tester) werden trotzdem innerhalb des alten Balkens funktionieren?

 
Der Versuch, von einem festen Los in ein prozentuales Los umzuwandeln, ist gescheitert. Kann jemand Auskunft über den vollständigen Code geben?
Dateien:
Experiment.mq5  38 kb
Grund der Beschwerde: