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

 

Es gibt ein Problem mit dem Expert Advisor in der Testversion. Ich teste mit 1-Minuten-Daten. Ich berechne die Stochastik für den höheren TF selbst anhand der Minutendaten.

Der Verlauf der Protokolle wurde seit 2001 heruntergeladen. Legen Sie auf der Registerkarte "Charts" die maximale Anzahl der Balken in der Historie fest, die angezeigt werden sollen.

Der gesamte Verlauf auf dem Diagramm wird gescrollt.

Das Problem ist, dass, wie sich beim Debug-Druck herausstellte, egal ab welchem Datum ich den Tester starte, die maximale Anzahl der Balken

in der Variablen Bars beim ersten Takt des Tests (zu Beginn) ist immer 1001 oder 1002. Der Wert von Balken erhöht sich mit jedem weiteren Balken um 1.

Daher ist es nicht möglich, die höhere TF von Anfang an zu berechnen.

Es gibt eine Lösung. Wir sollten ein Handelsverbot einführen, bevor die Bars den gewünschten Wert erreichen.

Können wir dieses Problem auf andere Weise lösen? Erhöht sich dieser Startwert der Balken im Tester irgendwie?

 
Igor733:

Es gibt ein Problem mit dem Expert Advisor in der Testversion. Ich teste mit 1-Minuten-Daten. Ich berechne die Stochastik für den höheren TF selbst anhand der Minutendaten.

Der Verlauf der Protokolle wurde seit 2001 heruntergeladen. Legen Sie auf der Registerkarte "Charts" die maximale Anzahl der Balken in der Historie fest, die angezeigt werden sollen.

Der gesamte Verlauf auf dem Diagramm wird gescrollt.

Das Problem ist, dass, wie sich beim Debug-Druck herausstellte, egal ab welchem Datum ich den Tester starte, die maximale Anzahl der Balken

in der Variablen Bars beim ersten Takt des Tests (zu Beginn) ist immer 1001 oder 1002. Der Wert von Balken erhöht sich mit jedem weiteren Balken um 1.

Daher ist es unmöglich, die höheren TFs am Anfang zu zählen.

Es gibt eine Lösung. Wir sollten ein Handelsverbot einführen, bevor die Bars den gewünschten Wert erreichen.

Können wir dieses Problem auf andere Weise lösen? Erhöht sich dieser Startwert der Balken im Tester irgendwie?

Nein, das tut sie nicht. Verwenden Sie Ihre eigene Lösung.
 
Was könnte das Problem sein? Wenn ich einen EA schreibe, muss ich ihn viele Male testen, um Änderungen zu verfolgen. Nach einer zufälligen Anzahl von Tests akzeptiert der Strategietester die am Code vorgenommenen Änderungen nicht. Das geht manchmal bis zur Absurdität. Sie können einfach einen Teil des Codes löschen und die Eule wird im Tester nach dem zuvor geschriebenen Algorithmus funktionieren. Das Gleiche passiert beim Parsen von Berechnungen in CSV: Nach einer bestimmten Anzahl von Tests wird irgendein zufälliger Mist in CSV geparst.

P.S. Ich habe den Kompilierknopf gedrückt.
 

Ich muss unbedingt den Algorithmus zur Berechnung des geglätteten gleitenden Durchschnitts verstehen. Es gibt mehrere Gründe, warum die iMA-Funktion nicht geeignet ist.

So wie ich die Informationen von https://www.metatrader5.com/ru/terminal/help/indicators/trend_indicators/ma#smma verstanden habe.

Das erste Element wird als die Summe der Schlusskurse geteilt durch den Zeitraum berechnet.

Die folgenden werden nach der Formel SMMA (i) = (SMMA (i - 1) * (N - 1) + CLOSE (i)) / N berechnet .

Nehmen wir einen Zeitraum von 5 und die Schlusskurse von EUR/USD H1 für den Zeitraum vom 24.02.2017 19:00 bis 24.02.2017 23.00 (GMT+2), d.h. die letzten 5 Kerzen

Die Schlusskurse liegen bei 1,05681; 1,05702; 1,05639; 1,05612; 1,05592.

Entsprechend: 1. Element - 1,056452; 2. Element - 1,056852 3. Element - 1,05676 4. Element - 1,056632 5. Element - 1,056489

Auf dem SMMA 5-Chart beträgt der Schlusskurs jedoch 1,05706, d.h. die Differenz liegt bereits in der 3.

Was habe ich falsch gezählt?

Und wie muss ich richtig rechnen, um 1,05706 zu erhalten?

 
zsu1970:

Ich muss unbedingt den Algorithmus zur Berechnung des geglätteten gleitenden Durchschnitts verstehen. Es gibt mehrere Gründe, warum die iMA-Funktion nicht geeignet ist.

So wie ich die Informationen von https://www.metatrader5.com/ru/terminal/help/indicators/trend_indicators/ma#smma verstanden habe.

Das erste Element wird als die Summe der Schlusskurse geteilt durch den Zeitraum berechnet.

Die folgenden werden nach der Formel SMMA (i) = (SMMA (i - 1) * (N - 1) + CLOSE (i)) / N berechnet .

