Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1477
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
Dennoch wird bei jedem Ticken geprüft
und die Minimalberechnung gerät aus den Fugen... geht zwei Takte zurück.
Meine Mindestberechnung wurde wie auf Ihrem Bild getroffen. Aber dann fügte ich die Variable LoY1 hinzu, und der Fehler trat nicht mehr auf. Infolgedessen werden alle Aufträge auf dieselbe Art und Weise geöffnet (nach Zeit, Betrag und Preis) wie in meinem ursprünglichen Code, d. h. so, wie ich sie brauche. Mein Code ist an einer anderen Stelle fehlgeschlagen .... Aber ich habe es an der gleichen Stelle repariert.
Sie können auch eine Pending-Order in 30 Punkten ab LoU platzieren, anstatt sie am Markt zu eröffnen. Dann müssen Sie nicht bei jedem Tick das Bid überprüfen. Aber im Falle eines schwebenden Auftrags sollten wir jedes Mal, wenn sich die LoU ändert , den alten schwebenden Auftrag löschen und einen neuen einstellen, oder die Parameter eines aktuellen schwebenden Auftrags ändern, ohne ihn zu löschen. Und all dies sollte viel seltener geschehen als bei jedem Bid-Tick .
Welche Variante ist in meinem Fall die am wenigsten zeitaufwändige, was die Code-Implementierung angeht?
1. Prüfen Sie bei jedem Häkchen, ob das Gebot 30 Punkte von LoU entfernt ist.
2. Bei jeder Änderung der LoU löschen Sie die alte ausstehende und setzen eine neue.
3. Bei jedem Wechsel der LoU ändern Sie die Parameter der aktiven LoU
Vielen Dank für Ihre Hilfe.
Meine Berechnung des Minimums ging wie auf Ihrem Bild daneben. Aber dann fügte ich die Variable LoY1 hinzu, und das stoppte den Vorgang.
Es gibt die Standardfunktionen iLowest undiHighest.
Meine Berechnung des Minimums ging wie auf Ihrem Bild daneben. Aber dann fügte ich eine Variable LoY1 hinzu, und das Abweichen wurde gestoppt. Infolgedessen werden alle Aufträge auf dieselbe Weise (nach Zeit, Betrag und Preis) wie in meinem ursprünglichen Code (d. h. so, wie ich es will) geöffnet. Mein Code ist an einer anderen Stelle fehlgeschlagen .... Aber ich habe es an der gleichen Stelle repariert.
Sie können auch eine Pending-Order in 30 Punkten ab LoU platzieren, anstatt sie am Markt zu eröffnen. Dann müssen Sie nicht bei jedem Tick das Bid überprüfen. Aber im Falle eines schwebenden Auftrags sollten wir jedes Mal, wenn sich die LoU ändert , den alten schwebenden Auftrag löschen und einen neuen einstellen oder die Parameter eines aktuellen schwebenden Auftrags ändern, ohne ihn zu löschen. Und all dies sollte viel seltener geschehen als bei jedem Bid-Tick .
Welche Variante ist in meinem Fall die am wenigsten zeitaufwendige, was die Code-Implementierung angeht?
1. Prüfen Sie bei jedem Häkchen, ob das Gebot 30 Punkte von LoU entfernt ist.
2. Bei jeder Änderung der LoU löschen Sie die alte ausstehende und setzen eine neue.
3. Bei jeder Änderung von LoU, Parameter der aktiven Position ändern
1) x ist nicht int, sondern datetime (wird sich in Zukunft als nützlich erweisen)
2) Ihr ursprünglicher Code hat keine ausstehenden Aufträge
3) Jetzt macht Ihr Code bei jedem Tick mehr Operationen
Überprüfen Sie Ihre Nachricht
gibt es die Standardfunktionen iLowest undiHighest.
Nein... die Anzahl der Zeitreihenelemente ist nicht konstant.
Hindert es Sie daran, den Höchst-/Tiefstwert zu finden?
äh... hindert Sie das daran, hoch/tief zu finden?
Die FunktioneniLowest undiHighest bedeuten, dass unter einer bestimmten Anzahl von Balken (Anzahl der Zeitreihenelemente) gesucht wird
in diesem Fall ist die Zahl unbekannt und ändert sich jedes Mal
1) x ist nicht int, sondern datetime (dies wird sich in Zukunft als nützlich erweisen)
2) Ihr ursprünglicher Code hat keine ausstehenden Aufträge
3) Ihr Code führt nun bei jedem Tick mehr Operationen aus
Überprüfen Sie Ihre Nachricht.
Dies ist mein alter Code
Dies ist mein neuer Code für denselben Zeitraum wie der alte
Die Anzahl der Operationen pro Tick ist für mich viel weniger wichtig als die Zeit, die für diese Zahl aufgewendet wird. Und der neue Code benötigt 25% weniger Zeit.... wenn ich mich nicht irre.
Vielen Dank für die Hilfe.
Es gibt hier eine gewisse Subtilität. Zuerst wird die Größe festgelegt und dann durch Zurücksetzen auf Null die Fixierung aufgehoben, ohne dass sich die Größe ändert. Es gibt keinen anderen Weg.
Dennoch wird bei jedem Ticken geprüft
und die Berechnung des Tiefs geht daneben... geht zwei Takte zurück.
Nachfolgend finden Sie meinen ursprünglichen Code ohne Ihre Ergänzungen
Nachfolgend mit Ihren neuesten Verbesserungen
Vielleicht sollte if(TimeSeconds(TimeCurrent())==0) nur auf die Abschnitte angewendet werden, in denen keine Aufträge eröffnet werden und in denen das nächste Minimum gesucht wird?
Wenn ich mich nicht irre, wurde mein Code dank Ihrer Funktion nur zu Beginn jeder Minutenkerze ausgeführt, weshalb er die Aufträge nicht korrekt öffnet.
Vielen Dank für die Hilfe.
Nachfolgend finden Sie meinen ursprünglichen Code ohne Ihre Ergänzungen
Nachfolgend finden Sie den Code mit Ihren letzten Verbesserungen
Vielleicht sollte if(TimeSeconds(TimeCurrent())==0) nur auf die Abschnitte angewendet werden, in denen keine Aufträge eröffnet werden und in denen nach dem nächsten Tiefpunkt gesucht wird?
Wenn ich mich nicht irre, hat Ihre Funktion begonnen, meinen Code nur zu Beginn jeder Minutenkerze auszuführen.
Vielen Dank für die Hilfe.