Hilfe bei der Codierung - Seite 407

 

Hallo Leute, ich brauche eure Hilfe bei einem Indikator, den ich erstellt habe. Im Grunde ist es ein Tester, der nur für die Optimierung der Einstellungen einer Strategie (und auch seine Leistungen testen) verwendet werden soll. Im Testmodus (Optimize turned to False), es funktioniert gut und gibt die Gewinnrate und Balance für die Standard-Parameter. Aber ich habe Probleme, die Optimierungsfunktion zum Laufen zu bringen. Das Ergebnis für die besten Einstellungen ist immer der niedrigste Wert (PeriodMin). Ich frage mich, ob es an der Art und Weise liegt, wie ich die in der Optimierungs-Doppelfunktion deklarierten Puffer verwende (siehe Zeilen 616 und 617 sowie Zeilen 746 und 747, die zum Freigeben der Puffer verwendet werden). Ich vermute, es ist nicht nur das, denn wenn ich diese Puffer nicht verwende (indem ich AllowMultipleOpenTrades auf False setze), gibt es immer noch keine kohärenten Ergebnisse. Wenn jemand einen Blick darauf werfen und helfen kann, wäre ich sehr dankbar. Vielen Dank!

Dateien:
 
airquest:
Ich bin mir nicht sicher, was Sie damit bezwecken wollen. Vielleicht dies?

Nein, leider nicht. Lassen Sie mich das mit einem Screenshot illustrieren. Am oberen rosa Pfeil können Sie deutlich sehen, dass der rote Balken des LOW viel größer ist als der blaue Balken des HIGH. Dennoch ist die entsprechende Ausgabe im Linear Bar Diff Indikator über Null!!! (siehe unterer rosa Pfeil). Wenn der rote Low-Balken größer ist als der blaue High-Balken, sollte die Differenz der beiden Balken negativ sein, nicht positiv. Die grünen Pfeile zeigen ein weiteres Beispiel für das gleiche Problem.

Mit freundlichen Grüßen

Dateien:
example.png  25 kb
 
mrcodix:
Nein, ich fürchte nicht. Lassen Sie mich das mit einem Screenshot illustrieren. Am oberen rosa Pfeil kann man deutlich sehen, dass der rote Balken des LOW viel größer ist als der blaue Balken des HIGH. Dennoch ist die entsprechende Ausgabe im Linear Bar Diff Indikator über Null!!! (siehe unterer rosa Pfeil). Wenn der rote Low-Balken größer ist als der blaue High-Balken, sollte die Differenz beider Balken negativ sein, nicht positiv. Die grünen Pfeile zeigen ein weiteres Beispiel für das gleiche Problem. Mit freundlichen Grüßen

Also vielleicht das? Sie müssen sehen, dass sich die Puffer 3 und 4 nicht auf High VS Open und Low VS Open beziehen, sondern auf Close VS Open.

 
mrcodix:
Nein, leider nicht. Lassen Sie mich das mit einem Screenshot illustrieren. Am oberen rosa Pfeil können Sie deutlich sehen, dass der rote Balken des LOW viel größer ist als der blaue Balken des HIGH. Dennoch ist die entsprechende Ausgabe im Linear Bar Diff Indikator über Null!!! (siehe unterer rosa Pfeil). Wenn der rote Low-Balken größer ist als der blaue High-Balken, sollte die Differenz beider Balken negativ sein, nicht positiv. Die grünen Pfeile zeigen ein weiteres Beispiel für das gleiche Problem. Mit freundlichen Grüßen

Oder dies ist mit der Wahl der Verwendung von High/Low VS Open oder Close VS Open.

 
airquest:
Hallo Leute, ich brauche eure Hilfe bei einem Indikator, den ich erstellt habe. Im Grunde handelt es sich um einen Tester, der nur zur Optimierung der Einstellungen einer Strategie (und auch zum Testen ihrer Leistungen) verwendet werden soll. Im Testmodus (Optimize turned to False), es funktioniert gut und gibt die Gewinnrate und Balance für die Standard-Parameter. Aber ich habe Probleme, die Optimierungsfunktion zum Laufen zu bringen. Das Ergebnis für die besten Einstellungen ist immer der niedrigere Wert (PeriodMin). Ich frage mich, ob es an der Art und Weise liegt, wie ich die in der Optimierungs-Doppelfunktion deklarierten Puffer verwende (siehe Zeilen 616 und 617 sowie Zeilen 746 und 747, die zum Freigeben der Puffer verwendet werden). Ich vermute, es ist nicht nur das, denn wenn ich diese Puffer nicht verwende (indem ich AllowMultipleOpenTrades auf False setze), gibt es immer noch keine kohärenten Ergebnisse. Wenn jemand einen Blick darauf werfen und helfen kann, wäre ich sehr dankbar. Vielen Dank!

airquest

Ihre Arrays recTP[] und recSL[] in Zeile 602 haben keine Größenänderung (sie haben die Größe 0, so wie sie am Anfang der Schleife deklariert sind). Versuchen Sie, die Größe vor der for()-Schleife zu ändern.

 
airquest:
Oder ist dies mit der Wahl der Verwendung von High/Low VS Open oder Close VS Open.

Nein, das ist, was ich meinte.

int start()

{

int counted_bars=IndicatorCounted();

int i;

//int UpDays, DownDays, NeutralDays;

double BarH, BarL, BarC;

//----

for(i=0; i<Bars; i++)

{

BarH = Hoch - Offen;

BarL = Offen - Tief;

BarC = Close - Open;

//if(BarC>0) UpDays +=1;

//else if(BarC<0) DownDays +=1;

//else if(BarC==0) NeutralDays +=1;

ExtMapBuffer1 = BarH;

ExtMapBuffer2 = BarL;

ExtMapBuffer5 = BarH - BarL;

}

//----

return(0);

}

Ich habe es jetzt irgendwie selbst herausgefunden, aber trotzdem danke für die Mühe.

Kann mir jemand sagen, warum dieser Indikator: Candles Ratio " Metatrader Files nicht die Ausgabe für die letzten paar Candlesticks anzeigt? Auf dem gezeigten Bild scheint er das nicht zu tun.

 
mladen:
airquest Ihre Arrays recTP[] und recSL[] in Zeile 602 haben keine Größenänderung (sie haben die Größe 0, so wie sie am Anfang der Schleife deklariert sind), versuchen Sie, die Größe vor der for()-Schleife zu ändern

Danke Mladen, ich habe es getan, aber immer noch die Optimierung nicht geben richtige Ergebnisse. Wenn ich Optimize auf True stelle, gibt es den niedrigsten Wert als die beste Einstellung (Band Periode = 5), während auf False und Standard BandsPeriod auf 40, zum Beispiel, es zeigt eine bessere Gewinnrate als mit 5. im Grunde ist die Idee der Optimierung zu finden, welche Einstellungen die beste Gewinnrate geben. Ich habe wieder lesen den Code hundert Mal und kann nicht finden, was falsch ist. wenn Sie eine Idee haben, sonst vielleicht ist es eine verlorene Sache lol.

Dies ist mit dem ArrayResize hinzugefügt. Auch einige Fehler behoben, aber immer noch nicht die gleichen Ergebnisse wie ohne Optimierung:

Dateien:
 
airquest:
Danke Mladen, ich habe es getan, aber die Optimierung liefert immer noch nicht die richtigen Ergebnisse. Wenn ich Optimize auf True stelle, gibt es den niedrigsten Wert als die beste Einstellung (Band Periode = 5), während auf False und Standard BandsPeriod auf 40, zum Beispiel, zeigt es eine bessere Gewinnrate als mit 5. im Grunde ist die Idee der Optimierung zu finden, welche Einstellungen geben die beste Gewinnrate. Ich habe den Code hundertmal durchgelesen und kann nicht herausfinden, was falsch ist. wenn Sie eine Idee haben, sonst ist es vielleicht eine verlorene Sache lol. Dies ist mit dem ArrayResize hinzugefügt. Auch einige Fehler behoben, aber immer noch nicht die gleichen Ergebnisse wie ohne Optimierung:

Ich bin mir nicht sicher, warum, aber wenn ich die Ergebnisse durch Schreiben einer CSV-Datei überprüfe, werden die Gesamtzahl der Trades, Gewinne und der Saldo mit dem Faktor 10 multipliziert: http: //clip2net.com/s/38YHODl...

 
airquest:
Ich bin mir nicht sicher, warum, aber wenn ich die Ergebnisse durch Schreiben einer CSV-Datei überprüfe, werden die Gesamthandelsumsätze, Gewinne und der Saldo mit dem Faktor 10 multipliziert: Microsoft Excel - BB+CCI_FX-EURUSD-H1-SA-1.csv...

airquest

Soweit ich sehe, sind die Gesamthandelsumsätze und -gewinne in Ordnung (sonst müssten sie mit 0 enden).

 
mladen:
airquest Soweit ich sehe, sind die Gesamtzahl der Trades und Gewinne in Ordnung (sonst müssten sie mit 0 enden)

Nun, trotzdem... Hier sind einige Tests :

- Standardeinstellungen (keine Optimierung, WriteCSV auf True) : http://clip2net.com/s/38YSV53

- Optimize auf True gesetzt, PeriodMin auf 20 und PeriodMax auf 20 : http://clip2net.com/s/38YT2hN

Der erste Test ergibt kohärente Werte (CSV-Datei und Bildschirmresultate stimmen überein). Das ist normal, denn beide stammen von denselben Variablen. Aber in der zweiten Variante sind die opti-Ergebnisse im Vergleich zu den Bildschirm-Ergebnissen fast um 10 multipliziert. Trotzdem sollten sie am Ende zu den gleichen Ergebnissen führen...

Wie auch immer, keine Eile, vielleicht werde ich mit der Zeit herausfinden, was falsch ist. Vielen Dank für deine Hilfe, Mladen.