Antwort

Einstellung der Gültigkeitsdauer für IF-Bedingungen

7 Antworten

huangwh88

Customer, bbp_participant, community, 113 replies.

Profil besuchen

vor 7 Jahren #116256

Hallo, liebe Händler, 

 

Ich habe mich gefragt, ob ich Folgendes in den Assistenten programmieren kann:

 

Angenommen, ich habe ein MACD- und RSI-Crossover-System mit 2 Einstiegsbedingungen.

 

Bedingung 1 ist, dass der MACD den Wert 0 überschreitet. Unter der Annahme, dass er über 0 bleibt, gibt es ein 10-Perioden-Fenster, in dem der RSI den Wert 50 überschreiten muss. Wenn dies geschieht, wird der Handel ausgeführt. Wenn nicht, wird die MACD-Bedingung zurückgesetzt, und wir warten auf das nächste Mal, wenn der MACD die 0 überschreitet. 

 

In Fällen, in denen MACD und RSI gleichzeitig umkippen, kann die IF-Anweisung lauten:

 

MACD kreuzt über 0 UND RSI kreuzt über 50

 

Aber wenn das RSI-Kreuz 5 Perioden später auftritt, kann die IF-Anweisung sein:

 

MACD > 0 UND RSI kreuzen über 50

 

Wie kann ich den EA dazu bringen, zu erkennen, dass der MACD Crossover stattgefunden hat, so dass er für die folgenden Perioden MACD > 0 verwendet?

 

Zweitens: Wie kann ich das Gültigkeitsfenster von 10 Jahren hinzufügen?

 

Ich hoffe, das macht Sinn. Danke für jede Hilfe.

0

chris.marshall

Abonnent, bbp_participant, Gemeinschaft, 4 Antworten.

Profil besuchen

vor 7 Jahren #141290

Ich bin nur ein paar Indikatoren in meine Reise mit diesem Produkt, aber ich habe die folgende Lösung mit einem ähnlichen Problem hatte ich in einem EA arbeiten. Beachten Sie, wenn ich versuchte, es als Indikator zu verwenden, obwohl es nicht funktioniert hat, nicht sicher, warum noch.

Sie können 2 Variablen einrichten: MACDP (zum Zählen der Kerzen nach dem Überkreuzen) und MACDN (zum Zählen der Kerzen nach dem Unterkreuzen) oder etwas anderes, das für Sie sinnvoll ist. Dies geschieht auf der Registerkarte Strategie im unteren Feld "Strategieparameter". Legen Sie sie als Ganzzahl fest.

Richten Sie dann 2 neue Regeln ein, die bei Kerzenschluss berechnen
1) IF MACD > 0 Then MACDP = MACDP + 1 AND MACDN = 0
2) IF MACD < 0 Then MACDN = MACDN + 1 AND MACDP = 0
Stellen Sie sicher, dass diese 2 Regeln in der Reihenfolge der Ausführung vor dem RSI-Test stehen

Dann würde Ihr RSI-Test wie folgt aussehen
1) IF RSI kreuzt über 50 und MACDP > 0 und MACDP < 11 Dann Handelsbedingung
2) IF RSI Crosses unter 50 und MACDN -11 Dann Handel Bedingung

0

huangwh88

Customer, bbp_participant, community, 113 replies.

Profil besuchen

vor 7 Jahren #141294

Ich bin nur ein paar Indikatoren in meine Reise mit diesem Produkt, aber ich habe die folgende Lösung mit einem ähnlichen Problem hatte ich in einem EA arbeiten. Beachten Sie, wenn ich versuchte, es als Indikator zu verwenden, obwohl es nicht funktioniert hat, nicht sicher, warum noch.

Sie können 2 Variablen einrichten: MACDP (zum Zählen der Kerzen nach dem Überkreuzen) und MACDN (zum Zählen der Kerzen nach dem Unterkreuzen) oder etwas anderes, das für Sie sinnvoll ist. Dies geschieht auf der Registerkarte Strategie im unteren Feld "Strategieparameter". Legen Sie sie als Ganzzahl fest.

Richten Sie dann 2 neue Regeln ein, die bei Kerzenschluss berechnen
1) IF MACD > 0 Then MACDP = MACDP + 1 AND MACDN = 0
2) IF MACD < 0 Then MACDN = MACDN + 1 AND MACDP = 0
Stellen Sie sicher, dass diese 2 Regeln in der Reihenfolge der Ausführung vor dem RSI-Test stehen

Dann würde Ihr RSI-Test wie folgt aussehen
1) IF RSI kreuzt über 50 und MACDP > 0 und MACDP < 11 Dann Handelsbedingung
2) IF RSI Crosses unter 50 und MACDN -11 Dann Handel Bedingung

Hallo Chris, 

 

Wirklich schätzen die Einsicht. Ich verstehe, was Sie sagen, aber wie erkennt der EA, dass er MACDP und MACDN nur hinzufügen sollte, nachdem ein Cross Over/Under innerhalb der letzten 10 Perioden aufgetreten ist? 

 

