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

 
Vitaly Muzichenko #:

Warum werden die Daten erst aufgezeichnet und dann verschoben?

  Buffer1[0]=b;
  Buffer2[0]=a;
  for(int j=H; j>0; j--) {
    Buffer1[j]=Buffer1[j-1];
    Buffer2[j]=Buffer2[j-1];
  }

Dies entspricht nicht dem tatsächlichen Tickchart!

Das ist der richtige Weg.

  for(int j=H; j>0; j--) {
    Buffer1[j]=Buffer1[j-1];
    Buffer2[j]=Buffer2[j-1];
  }
  Buffer1[0]=b;
  Buffer2[0]=a;
 
Vitaly Muzichenko #:

Auch hier gibt es eine Schleife innerhalb von ArrayCopy() und wahrscheinlich mehr als eine. Der Code wird also durch diese Ersetzung kaum einfacher und schneller werden.

Ich habe es oben schon mehrfach gesagt: Ohne Schleife geht es nicht!

 
Mihail Matkovskij #:

Warum werden die Daten erst aufgezeichnet und dann verschoben?

Dies entspricht nicht dem tatsächlichen Tickchart!

Das ist der richtige Weg.

kasher natürlich, aber dasselbe).

Ja, und ein kurzer Zyklus von bis zu 1000 Iterationen mit ein paar Zuweisungsvergleichen ist einfach, sollte also nicht entmutigend sein.

 
EVGENII SHELIPOV #:

Ein Fraktal wird gebildet, wenn es kein neues Extremum gibt und nach drei Balken die 0, 1, 2.

Es hat sich nichts geändert.

Oder es ist wieder etwas falsch

Führen Sie den Fraktal-Indikator auf D1 aus und sehen Sie, ob das Fraktal vorhanden ist oder nicht.
 
Valeriy Yastremskiy #:

kasher natürlich, aber dasselbe).

Nicht dasselbe. Wenn wir zuerst einen Tick schreiben und dann das Array verschieben, wird er um 1 Takt nach links verschoben, zusammen mit den restlichen Ticks, die wir verschoben haben. Wenn wir jedoch das Array zuerst verschieben und dann den Wert des Häkchens an den Nullindex schreiben, schaffen wir erst Platz für das Häkchen und schreiben es dann dorthin. Und das Ergebnis ist, dass sie nirgendwohin verlagert wird.

 
Mihail Matkovskij #:

Ich habe es schon oft gesagt: Ohne Fahrrad geht es nicht!

Ich glaube, ich habe es richtig verstanden.


Beim Versuch, die Füllungen auszutauschen, erhalte ich eine Fehlermeldung


 
Vitaly Muzichenko #:

Beim Versuch, die Füllung auszutauschen, erhalte ich eine Fehlermeldung


Seltsam, warum ist das so...? Es sieht so aus, als sollte alles funktionieren, nur dass die Häkchen an ihrem Platz bleiben und nicht nach links verschoben werden.

P.S. Das zusätzliche Feld hätte noch hinzugefügt werden müssen (wie ich zu Beginn sagte ). Andernfalls verschieben sich beim Erscheinen eines neuen Balkens alle Zecken automatisch nach links, da es sich um Indikatorpuffer handelt! Oder wir verfolgen den Moment, in dem ein neuer Balken erscheint und verschieben die Puffer, aber schon nach rechts.
 
Was ist, wenn Sie das Array nicht verschieben, sondern es als zirkulären Puffer verwenden und sich die aktuelle Position des ersten Elements merken?
 
Mihail Matkovskij #:

Nicht dasselbe. Wenn wir zuerst einen Tick schreiben und dann das Array verschieben, wird er um 1 Takt nach links verschoben, zusammen mit den restlichen Ticks, die wir verschoben haben. Wenn wir jedoch das Array zuerst verschieben und dann den Wert des Häkchens an den Nullindex schreiben, schaffen wir erst Platz für das Häkchen und schreiben es dann dorthin. Und das Ergebnis ist, dass es sich nirgendwo hin verlagert hat.

Ja, in meinem Fall sollten wir mit dem ersten beginnen, nicht mit dem nullten.) Guter Punkt.

SZY, obwohl ja. zuerst müssen Sie zu verschieben und dann zuweisen Null. egal, welche Art und Weise.

SZZY Durch das Überschreiben des Wertes von Null vor der Verschiebung geht der Wert des Nullindexes verloren.

 
JRandomTrader Puffer verwenden und sich die aktuelle Position des ersten Elements merken?

Was ist Ringpuffer in µl

Grund der Beschwerde: