Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1171

 
Igor Zakharov:

Wird dadurch die Geschichte aufgepeppt?

Wahrscheinlich schon. Aber ich bin mir nicht 100%ig sicher. Wie überprüfen Sie dies, und ändern die Drucke die Anzahl der Balken?

Igor Zakharov:

Sie haben keine Neuberechnung für diesen Fall.

Danke, sieht so aus.

Igor Zakharov:

Und die neu erscheinendenIndikatorpuffer sind mit Müll gefüllt.

Nicht nur die neuen, sondern auch die alten. Ich habe das Gefühl, dass nicht nur die Pfeile willkürlich gezeichnet werden, sondern auch die Indikatorlinie bricht, obwohl sie das nicht sollte. Bitte teilen Sie mir mit, wie ich die Neuberechnung im Falle eines Austauschs der Geschichte organisieren kann oder wo ich zum Beispiel nachsehen kann.

 
Alexey Viktorov:

Ich habe einen Fehler gemacht, als ich dieses Add-on separat einfügte. Sie sollten die Pfeile nur setzen, wenn sich der Puffer ändert. Vergessen Sie dabei nicht, in allen anderen Fällen einen leeren Wert in den Puffer zu schreiben.

Es wäre sogar besser, einen leeren Wert auf einmal zu setzen und einen der Puffer mit einem Pfeil zu füllen, wenn sich der Trend ändert.

Ich danke Ihnen für Ihre Antwort.

Ich habe den ursprünglichen Indikator überprüft, und es hat sich herausgestellt, dass nicht ich den Fehler gemacht habe, sondern dass er ursprünglich falsch geschrieben war. D.h. auch ohne meine Modifikationen stürzt es ab, wenn man den Verlauf austauscht.

 
Dies ist das erste Mal, dass ich eine Frage gestellt habe und keine Antwort erhalten habe. Eine Art gezielte Hilfe für Neueinsteiger.
 
novichok2018:
Dies ist das dritte Mal, dass ich eine Frage stelle und keine Antwort erhalte. Dies ist eine Art gezielte Hilfe für Neulinge.

Als erstes fällt auf, dass Sie ein grafisches Trendlinien-Objekt mit dem Namen LowLine erstellen und es später nicht löschen oder ähnliche Objekte mit anderen Namen erstellen...

Sie können ObjectCreate() nicht mehrmals mit demselben Namen ausführen - es wird nur beim ersten Mal funktionieren, danach wird ein Fehler auftreten.


Es gibt auch ein Problem bei der Bestimmung der Fraktale, man versucht, das Fraktal auf dem Balken #2 nach der Balkeneröffnung zu finden, führt normalerweise einen Zyklus auf den Balken mit einem Aufruf des Fraktalindikators durch und bricht den Zyklus ab, wenn das erste Fraktal gefunden wurde, und erhält die Balkennummer, auf der das Fraktal war

 
Igor Makanu:

Es gibt auch ein Problem mit der Definition von Fraktalen, Sie versuchen, ein Fraktal auf der Bar Eröffnung # 2 zu finden, in der Regel einen Zyklus auf den Bars mit dem Aufruf der Fraktal-Indikator und brechen den Zyklus, wenn das erste Fraktal gefunden wird, und erhalten Sie die Bar-Nummer, auf dem das Fraktal war

Ich danke Ihnen!

In der Tat verstehe ich nicht, wie man die Nummern der Balken erhält, in denen das Fraktal auftaucht, da es zwei Balken später erscheint. Deshalb fange ich sie im zweiten Takt. Alert zeigt die Anzahl der Fraktale in einem bestimmten Zeitraum an, aber wie kann ich den Punkt des zweiten Fraktals festlegen, um die Trendlinie zu zeichnen? Es ist nicht klar, wie man es gemäß Ihrer Empfehlung macht.

Der so genannte Fraktal-Indikator zeichnet Fraktale auf alle verfügbaren Historien. Ich versuche, die Aufgabe zu lösen, die Trendlinie durch ein Fraktal zu zeichnen, das in einen bestimmten Zeitraum des Tages fällt, wobei die Fraktale des vorherigen Tages berücksichtigt werden und die Linie automatisch entsprechend dem letzten Fraktal neu aufgebaut wird. Und es gibt einen Mangel an Wissen.

 
novichok2018:

Ich danke Ihnen!

Ich verstehe wirklich nicht, wie man die Nummern der Balken erhält, in denen das Fraktal auftaucht, da es zwei Balken zu spät erscheint. Deshalb fange ich sie im zweiten Takt. Alert zeigt die Anzahl der Fraktale in einem bestimmten Zeitraum an, aber wie kann ich den Punkt des zweiten Fraktals festlegen, um die Trendlinie zu zeichnen? Es ist nicht klar, wie man es gemäß Ihrer Empfehlung macht.

Der so genannte Fraktal-Indikator zeichnet Fraktale auf alle verfügbaren Historien. Ich versuche, die Aufgabe zu lösen, die Trendlinie durch ein Fraktal zu zeichnen, das in einen bestimmten Zeitraum des Tages fällt, wobei die Fraktale des vorherigen Tages berücksichtigt werden und die Linie automatisch entsprechend dem letzten Fraktal neu aufgebaut wird. Und es gibt einen Mangel an Wissen.

Sind Sie sicher, dass Sie an der ZWEITEN Stange einhaken müssen?

Hier sind die Tests:

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

MQL5: Beispiele.

Wladimir Karputow, 2018.03.19 05:54

  • 2.3. iFractals. Zwei wichtige Faktoren sind zu berücksichtigen

Bei der Arbeit mit Fraktalen gibt es zwei Faktoren zu beachten:

Faktor eins

DasFraktal auf den Balken von "rates_total-5" bis"rates_total-3" kann nicht neu gezeichnet werden - dies ergibt sich aus dem Design des Indikators"Fractals.mq5" (der offene Code des Indikators befindet sich in [data folder]\MQL5\Indicators\Examples\Fractals.mq5) - da die Balken im Intervallvon "rates_total-5" bis"rates_total-3" bereits gebildet sind

//---
   if(prev_calculated<7)
     {
      limit=2;
      //--- clean up arrays
      ArrayInitialize(ExtUpperBuffer,EMPTY_VALUE);
      ArrayInitialize(ExtLowerBuffer,EMPTY_VALUE);
     }
   else limit=rates_total-5;

   for(i=limit;i<rates_total-3 && !IsStopped();i++)
     {
      //---- Upper Fractal
      if(high[i]>high[i+1] && high[i]>high[i+2] && high[i]>=high[i-1] && high[i]>=high[i-2])
         ExtUpperBuffer[i]=high[i];
      else ExtUpperBuffer[i]=EMPTY_VALUE;

      //---- Lower Fractal
      if(low[i]<low[i+1] && low[i]<low[i+2] && low[i]<=low[i-1] && low[i]<=low[i-2])
         ExtLowerBuffer[i]=low[i];
      else ExtLowerBuffer[i]=EMPTY_VALUE;
     }
//--- OnCalculate done. Return new prev_calculated.
   return(rates_total);
  }

Fraktale

Abb. 1. So funktioniert der Indikator "Fraktale". Nummerierung der Dateien ab der Position des Indikators "Fractals.mq5".

Das bedeutet, dass, wenn wir im Expert Advisor Daten vom iFractals-Indikator erhalten, auf den Balken "rates_total-5" und "rates_total-4" (Nummerierung der Balken aus der Position des Indikators "Fractals.mq5") ein Fraktal erscheint, das garantiert nicht neu gerendert wird.


Und hier ist der Moment, in dem das Fraktal auf dem Balken "rates_total-5" gebildet wird - in dem Moment, in dem es einen neuen Balken auf der rechten Seite gibt, am 2. Januar, 03:00 (Nummerierung der Dateien ab der Position des Indikators "Fractals.mq5") :

Fraktale, 5 bar

Abb. 2. Der Moment, in dem das Fraktal auf dem Balken "rates_total-5" gebildet wird

Der zweite Faktor

Der fraktale Indikator verwendet EMPTY_VALUE anstelle von "0.0" als leeren Wert. Die Ausnahme ist die erste Initialisierung, wenn die Indikatorpuffer mit Null initialisiert werden (dies geschieht nicht durch den Indikator "Fractals.mq5", sondern durch MQL5 beim Erstellen eines Arrays und dessen Verknüpfung mit einem Indikatorpuffer).


 
novichok2018:

Aus Ihrer Empfehlung geht auch nicht klar hervor, wie man das macht.

Hier ist eine Funktion zum Finden eines Fraktals, nur für einen Expert Advisor, es hat bei mir funktioniert

https://www.mql5.com/ru/forum/160683/page968#comment_13214633

 
Vladimir Karputov:

Sind Sie sicher, dass Sie an der ZWEITEN Stange fangen sollten?

Hier sind die Tests:


Ja, ich danke Ihnen. Beim dritten Takt wird nicht neu gezeichnet. Nur ändert das nichts am Kern des Problems.

 
Igor Makanu:

Hier ist eine Funktion zum Finden eines Fraktals, nur für einen EA, es hat bei mir funktioniert

https://www.mql5.com/ru/forum/160683/page968#comment_13214633

Danke, es funktioniert.

Ich verstehe nur nicht, wie man das Erscheinen eines neuen Fraktals im Code wiedergeben kann. Denn barfrup_1 ist immer kleiner als barfrup_2, so dass der Sprung in der Nummerierung von barfrup_1 beim Auftreten eines neuen Fraktals nichts bringt, da es kleiner als barfrup_2 bleibt.

Noch eine Sache: Ich verstehe nicht, wie man die hohen Werte für barfrup_1 und barfrup_2 extrahiert.

 
novichok2018:

Noch eine Sache: Ich verstehe nicht, wie man hohe Werte für barfrup_1 und barfrup_2 extrahiert.

Werfen Sie einen Fraktal-Indikator auf den Chart und einen Test-EA mit dieser Funktion

und die gefundenen Werte durch Übergabe an meine FunktionMODE_UPPER und MODE_LOWER abwickeln

novichok2018:

Danke, es funktioniert.

Ich verstehe nur nicht, wie man das Auftreten eines neuen Fraktals im Code darstellen kann.

Sie müssen sich die Taktzeit merken; wenn ein neuer Takt erscheint, ändert sich die Nummerierung, während die Taktöffnungszeit immer gleich bleibt.

D.h., wenn Sie meinen Code öffnen, merken Sie sich die Zeit des Balkens, in dem das Fraktal entdeckt wurde, dann öffnen Sie ihn erneut - suchen Sie den Balken und vergleichen Sie die Zeit des Balkens mit der gespeicherten - die Zeit ist anders, das bedeutet ein neues Fraktal

Grund der Beschwerde: