Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Es gibt tatsächlich mehr Fehler im Code. Zum Beispiel ist es gut gezeigt, dass die Verwendung von CSymbolInfo nur um des SB-Stils willen böse ist.
Das Schließen von Positionen über eine zuvor gesammelte Liste von Tickets ist böse. Dies ist ein sehr häufiger Fehler.
Ich denke, das sagt eine Menge aus:
Es ist wichtig zu verstehen, dass dieser EA für Schulungszwecke gedacht ist.
Zur Verarbeitung von Server-Return-Codes. Persönlich verarbeite ich sie immer. Aber hier - im Tester (ich hoffe, Sie verstehen, dass ein Training EA für den Tester und für weitere Verbesserungen auf eigene Faust gemacht wird) - ist es wahrscheinlich nicht wert, alle notwendigen Return-Codes zu verarbeiten. Wie auch immer, eine eigene Handelsumgebung zu haben, ist sowohl für den realen Handel, als auch und erst recht für einen Tester durchaus gerechtfertigt.
Sie können sehen, was da ist:
Zuerst geben Sie die Daten über die bestehenden Positionen ein:
Dann, nach Überprüfung der Signale, die Eröffnung (hier wird die Kaufposition eröffnet):
Wenn die Anzahl der Verkäufe größer als Null ist - schließen. Der Expert Advisor ist schwingend - es gibt immer nur eine Position. Es gibt also keine Kaufpositionen, wenn es Verkaufspositionen gibt - es ist unnötig, deren Anzahl hier zu überprüfen und die Handelsumgebung in den internen Arrays des Expert Advisors zu aktualisieren.
Dann wird die Anzahl der Kaufpositionen überprüft. Deren Anzahl kann nur nach der Eröffnung größer als Null sein. Aber nach dem Schließen von Sell ist die Anzahl der Buy-Positionen notwendigerweise gleich Null - ein Swing EA. Und es ist nicht nötig, eine Schleife zu durchlaufen, um nach etwas zu suchen, das bereits bekannt ist.
Als nächstes folgen die minimalen Korrektheitsprüfungen und die Eröffnung einer Buy-Position. Unmittelbar nach der Rückgabe von true werden die internen Arrays der Handelsumgebung des EA aktualisiert.
Alles ist lakonisch und ohne Übertreibungen. Korrigieren Sie mich, wenn ich hier etwas nicht gesehen habe.
Der Fehler liegt in der Eingabe und dem Aufruf der Aufzählung, nicht im Mindestabstand. Er wird aber auch falsch berechnet, denn
ich es nicht sehe. Zeigen Sie es mir - es ist interessant.
Ich denke, das hier spricht Bände:
Es lohnt sich, sich klarzumachen, dass dieser EA für Schulungszwecke gedacht ist.
Über die Verarbeitung von Server-Return-Codes. Persönlich verarbeite ich sie immer. Aber hier - im Tester (ich hoffe, Sie verstehen, dass ein Training Expert Advisor für den Tester und für seine weiteren Modifikationen unabhängig gemacht wird) - ist es wahrscheinlich nicht notwendig, alle notwendigen Return-Codes zu verarbeiten. Außerdem ist eine eigene Handelsumgebung sowohl für den realen Handel als auch erst recht für einen Tester durchaus gerechtfertigt.
Sie haben nicht genau gelesen. Ich wollte keine Return-Codes. CloseSell auf Tickets ist ein Übel an sich. Was hat ein Tester damit zu tun, wenn der Code zumindest auf einer Demo korrekt funktionieren sollte und keine offensichtlichen potentiellen Fehler aufweist?
Nach CloseSell sollte es RefreshRates geben. Es fehlt, also wird es auch im Tester zu Fehlern kommen, wenn Sie den Verzögerungsmodus aktivieren. Die Verwendung einer Standardbibel um des SB-Stils willen ist böse. Und der Code zeigt es gut.
Nachdem ich nur ein paar Änderungen in SymbolInfo.mqh vorgenommen hatte, konnte ich es kompilieren und in MT4 verwenden. Aber wer bei klarem Verstand denkt schon daran, wenn er etwas in MQL4 schreibt! Warum kommt es vielen Leuten in den Sinn, wenn sie in MQL5 programmieren?! Nicht nur, dass es eine Menge potenzieller Fehler abdeckt, es braucht Zeit, um es zu lernen, sondern es sieht auch unbeholfen aus.
Sie haben ihn nicht sorgfältig gelesen. Ich wollte keinen Rückgabecode. CloseSell auf Tickets ist an sich schon böse. Was muss ein Tester tun, wenn der Code zumindest auf einer Demo korrekt funktioniert und keine offensichtlichen potenziellen Fehler aufweist?
Nach CloseSell sollte es RefreshRates geben. Das ist nicht der Fall, also wird es auch im Tester zu Fehlern kommen, wenn man den Verzögerungsmodus aktiviert. Die Verwendung einer Standardbibel um des SB-Stils willen ist böse. Und der Code zeigt es gut.
Nach CloseSell() gibt es eine Buy-Eröffnung mit einem Nullkurs:
Warum zwei Mal RefreshRates() ? Haben Sie sich den Code der Eröffnung in SB in CTrade angesehen? Das habe ich:
Nach CloseSell() wird der Buy mit einem Nullkurs eröffnet:
Warum RefreshRates() zweimal?
Weil korrekte Funktionen aufgerufen werden.
Haben Sie sich den Code der Eröffnung in CTrade angeschaut?
Include\Trade\*.mqh Ich bin immer wachsam, denn man sollte den Feind vom Sehen her kennen.
Dann werden die korrekten Funktionen aufgerufen.
Include\Trade\*.mqh Ich beobachte immer, denn man sollte den Feind vom Sehen her kennen.
Feind :))))
Ja, jetzt habe ich es gesehen - in den Correct-Funktionen wird der Preis aus den m_tick-Variablen von SB gelesen, die bei der Aktualisierung gefüllt werden, nicht direkt über SymbolInfoDouble() - das wäre kein möglicher Hinterhalt, von dem du sprichst. Außerdem gibt es nicht viel Code vor den korrekten Funktionen, und die Preise werden direkt nach dem Eintreffen des Ticks aktualisiert - ganz am Anfang von OnTick():
Feindbild :)))))
Ja, jetzt habe ich es gesehen - die korrekten Funktionen lesen den Preis aus m_tick-Variablen der SB, die bei der Aktualisierung gefüllt werden, aber nicht direkt durch SymbolInfoDouble() - das wäre kein mögliches Problem, von dem Sie sprechen. Außerdem gibt es nicht viel Code vor den korrekten Funktionen, und die Preise werden sofort beim Eintreffen des Ticks aktualisiert - ganz am Anfang von OnTick():
Forum über Trading, automatisierte Handelssysteme und das Testen von Handelsstrategien.
Expert Advisors: Diff_TF_MA_EA
fxsaber, 2018.02.01 22:10
Nachdem ich nur wenige Änderungen in SymbolInfo.mqh vorgenommen habe, konnte ich es kompilieren und in MT4 verwenden. Aber wer bei klarem Verstand denkt schon daran, wenn er etwas in MQL4 schreibt! Warum kommt es vielen Leuten in den Sinn, wenn sie in MQL5 programmieren?! Nicht nur, dass es eine Menge potenzieller Fehler abdeckt, es braucht Zeit, um es zu lernen, sondern es sieht auch unbeholfen aus.
Ich werde einen Stein in den MQL4-Garten werfen. Bid/Ask mit erzwungenen RefreshRates ist böse. Aber es gibt eine wunderbare Makro-Konstruktion, die ein unmissverständliches und prägnantes Ergebnis liefert.
Ich habe darauf gewartet, dass Sie Ihr buckliges Pferd reiten :)))).
Es reicht völlig aus, SymbolInfoDouble() in diesen richtigen Funktionen zu verwenden, um die notwendigen Preise zu erhalten. Genau das mache ich aber in meinen ähnlichen Funktionen. Hier hat sich der Programmierer vergeblich auf die vom Symbol-Objekt erhaltenen Daten verlassen - sie werden alt ausgegeben - und erst beim Aktualisieren in m_tick geschrieben.
Ich habe darauf gewartet, dass du dein buckliges Pferd sattelst :))))))
Es reicht völlig aus, in diesen Funktionen SymbolInfoDouble() zu verwenden, um die erforderlichen Preise zu erhalten. Das mache ich aber in meinen ähnlichen Funktionen auch so. Hier hat sich der Programmierer vergeblich auf die vom Symbol-Objekt erhaltenen Daten verlassen - sie werden veraltet ausgegeben - und erst beim Aktualisieren in m_tick geschrieben.
Hier stellt sich die logische Frage, wer ihn dazu gebracht hat, die einfachsten Daten in OOP zu erhalten? In MQL4 hat er diese Daten immer ohne Probleme erhalten, aber was hat sich in seinem Kopf geändert?
Buckeliges Pferd
Forum über Trading, automatisierte Handelssysteme und das Testen von Handelsstrategien.
MT4-Tester VS MT5-Tester
fxsaber, 2017.05.08 10:04 AM
Dank der subj den Schuldigen gefunden, es passiert immer, wenn es eine Gelegenheit, zu vergleichen ist.
Expert Advisor zeigt den Fehler
MT4
MT5