Was in aller Welt geht hier vor? - Seite 3

 
Сергей Таболин:

Renat, ich danke dir. Aber erklären Sie mir eine dunkle, was ist der Unterschied zwischen 2*2+2*3 in Optimierer und Single Pass? Geben Sie mir wenigstens einen Hinweis darauf, wo genau es eine Diskrepanz geben könnte?

Ich gebe Ihnen einen Tipp.

In Ihrer Vorstellung gibt es nur 2*2, während es in Wirklichkeit ein riesiges Marktumfeld und eine große Menge Ihres Codes gibt. Grob gesagt, gibt es mindestens drei Größenordnungen mehr Variablen und Bedingungen.

Solange Sie im Sparmodus herumlaufen, werden Sie keine Gründe finden. Genau wie bei dem Spiel des "einfachen Programmierers". Wenn Sie mit dem Programmieren begonnen haben, sollten Sie lernen, Fehler zu beheben.

Ich rate Ihnen zum dritten Mal: Drucken Sie es aus und sehen Sie mit eigenen Augen, wo die Unstimmigkeiten bei den Transaktionen ihren Anfang genommen haben.

 
Renat Fatkhullin:

Ich gebe Ihnen einen Tipp.

Es ist nur 2*2 in Ihrer Vorstellung, während es in Wirklichkeit ein riesiges Marktumfeld und eine große Menge Ihres Codes gibt. Grob gesagt, gibt es mindestens drei Größenordnungen mehr Variablen und Bedingungen.

Solange Sie im Sparmodus unterwegs sind, werden Sie keine Gründe finden. Genau wie bei dem Spiel des "einfachen Programmierers". Wenn Sie mit dem Programmieren begonnen haben, sollten Sie lernen, wie man Fehler beseitigt.

Ich rate Ihnen zum dritten Mal: Drucken Sie es aus und sehen Sie mit eigenen Augen, wo die Unstimmigkeiten bei den Transaktionen ihren Anfang genommen haben.

In Ordnung, ich werde es ausdrucken. Ich werde es mir ansehen. Aber es ist unwahrscheinlich, dass ich den Grund für diese Diskrepanzen verstehen werde.

Zumal ich in meiner eigenen Klasse das Öffnen, Halten und Schließen von Positionen vorgeschrieben habe. Bei anderen EAs habe ich lange Zeit keine Dissonanz zwischen Optimierung und Single Pass festgestellt (ich habe dieses Thema bereits in meinem früheren Artikel erörtert).

Deshalb habe ich diese Frage erneut gestellt.

Ich selbst verstehe es so, dass die Arbeit mit Positionen fein abgestimmt ist und kein Eingreifen erfordert. Der Fehler liegt also woanders. Alle anderen Stellen sind Code aus Skripten zur Vorbereitung, Erstellung, Training und Überprüfung des Netzes. Alles ist auch debuggt.

Damit bleibt die Möglichkeit, eine nicht initialisierte Variable zu verwenden. Ich habe sie alle überprüft. Nun, vielleicht habe ich etwas übersehen. In diesem Fall erwarte ich eine Warnung des Compilers.

Eine andere Möglichkeit ist, dass der Code beim Kompilieren so aufgebaut wird, dass die Variable später initialisiert wird, als sie aufgerufen wird.

Wie Sie verstehen, kann ich nur raten. Ich habe keine wirkliche Möglichkeit, diesen Fehler zu erkennen.

 
Сергей Таболин:

OK, ich werde es entpacken. Ich werde es mir ansehen. Aber es ist unwahrscheinlich, dass ich den Grund für diese Diskrepanzen verstehen kann.

Insbesondere, da das Öffnen, Halten und Schließen von Positionen in meiner eigenen Klasse implementiert wurde. Bei anderen EAs habe ich lange Zeit keine Dissonanz zwischen Optimierung und Single Pass festgestellt (ich habe dieses Thema bereits in meinem früheren Artikel erörtert).