Nehmen wir den Zeitraum gleich 5 und die Schlusskurse von EUR/USD H1 für den Zeitraum vom 24.02.2017 19:00 bis 24.02.2017 23.00 (GMT+2), d.h. die letzten 5 Kerzen

Die Schlusskurse liegen bei 1,05681; 1,05702; 1,05639; 1,05612; 1,05592.

Entsprechend: 1. Element - 1,056452; 2. Element - 1,056852 3. Element - 1,05676 4. Element - 1,056632 5. Element - 1,056489

Und auf dem SMMA 5-Chart beträgt der Schlusskurs 1,05706, d.h. die Differenz liegt bereits in der 3.

Was habe ich falsch gezählt?

Und wie muss ich richtig rechnen, um 1,05706 zu erhalten?

Schauen Sie sich den Indikator selbst an, dann ergibt er mehr Sinn.
 
Aleksey Maryaskin:
Meine Herren Entwickler! Einen guten Tag an alle. Ich interessiere mich für die Frage der Erstellung einer Vorlage für einen Expert Advisor (Skript) bei dessen Erstellung. Kann es irgendwo bearbeitet werden und wie wird es gemacht?
Ein direkter Link hier wird wahrscheinlich nicht durchkommen... Sie können googeln "Ich werde den MQL4-Kurs in diesem Thread posten" (ohne Anführungszeichen) und nach "Vorlage" suchen (ich glaube, es steht auf der 2. Seite).
 
Vitaly Muzichenko:
Schauen Sie sich den Indikator selbst an, dann ergibt er mehr Sinn.
Ich habe es mir angesehen. Es ist dasselbe wie in dem von mir angegebenen Link.

double SMMA(int Zeitraum)
{

//Füllen des Arrays mit Schlusskursen
int k=Zeitraum;
for(int i=1; i<=Periode; i++)
{
H1_Close[i]=Close[k];
// Print("H1_Close [",i,"] ",H1_Close[i]," Close [",k,"] ",Close[k]);
k--;
}
//Berechnen Sie das erste Element als durchschnittlichen Schlusskurs
double Summ=0;
for (int i=1; i<=Periode;i++)
Summ=Summ+H1_Close[i]; //SUM1 = SUM(CLOSE, N)
double TmpSMMA=Summe/Zeitraum; //SMMA1 = SUM1/N
//Berechnen Sie das i-te Element als SMMA (i) = (SMMA (i - 1) * (N - 1) + CLOSE (i)) / N
for(int i=2;i<=Periode;i++)
TmpSMMA=(TmpSMMA*(Periode-1)+H1_Close[i])/Periode;
}
Das Ergebnis unterscheidet sich jedoch deutlich von den Indikatordaten im Terminal. WARUM?
 
zsu1970:

Ich muss unbedingt den Algorithmus zur Berechnung des geglätteten gleitenden Durchschnitts verstehen. Es gibt mehrere Gründe, warum die iMA-Funktion nicht geeignet ist.

So wie ich die Informationen von https://www.metatrader5.com/ru/terminal/help/indicators/trend_indicators/ma#smma verstanden habe.

Das erste Element wird als die Summe der Schlusskurse geteilt durch den Zeitraum berechnet.

Die folgenden werden nach der Formel SMMA (i) = (SMMA (i - 1) * (N - 1) + CLOSE (i)) / N berechnet .

Nehmen wir einen Zeitraum von 5 und die Schlusskurse von EUR/USD H1 für den Zeitraum vom 24.02.2017 19:00 bis 24.02.2017 23.00 (GMT+2), d.h. die letzten 5 Kerzen

Die Schlusskurse liegen bei 1,05681; 1,05702; 1,05639; 1,05612; 1,05592.

Entsprechend: 1. Element - 1,056452; 2. Element - 1,056852 3. Element - 1,05676 4. Element - 1,056632 5. Element - 1,056489

Auf dem SMMA 5-Chart beträgt der Schlusskurs jedoch 1,05706, d.h. die Differenz liegt bereits in der 3.

Was habe ich falsch gezählt?

Und wie muss ich richtig rechnen, um 1,05706 zu erhalten?

Es gibt also einen Berechnungsalgorithmus im inclusionnik.

 
Alexey Viktorov:
Es gibt einen Berechnungsalgorithmus im Inluder.

Ich scheine also alles wie in den Berechnungen zu machen, aber das Ergebnis kommt nicht heraus. Tag 4 Ich kann es nicht herausfinden.
Ich habe den Code der Funktion aus der Antwort von Vitaly Muzichenko geschrieben, aber ich kann nicht herausfinden, was der Fehler ist
 
zsu1970:
Ich scheine also alles wie in den Berechnungen zu machen, aber das Ergebnis kommt nicht heraus. Ich sitze nun schon den 4. Tag hier und kann es nicht herausfinden.
Ich habe den Code der Funktion in Vitaly Muzichenkos Antwort geschrieben, aber ich kann nicht herausfinden, was der Fehler ist
Geben Sie die Preise gleich ein oder holen Sie sie und fügen Sie sie dann in die Berechnung ein?