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
Oh, Shaitan... Validierung bestanden und jetzt
keine Handelsgeschäfte
nicht länger ein Fehler.
P.S. Es war eine zufällige Aufnahme. Der nächste Test ist wieder das Gleiche
Hier liegt kein Fehler vor, ich verstehe überhaupt nicht, was hier los ist. Ich habe eine Krücke (Division durch Null) vor die Handelsfunktion gesetzt:
Es funktioniert:
Wenn ich sie herausnehme, erhalte ich das gleiche
Keine Handelsgeschäfte.
Ich verstehe nicht, was den Validator von OrderSend() abhält. Denn wenn sie bei ihm ankommt, muss es sich um Abrechnungsfehler handeln (obwohl ich sie alle behoben habe) 130, 131, 134, ..., aber nicht"keine Handelsgeschäfte". Ich muss nur eine Pending Order irgendwo weit weg in OnInit() platzieren, damit sie nicht ausgelöst wird.
Und welchen Sinn hat eine solche Krücke, wenn die Bedingung, unter der ein Handel durchgeführt werden soll, nicht in den Kodex eingeht?
Warum gibt es keine Eingabe?! Schau genau hin, Alexey. Kurz vor OrderSend gibt es eine Krücke.
Richtig. Wenn OrderSend nicht ausgeführt wird, bedeutet dies, dass die Codeausführung aus irgendeinem Grund nicht zu ihm gelangt. Und egal, was Sie im Bedingungsblock davor setzen, es gibt keine Eingabe und keine Ausführung, nicht einmal eine Division durch Null.
Moment, ich verstehe das nicht. Wenn der Operator 1 (Division durch Null) ausgeführt wird, dann ist der nächste der if-Operator. Und das bedeutet, dass der Zustand des Fahrzeugs überprüft werden muss. Um die Bedingung zu prüfen, muss die Funktion OrderSend ausgeführt werden, was bedeutet, dass sie nach der Division durch Null an der Reihe ist.
Aber das macht nichts. Ich habe den Code aus Gründen der Reinheit des Experiments geändert:
Das Ergebnis ist das gleiche. Das Ergebnis mit der Krücke ist ein Fehler bei der Division durch Null. Ohne die Krücke ist das Ergebnis wie oben gezeigt: keine Handelsoperationen.
Moment, ich verstehe das nicht. Wenn der Operator 1 (Division durch Null) ausgeführt wird, dann ist der nächste der if-Operator. Und das bedeutet, dass der Zustand des Fahrzeugs überprüft werden muss. Um die Bedingung zu prüfen, muss die Funktion OrderSend ausgeführt werden, was bedeutet, dass sie nach der Division durch Null an der Reihe ist.
Aber das macht nichts. Ich habe den Code aus Gründen der Reinheit des Experiments geändert:
Das Ergebnis ist das gleiche. Das Ergebnis mit der Krücke ist ein Fehler bei der Division durch Null. Das Ergebnis ohne Krücke ist oben dargestellt: keine Handelsoperationen.
Sie hätten kein Bild zum Einfügen des Codes verwenden sollen. Es ist unmöglich, sie überhaupt zu lesen. Und das Problem liegt nicht in diesem Codefragment. Das Problem besteht darin, dass eine Bedingung bei einigen Eingabeparametern nicht erfüllt ist und es keine Benachrichtigung gibt.
Warum kommt es nicht an?!
Warum versuchen Sie, für den Markt schlechter zu schreiben als für sich selbst?
Es ist ganz einfach: Bevor Sie eine Bestellung abschicken, prüfen Sie, ob sie überhaupt ausführbar ist.
Prüfen Sie die Limits (das haben Sie gesagt), prüfen Sie die Mittel und die Marge (die haben Sie nicht), schauen Sie, ob es eine Verbindung gibt und ob der Handel erlaubt ist.
(Option) wenn es umfangreiche Berechnungen gab, ist es keine Sünde, RefreshRates vor dem Lesen Bid Ask
Um Ihrer selbst willen werden Sie all diese Kontrollen durchführen. Warum nicht jetzt?
Sie denken, ich prüfe das nicht. Die Losgröße wird in einer separaten Funktion geprüft
Limits werden hier nicht benötigt, da Stop Loss und Take Profit bei Handelseröffnung gleich Null sind.RefreshRates() aktualisiert die Daten bei der Lotberechnung. Natürlich gibt es keine Überprüfung der Verbindung usw. vor jeder Eingabe, aber das ist nicht der Punkt. Wenn OrderSend eine Anfrage sendet, wird ein bestimmter Fehler angezeigt: 130, 131 usw. Aber was ich habe, ist.
Ich versuche gar nicht, einen Auftrag zum Öffnen zu senden. Auch im letzten Test, als ich in der Funktion OnInit() eine Prüfposition festlegte.
Sie hätten den Code nicht in ein Bild einfügen sollen. Es ist unmöglich, sie zu lesen. Das Problem liegt nicht in diesem Codefragment. Das Problem besteht darin, dass eine Bedingung in einigen Eingabeparametern nicht erfüllt ist und es keine Benachrichtigung über diese Tatsache gibt.
Das mag sein. Aber ich habe bereits alles doppelt geprüft. Ich weiß nicht, wo ich als nächstes graben soll.
Sie denken, ich prüfe das nicht. Die Losgröße wird in einer separaten Funktion geprüft
Limits werden hier nicht benötigt, da Stop Loss und Take Profit bei Handelseröffnung gleich Null sind.RefreshRates() aktualisiert die Daten bei der Lotberechnung. Natürlich gibt es keine Überprüfung der Verbindung usw. vor jeder Eingabe, aber das ist nicht der Punkt. Wenn OrderSend eine Anfrage sendet, wird ein bestimmter Fehler angezeigt: 130, 131 usw. Aber was ich habe, ist.
Ich versuche gar nicht, einen Auftrag zum Öffnen zu senden. Auch im letzten Test, als ich in der Funktion OnInit() eine Prüfposition festlegte.
Das ist möglich. Aber ich habe bereits alles doppelt geprüft. Ich weiß nicht, wohin ich als nächstes gehen soll.
Schauen Sie sich an, wie andere Aufträge im EA umgesetzt wurden. Ich glaube nicht, dass der Expert Advisor nur die
bei der Eröffnung wurde ticket<0 gesetzt - sehen Sie sich die andere Logik an, wie sie in der Realität darauf reagiert