Wenn ich beispielsweise den EA anlege, wenn der MACD über 0 liegt und der Crossover vor 20 Perioden stattgefunden hat, wäre der MACDP 1, und die Bedingung wäre reif für den Einstieg, obwohl sie eigentlich schon abgelaufen ist.

 

Wenn wir einen WHILE-Operator in Verbindung mit einem Wahr/Falsch-Flag verwenden könnten, wäre das viel einfacher, aber wenn wir nur IF verwenden, bin ich mir immer noch unsicher.

0

chris.marshall

Abonnent, bbp_participant, Gemeinschaft, 4 Antworten.

Profil besuchen

vor 7 Jahren #141297

So wie es oben geschrieben ist, würde es von der ersten Kerze nach dem Kreuz in beide Richtungen zählen.

Bei 20 positiven Kerzen würde der MACDP auf 20 steigen, aber Ihr RSI-Test wäre nur gültig, solange der MACDP zwischen 1 und 10 liegt.

 

Sie haben Recht, obwohl dies nicht für den Zeitraum zwischen, wenn Sie den EA und das erste Kreuz laden. Ein einfacher Weg, um dies zu umgehen wäre, nur zählen Kerzen seit dem letzten Kreuz entweder über oder unter und setzen Startwert von MACDP/MACDN entsprechend beim Laden der EA.

 

Ich bin sicher, dass es elegantere Wege gibt, aber ich bin noch neu in dem Programm.

0

tomas262

Administrator, sq-ultimate, 2 Antworten.

Profil besuchen

vor 7 Jahren #141311

Hallo,

 

Der einfachste Weg, dies zu erreichen, ist die Einrichtung eines Zählers. Wenn die MACD-Bedingung gültig ist, wird der Zähler aktiviert, um Zähler = Zähler + 1 zu tun (anfangs ist er auf 0 gesetzt).

Sie zählen nun jeden neuen Balken mit diesem Zähler. Während der Zähler aktiv ist, beobachten Sie den RSI-Zustand, aber nur solange, bis der Zähler weniger als 10 beträgt. Sobald der Zähler > 10 ist, setzen Sie ihn auf 0 zurück und warten auf ein weiteres MACD-Signal.

 

Lassen Sie mich wissen, wenn Sie ein Beispielprojekt dafür benötigen

0

huangwh88

Customer, bbp_participant, community, 113 replies.

Profil besuchen

vor 7 Jahren #141325

So wie es oben geschrieben ist, würde es von der ersten Kerze nach dem Kreuz in beide Richtungen zählen.

Bei 20 positiven Kerzen würde der MACDP auf 20 steigen, aber Ihr RSI-Test wäre nur gültig, solange der MACDP zwischen 1 und 10 liegt.

 

Sie haben Recht, obwohl dies nicht für den Zeitraum zwischen, wenn Sie den EA und das erste Kreuz laden. Ein einfacher Weg, um dies zu umgehen wäre, nur zählen Kerzen seit dem letzten Kreuz entweder über oder unter und setzen Startwert von MACDP/MACDN entsprechend beim Laden der EA.

 

Ich bin sicher, dass es elegantere Wege gibt, aber ich bin noch neu in dem Programm.

Ja, ich habe darüber nachgedacht, und es gibt in der Tat eine einfache Lösung, ähnlich der, die Sie erwähnt haben. Wir können den Zähler so einstellen, dass er erst nach einem Cross startet. Es könnte etwas "verlorene Zeit" geben, wenn ein Cross kurz vor dem Anhängen des EA auftritt, aber das ist kein großes Problem. 

 

Vielen Dank für Ihre Hilfe!

0

huangwh88

Customer, bbp_participant, community, 113 replies.

Profil besuchen

vor 7 Jahren #141326

Hallo,

 

Der einfachste Weg, dies zu erreichen, ist die Einrichtung eines Zählers. Wenn die MACD-Bedingung gültig ist, wird der Zähler aktiviert, um Zähler = Zähler + 1 zu tun (anfangs ist er auf 0 gesetzt).

Sie zählen nun jeden neuen Balken mit diesem Zähler. Während der Zähler aktiv ist, beobachten Sie den RSI-Zustand, aber nur solange, bis der Zähler weniger als 10 beträgt. Sobald der Zähler > 10 ist, setzen Sie ihn auf 0 zurück und warten auf ein weiteres MACD-Signal.

 

Lassen Sie mich wissen, wenn Sie ein Beispielprojekt dafür benötigen

Hallo Tomas, 

 

Bitte senden Sie mir das Beispielprojekt. Ich danke Ihnen!

0

tomas262

Administrator, sq-ultimate, 2 Antworten.

Profil besuchen

vor 7 Jahren #141338

Hallo,

 

finden Sie das Beispiel im Anhang. EA wartet auf RSI Kreuz über 20 Ebene. Dann wartet er 10 Bars für MACD Kreuz 0 Ebene. Wenn kein Signal von MACD kommt, beginnt alles von vorne

0

Ansicht von 7 Antworten - 1 bis 7 (von insgesamt 7)