Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 1266
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
Ich wünsche Ihnen allen eine gute Zeit!
Ich habe eine Frage zur Funktion ResultDeal() in der Klasse CTrade.
Das Problem ist, dass diese Funktion im Strategietester das Handelsticket ohne Probleme zurückgibt, aber wenn man den EA auf den Chart wirft, gibt er immer "Null" zurück, obwohl die Funktion ResultRetcode() immer "TRADE_RETCODE_DONE" zurückgibt.
Beispiel-Code:
Ausführungsprotokoll im Tester:
Ausführungsprotokoll auf dem Chart:
Was mache ich falsch? Wie erhalte ich ein Handelsticket in Echtzeit?
Und die zweite Frage (von geringerer Bedeutung): Warum gibt die Funktion PositionsTotal() unmittelbar nach der Ausführung eines Handels "Null" zurück? Und sie zeigt mit dem nächsten Tick zuverlässige Daten an. Ist es möglich, diese Informationen sofort zu erhalten?
Ich wünsche Ihnen allen eine gute Zeit!
Ich habe eine Frage zur Funktion ResultDeal() in der Klasse CTrade.
Das Problem ist, dass diese Funktion im Strategietester das Handelsticket ohne Probleme zurückgibt, aber wenn man den EA auf den Chart wirft, gibt er immer "Null" zurück, obwohl die Funktion ResultRetcode() immer "TRADE_RETCODE_DONE" zurückgibt.
Beispiel-Code:
Ausführungsprotokoll im Tester:
Ausführungsprotokoll auf dem Chart:
Was mache ich falsch? Wie erhalte ich ein Handelsticket in Echtzeit?
Und die zweite Frage (von geringerer Bedeutung): Warum gibt die Funktion PositionsTotal() unmittelbar nach der Ausführung eines Geschäfts "Null" zurück? Und sie zeigt mit dem nächsten Tick zuverlässige Daten an. Ist es möglich, diese Informationen sofort zu erhalten?
Hmm... Plötzlich werden die Daten, die ich in Echtzeit benötige, von der Funktion ResultOrder() derselbenCTrade-Klasse zurückgegeben, obwohl ich keine Pending Orders verwendet habe...
Die Frage ist dieselbe: Was mache ich falsch?
Es gibt ein Makro wie dieses.
Ich verwende es so.
Warning"Warnig сработал. ");
Frage: Was muss in der Makrodefinition korrigiert werden, um es so verwenden zu können?
Warning("Warnig сработал. ");
d.h. mit einer Klammer zwischen Warnung und "Warnig gearbeitet". "Ich habe versucht, eine Klammer in der Makrodefinition zu verwenden
aber der Compiler erlaubt mir nicht, eine Klammer zu verwenden.
Hmm... Plötzlich liefert die Funktion ResultOrder() derselbenCTrade-Klasse die Daten, die ich brauche, in Echtzeit, obwohl ich keine Pending Orders verwendet habe...
Die Frage ist dieselbe: Was mache ich falsch?
Verstehen Sie einfach das Auftragssystem von MT5, Auftrag - Handel - Position.
ResultOrder ist der Eröffnungsauftrag. Die Position wird mit POSITION_IDENTIFIER gleich dem Ticket dieser Bestellung sein.
Alle Geschäfte können in der Historie anhand der Positionsbezeichnung gefunden werden. Nicht zu verwechseln mit dem Ticket der Position, es kann sich ändern, und die Kennung ist konstant.
Das heißt, der Tester unterscheidet sich dadurch, dass es keine Verzögerung bei der Ausführung des Auftrags gibt und das Geschäft sofort zustande kommt. Im wirklichen Leben vergeht die Zeit, und zum Zeitpunkt der erfolgreichen Erstellung einer Bestellung gibt es noch kein Geschäft, es muss in den OnTrade-Ereignissen erfasst werdenEs gibt ein Makro wie dieses.
Ich verwende es so.
Frage: Was muss in der Makrodefinition korrigiert werden, um es so verwenden zu können?
d.h. mit einer Klammer zwischen Warnung und "Warnig gearbeitet". "Ich habe versucht, eine Klammer in der Makrodefinition zu verwenden
aber der Compiler erlaubt mir nicht, eine Klammer zu verwenden.
Sie wollen ein parametrisches Formular verwenden, haben aber ein nicht-parametrisches Formular angegeben. das muss so aussehen
Ich habe es nicht gut erklärt. Fangen wir von vorne an. Jetzt verwende ich das Makro wie folgt:
Warning,"Warnig сработал. i=",i);
Hier ist das Makro selbst:
Im Makroaufruf zwischen "Warning," und ");" Eine beliebige Anzahl von Parametern beliebigen Typs. All dies wird durch wiederholtes Laden der FunktionSchreiben erreicht.
Frage. Was muss ich in dem Makro korrigieren, um es so aufrufen zu können?
Warning("Warnig сработал. i=",i);
Ich habe es nicht gut erklärt. Fangen wir von vorne an. Jetzt verwende ich das Makro wie folgt:
Hier ist das Makro selbst:
Im Makroaufruf zwischen "Warning," und ");" Eine beliebige Anzahl von Parametern beliebigen Typs. All dies wird durch wiederholtes Laden der FunktionSchreiben erreicht.
Frage. Was sollte in dem Makro korrigiert werden, damit es wie folgt aufgerufen werden kann?
Antwort: laden Sie das Makro auch mehrmals neu)
Aber es ist besser, den Operator + für Strings zu verwenden und alles in Strings umzuwandeln, dann braucht man keine Version der Funktion (und des Makros) mit vielen Parametern
Verstehen Sie einfach das Auftragssystem von MT5, Auftrag - Handel - Position.
ResultOrder ist der Eröffnungsauftrag. Die Position wird mit POSITION_IDENTIFIER gleich dem Ticket dieser Bestellung sein.
Alle Geschäfte können in der Historie anhand der Positionsbezeichnung gefunden werden. Nicht zu verwechseln mit dem Ticket der Position, es kann sich ändern, und die Kennung ist konstant.
s.s. Der Tester unterscheidet sich dadurch, dass es keine Verzögerung bei der Ausführung der Bestellung gibt und sofort ein Geschäft zustande kommt. Im realen Handel vergeht die Zeit, und zum Zeitpunkt der erfolgreichen Ordererstellung gibt es noch keinen Abschluss, er muss in den OnTrade-Ereignissen erfasst werden.Hallo! Wie kann ich von einem EA aus auf Indikatoreigenschaften zugreifen? Ich möchte zum Beispiel die Linienfarbe eines EAs ändern, wenn ich den Indikator-Handle kenne. Ich habe danach gesucht, konnte es aber nicht finden, vielleicht suche ich zu intensiv?
Ein Indikator hierfür muss einen Parameter für die Eingangsfarbe haben. Das heißt, es muss ein benutzerdefinierter Indikator sein.