Deshalb habe ich diese Frage erneut gestellt.

Ich selbst verstehe es so, dass die Arbeit mit Positionen fein abgestimmt ist und kein Eingreifen erfordert. Der Fehler liegt also woanders. Alle anderen Stellen sind Code aus Skripten zur Vorbereitung, Erstellung, Training und Überprüfung des Netzes. Alles ist auch debuggt.

Damit bleibt die Möglichkeit, eine nicht initialisierte Variable zu verwenden. Ich habe jeden einzelnen überprüft. Nun, vielleicht habe ich etwas übersehen. In diesem Fall erwarte ich eine Warnung des Compilers.

Oder aber der Code ist so kompiliert, dass die Variable erst später initialisiert wird, als sie aufgerufen wird.

Wie Sie verstehen, kann ich nur raten. Ich habe keine wirkliche Möglichkeit, diesen Fehler zu erkennen.

Stellen Sie zunächst sicher, dass Sie die Funktionen GetTickCount64(), GetTickCount() oder GetMicrosecondCount() nicht in Ihrer Handelslogik verwenden. Sie können dazu führen, dass die Ergebnisse des Testers und des Optimierers nicht übereinstimmen.

 
Geess:

Stellen Sie zunächst sicher, dass Sie die Funktionen GetTickCount64(), GetTickCount() oder GetMicrosecondCount() nicht in Ihrer Handelslogik verwenden. Sie können dazu führen, dass die Ergebnisse des Testers und des Optimierers nicht übereinstimmen.

Ich weiß es nicht.

 
Сергей Таболин:
...

Meiner Meinung nach ist die Arbeit an der Position fein abgestimmt und erfordert kein Eingreifen. Der Fehler liegt also woanders. Alle anderen Stellen sind jedoch Code aus den Skripten für die Vorbereitung, Erstellung, das Training und die Überprüfung des Netzes. Es ist auch alles fein abgestimmt.

...

Ist das nicht der Punkt, an dem alles schief gelaufen ist?

 

"Fast alle Daten werden in einer Schleife initialisiert".

Leute, ihr könnt nicht in einer Schleife initialisieren. Sie müssen in der Schleife lesen.

 
Im Allgemeinen sollte ein Stack Overflow-Fehler auftreten.
 
)
 
Artyom Trishkin:

Liegt hier nicht das Problem?

Inwiefern? Das Netz wird im EA nicht im laufenden Betrieb trainiert. Zumindest noch nicht )).

Es ist richtig trainiert oder nicht, es ist übertrainiert oder untertrainiert, aber das Signal ist das gleiche.

Wenn das Netzwerk bei der Optimierung das Signal "Kaufen" bei der Eröffnung des Balkens gibt, sollte es das gleiche Signal geben, wenn es einen einzelnen Test macht. Und wenn sie nicht das gleiche Signal gibt, ist sie weder da noch dort.

Daraus können also "unnötige" Positionen entstehen (vorausgesetzt die Preisdaten sind gleich, hoffe ich)?

 
Сергей Таболин:

Inwiefern? Das Netz wird im EA nicht im laufenden Betrieb trainiert. Zumindest noch nicht).

Es ist richtig trainiert oder nicht, es ist übertrainiert oder untertrainiert, aber das Signal ist das gleiche.

Wenn das Netzwerk bei der Optimierung das Signal "Kaufen" bei der Eröffnung des Balkens gibt, sollte es das gleiche Signal geben, wenn es einen einzelnen Test macht. Und wenn das nicht der Fall ist, gibt es das gleiche Signal auch nicht.

Woher können also "zusätzliche" Positionen kommen (vorausgesetzt, die Preisdaten sind, wie ich hoffe, dieselben)?

Versuchen Sie, die aktuelle Logik zu deaktivieren und sie durch einen normalen Assistenten zu ersetzen. Sie sehen sofort, wo die Katze einen Fehler gemacht hat, in der Logik oder in der Ausführung.