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 kein OnStart() in EAs, aber ich verstehe, was Sie gemeint haben. Allerdings sagte der OP auch in Reaktion auf Ihre Kommentare und ich zitiere:
Ja, ich meinte OnTick(). Sie messen dem "während EA läuft" immer noch zu viel Bedeutung bei. Es bedeutet nicht notwendigerweise, oder sogar am plausibelsten, "während der EA sein OnTick() ausführt", und nicht "während der EA mit einem Chart verbunden ist, d.h. während seiner gesamten Lebensdauer".
Wir brauchen mehr Informationen von paranoyakX.
Ja, ich meinte OnTick(). Sie messen "while EA running" immer noch zu viel Bedeutung bei. Es bedeutet nicht notwendigerweise, oder sogar am plausibelsten, "während der EA sein OnTick() ausführt", und nicht "während der EA mit einem Chart verbunden ist, d.h. während seiner gesamten Lebensdauer".
Wir brauchen mehr Informationen von paranoyakX.
Hallo Leute,
lasst mich das klarstellen. Mein Code ist für ein sehr grundlegendes Muster auf früheren Bars suchen und wird entscheiden, ob eine Bestellung geöffnet werden, aber die Eröffnung neuer Auftrag wird nur geprüft werden, wenn ein neuer Balken kommt. was ich meine, ich bin für die letzte Bar zu schließen warten, dann überprüfen Sie das Muster, wenn es ok ist, werde ich die Bestellung zu öffnen. so Öffnen einer Bestellung ist bei der Eröffnung der neuen Bar passiert. wie @jjc sagte, ich halte grundlegende Muster Informationen in globalen Variablen, wie wenn mein Muster begann und endete, was der höchste und niedrigste Wert ist, etc.
Irgendwie, wenn ich EA neu zu starten, möchte ich diese grundlegenden Informationen wieder zu finden (Muster Start und Ende bar, höchste, niedrigste Preise usw.) und füllen meine globalen Variablen wieder, das ist, warum ich dies brauche. Ich werde Start- und Endinformationen verwenden, um zu entscheiden, wann meine Bestellung zu schließen. so ist es genug, wenn eine neue Bar nicht auf OnInit kommen, während EA läuft, es ist kein Problem.
Ja, ich meinte OnTick(). Sie messen dem Ausdruck "während der EA läuft" immer noch zu viel Bedeutung bei. Es bedeutet nicht notwendigerweise, oder sogar am plausibelsten, "während der EA sein OnTick() ausführt", und nicht "während der EA mit einem Chart verbunden ist, d.h. während seiner gesamten Lebensdauer".
Wir brauchen mehr Informationen von paranoyakX.
Hallo Leute,
lasst mich das klarstellen. Mein Code ist auf der Suche nach einem sehr grundlegenden Muster auf früheren Bars und wird entscheiden, ob eine Bestellung geöffnet werden, aber neue Bestellung öffnen wird nur überprüft werden, wenn ein neuer bar kommt. was ich meine, ich bin für den letzten bar schließen warten, dann überprüfen Sie das Muster, wenn es ok ist, werde ich die Bestellung zu öffnen. so öffnen eine Bestellung geschieht bei neuen bar's Eröffnung. wie @jjc sagte, ich halte grundlegende Muster Informationen bei globalen Variablen, wie wenn mein Muster begann und endete, was der höchste und niedrigste Wert ist, etc.
Irgendwie, wenn ich EA neu zu starten, möchte ich diese grundlegenden Informationen wieder zu finden (Muster Start und Ende bar, höchste, niedrigste Preise usw.) und füllen meine globalen Variablen wieder, das ist, warum ich dies brauche. Ich werde Start- und Endinformationen verwenden, um zu entscheiden, wann meine Bestellung zu schließen. so ist es genug, wenn eine neue Bar nicht auf OnInit kommen, während EA läuft, es ist kein Problem.
Sie sollten das alles NICHT in OnInit() machen. Sie sollten all diese Logik (einschließlich der Wiederherstellung) in OnTick() ausführen. Das ist sehr wichtig! Wenn Sie dies in OnInit() tun, werden Sie weitere Probleme bekommen, die Sie nicht vorhergesehen haben, und Ihr EA wird sich in einem Zustand der "Initialisierung" befinden, während Sie all diese Logik ausführen. Also, machen Sie es richtig! Führen Sie nur Ihre Initialisierung (wie Variablen, externe Parameterprüfungen usw.) in OnInit() und alles andere in OnTick() durch.
Nein nein nein! Ich konnte nicht erklären, meine selft sorry, ich bin alles in der OnTick laufen. aber einfach ich überprüft, ob dieser Tick zu einem neuen bar und tun meine Mitarbeiter gehören. Was ich in OnInit ausführe, ist, die Aufträge und das Muster, das ich vorher berechnet habe, neu zu finden und neu zu berechnen. Ich sagte, dass dies bei OnInit läuft, finden meine Muster, die derzeit geöffnet, um zu gehören.
Ich hoffe, ich kann das erklären.
Nein nein nein! Ich konnte nicht erklären, meine selft sorry, ich bin alles in der OnTick laufen. aber einfach ich überprüft, ob dieser Tick zu einem neuen bar und tun meine Mitarbeiter gehören. Was ich in OnInit ausführe, ist, die Aufträge und das Muster, das ich vorher berechnet habe, neu zu finden und neu zu berechnen. Ich sagte, dass dies bei OnInit läuft, finden meine Muster, die derzeit geöffnet, um zu gehören.
Ich hoffe, ich kann das erklären.
Ja, das habe ich in Ihrem Beitrag verstanden! Was ich damit sagen will ist, dass Sie das NICHT in OnInit() machen sollen. Sie sollten Ihre Orders und Patterns und all diese Berechnungen in OnTick() finden.
Definieren Sie einfach eine lokale statische Variable in OnTick() und führen Sie alle Ihre Überprüfungen und Musterdefinitionen durch, und setzen Sie die Variable dann auf false.
Ja, das habe ich in Ihrem Beitrag verstanden! Was ich damit sagen will, ist, dass Sie das nicht in OnInit() machen sollten. Sie sollten Ihre Aufträge und Muster und all diese Berechnungen in OnTick() finden.
Definieren Sie einfach eine lokale statische Variable in OnTick() und führen Sie alle Ihre Überprüfungen und Musterdefinitionen durch, und setzen Sie die Variable dann auf false.
Entschuldigung, ich habe Sie missverstanden. Warum tue ich das nicht OnInit? Ist es nicht bequemer? Wenn ich das tue, muss ich bei jedem Tick nach dem ersten eine if-Anweisung ausführen, die nicht jedes Mal wahr sein wird. Ich dachte, das wäre eine unnötige Belastung für den Code.
Ist OnInit nicht der Grund, warum es existiert, um etwas wie meine globalen Variablen zu initialisieren?
Ich hoffe, ich kann das erklären.
Ich denke, dass wir etwas Code sehen müssen, um sicher zu sein, wovon Sie sprechen. Es ist zum Beispiel nicht klar, ob Sie nach dem historischen Muster suchen, das einen bestehenden offenen Handel generiert hat, weil (a) das Ihnen sagt, wie Sie den offenen Handel verwalten sollen, wo/wann er geschlossen werden soll usw., oder (b) nur, um einige Markierungen auf dem Chart zu zeichnen, die Ihnen erklären, warum der bestehende Handel eröffnet wurde.
Generell stimme ich mit FMIC überein, dass Sie versuchen sollten, so viel wie möglich in OnTick() zu tun und so wenig wie möglich in globalen Variablen zu speichern.
Tut mir leid, dann habe ich missverstanden Sie vor. Warum tue ich das nicht OnInit ? Ist es nicht bequemer? Wenn ich das tue, werde ich für jeden Tick nach dem ersten eine if-Anweisung ausführen, die nicht immer wahr sein wird. Ich dachte, das wäre eine unnötige Belastung für den Code.
Ist OnInit nicht der Grund, warum es existiert, um etwas wie meine globalen Variablen zu initialisieren?
Danke für den Rat, hier ist eine sehr einfache Version meines Codes, das ist nicht mein richtiger Code, aber ich hoffe, dass dies klarer sein wird.
wie ich sagte, dies ist nicht der echte Code, finden Muster usw. ist nur ein Beispiel. der Grund, warum ich diesen Thread eröffnet istDetectExistingPattern() Funktion