Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 759
![MQL5 - Sprache von Handelsstrategien, eingebaut ins Kundenterminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Hallo! Könnten Sie mir bitte sagen, warum ich manchmal einen ifle-Operator habe, der nicht funktioniert?
Hier ist ein Beispiel:
Wobei:
H3 ist der Preiswert des Levels
price ist der aktuelle Preis
Das Ergebnis ist, dass der Preis dieses Level erreicht (manchmal sogar an ihm stoppt), aber der Alarm nicht ausgelöst wird.
Können Sie mir sagen, was der Fehler ist?
Guten Morgen.
Das Programm sieht folgendermaßen aus.
Beim Kompilieren gibt es einen Fehler:
Ozero.mq4'Ozero.mq4 1 1
Rückgabewert von 'OrderClose' sollte überprüft werden Ozero.mq4 46 13
implizite Umwandlung von 'Zahl' in 'String' Ozero.mq4 49 117
0 Fehler, 2 Warnung(en) 1 3
Die Registerkarte "Ergebnisse" zeigt an, dass Aufträge geöffnet und geschlossen werden.
1 2014.08.25 00:00 kaufen 1 0.10 1.6550 0.0000 0.0000 0.00 10000.00
2 2014.08.25 06:30 close 1 0.10 1.6562 0.0000 0.0000 0.12 10000.12
3 2014.08.25 06:31 kaufen 2 0.10 1.6564 0.0000 0.0000 0.00 10000.12
4 2014.08.25 10:00 close 2 0.10 1.6574 0.0000 0.0000 0.10 10000.22
5 2014.08.25 10:00 kaufen 3 0.10 1.6576 0.0000 0.0000 0.00 10000.22
6 2014.08.25 12:58 close 3 0.10 1.6586 0.0000 0.0000 0.10 10000.32
7 2014.08.25 12:58 kaufen 4 0.10 1.6590 0.0000 0.0000 0.00 10000.32
8 2014.08.26 13:13 close at stop 4 0.10 1.6576 0.0000 0.0000 -0.14 10000.18
8 - Ich habe die Arbeit unterbrochen, indem ich das Prüfgerät geschlossen habe.
Als nächstes sehen wir uns das "Journal" an:
2014.10.31 07:46:44.837 GBPUSD,M15: 4453 Tick-Ereignisse (5608 Balken, 340128 Balkenzustände) innerhalb von 312876 ms verarbeitet (Gesamtzeit 324436 ms)
2014.10.31 07:46:44.837 2014.08.26 13:13 Tester: Auftrag #4 ist abgeschlossen
2014.10.31 07:46:44.798 2014.08.26 13:13 Visueller Prüfer gestoppt
2014.10.31 07:43:15.315 2014.08.25 12:58 Ozero GBPUSD,M15: ORDER OPEN 4
2014.10.31 07:43:15.315 2014.08.25 12:58 Ozero GBPUSD,M15: open #4 buy 0.10 GBPUSD at 1.6590 ok
2014.10.31 07:43:15.315 2014.08.25 12:58 Ozero GBPUSD,M15: Open #4 buy 0.10 GBPUSD at 1.6590 ok
2014.10.31 07:43:15.245 2014.08.25 12:58 Ozero GBPUSD,M15: Ich glaube nicht, dass er geschlossen wurde. Hier ist es: 4108
2014.10.31 07:43:15.245 2014.08.25 12:58 Ozero GBPUSD,M15: OrderClose Fehler 4108
2014.10.31 07:43:15.245 2014.08.25 12:58 Ozero GBPUSD,M15: unbekanntes Ticket 3 für OrderClose-Funktion
2014.10.31 07:43:15.245 2014.08.25 12:58 Ozero GBPUSD,M15: close #3 buy 0.10 GBPUSD at 1.6576 at price 1.6586
2014.10.31 07:42:51.123 2014.08.25 10:00 Ozero GBPUSD,M15: HOLD OPEN #3
2014.10.31 07:42:51.123 2014.08.25 10:00 Ozero GBPUSD,M15: open #3 buy 0.10 GBPUSD at 1.6576 ok
2014.10.31 07:42:51.123 2014.08.25 10:00 Ozero GBPUSD,M15: Position #1 eröffnen
2014.10.31 07:42:51.059 2014.08.25 10:00 Ozero GBPUSD,M15: Was ist los? Hier ist es: 4108
2014.10.31 07:42:51.059 2014.08.25 10:00 Ozero GBPUSD,M15: OrderClose Fehler 4108
2014.10.31 07:42:51.059 2014.08.25 10:00 Ozero GBPUSD,M15: unbekanntes Ticket 2 für OrderClose-Funktion
2014.10.31 07:42:51.059 2014.08.25 10:00 Ozero GBPUSD,M15: close #2 buy 0.10 GBPUSD at 1.6564 at price 1.6574
2014.10.31 07:42:31.473 2014.08.25 06:31 Ozero GBPUSD,M15: HOLD OPEN 2
2014.10.31 07:42:31.473 2014.08.25 06:31 Ozero GBPUSD,M15: open #2 buy 0.10 GBPUSD at 1.6564 ok
2014.10.31 07:42:31.473 2014.08.25 06:31 Ozero GBPUSD,M15: Eröffnung der ersten Position
2014.10.31 07:42:31.331 2014.08.25 06:30 Ozero GBPUSD,M15: Was ist los? Hier ist es: 4108
2014.10.31 07:42:31.331 2014.08.25 06:30 Ozero GBPUSD,M15: OrderClose Fehler 4108
2014.10.31 07:42:31.331 2014.08.25 06:30 Ozero GBPUSD,M15: unbekanntes Ticket 1 für OrderClose-Funktion
2014.10.31 07:42:31.331 2014.08.25 06:30 Ozero GBPUSD,M15: close #1 buy 0.10 GBPUSD at 1.6550 at price 1.6562
2014.10.31 07:41:31.966 2014.08.25 00:00 Ozero GBPUSD,M15: ORDER OPEN 1
2014.10.31 07:41:31.966 2014.08.25 00:00 Ozero GBPUSD,M15: open #1 buy 0.10 GBPUSD at 1.6550 ok
2014.10.31 07:41:31.966 2014.08.25 00:00 Ozero GBPUSD,M15: open #1 buy 0.10 GBPUSD at 1.6550 ok
2014.10.31 07:41:31.958 Ozero Eingaben: gLot=0.1; gPoint=0.001;
Jetzt bin ich völlig ratlos. Einerseits werden die Aufträge geschlossen, wie Sie im Chart und in den Ergebnissen sehen können, andererseits wird der Code mit Fehlern ausgeführt, wie im Log zu sehen ist: (((((((((((
Ozero.
Sie versuchen, denselben Auftrag zweimal abzuschließen. Entfernen Sie den oberen Teil.
Guten Morgen.
Zwei Zeilen wurden gestrichen. Alles funktioniert. Und alles wird korrekt im Diagramm, in den Ergebnissen und in den Protokollen angezeigt.
Frage: Beim Kompilieren gibt es eine
'Ozero.mq4'Ozero.mq4 1 1
Rückgabewert von 'OrderClose' sollte überprüft werden Ozero.mq4 46 13
0 Fehler, 1 Warnung(en) 1 2
Wovor warnt mich der Compiler? Die 46. Zeile ist OrderClose(OrderTicket(),OrderLots(),_Bid,15);
Ozero.
Könnt ihr mir sagen, was die Ursache für die heute aufgetretene Störung sein könnte?
Der EA hat die Option, den Handel 15 Minuten vor Börsenschluss am Freitag zu beenden.
Wenn ein neuer Tag erscheint, prüft der EA, ob es Freitag ist, dann beenden wir heute den Handel in StringToTime("23:59")-15*60
Im Strategietester funktioniert diese Funktion korrekt, aber im realen Handel sehe ich eine völlig andere Situation - der Expert Advisor stoppt den Handel mit dem ersten Tick, wenn der Freitag kommt.
Hier sind die Ausdrucke aus dem Journal von Expert Advisor:
Broker #1, Demo:
0 05:59:47.731 Scalper GBPAUDpt,M1: Finish In Friday = 2014.10.23 23:44:00
Makler 2, real:
0 03:00:11.999 Scalper EURUSD,M1: Finish In Freitag = 2014.10.23 23:44:00
Das heißt, wenn der Tagesbalken von heute (Freitag, 24. Oktober) auf dem ersten Tick erscheint, wird der EA
konvertiert die Zeile "23:59" in die Uhrzeit von gestern, anstatt den heutigen Tag zuzuordnen.
Wenn der Expert Advisor jedoch am Freitag mitten am Tag neu gestartet wird, bestimmt er den Zeitpunkt der Fertigstellung korrekt.
Ich habe die Ursache für dieses Problem gefunden: https://forum.mql4.com/33023
Wie erwartet, handelt es sich praktisch um einen Fehler in der Funktion StringToTime. Die Symptome sind alle ähnlich. Diese Funktion konvertiert den String "23:59" in datetime mit dem Datum des lokalen PCs, aber nicht mit dem Datum von MT4. Und im Tester wird, wie wir wissen, das Datum des lokalen PCs emuliert und mit der Terminalzeit gleichgesetzt. Das ist der Grund, warum im Tester alles richtig funktioniert, aber in der Demo/Echtzeit kommt es zu Pannen und Verlusten. Natürlich steht in der Dokumentation nicht, woher das Datum kommt, und der obige Link zeigt, dass dieses Problem vor 4 Jahren gemeldet wurde, aber anscheinend ist es den Methaquotes egal.
Eine andere Frage. Verstehe ich das richtig?
1. Die Auftragsnummerierung beginnt bei "0".
2. dieser Code absolut alle Aufträge schließt, unabhängig davon, ob ich sie manuell oder programmatisch öffne? D.h., wir werden nie einen Auftrag finden, den dieser Teil des Programms nicht abschließen kann?
Ozero.
Hat schon jemand einen Lauftext auf dem Bildschirm erstellt? Zum Beispiel - Auftrag so und so geöffnet/geschlossen/geändert, etc. Neuigkeiten gibt es so und so... ?
Wenn Sie nichts dagegen haben, zeigen Sie mir bitte einen Teil des Codes.
Danke!
Die untere ist besser. Die Reihenfolge muss im Voraus festgelegt werden.
So ist es besser:
Hat schon jemand einen Lauftext auf dem Bildschirm erstellt? Zum Beispiel - Auftrag so und so geöffnet/geschlossen/geändert, etc. Neuigkeiten gibt es so und so... ?
Wenn Sie nichts dagegen haben, zeigen Sie mir bitte einen Teil des Codes.
Senx!
Vertikales Scrollen im leeren Anzeigefenster. Hier ist die Funktion:
Als Beispiel für die Verwendung einer einfarbigen Nachricht (Sie können 4 Farben in einer Zeile für verschiedene Wörter verwenden):
Im Diagramm sollte ein leerer Indikator mit dem Namen Win_Inform vorhanden sein.