mathe
Mitglied seit 11 Jahre 4 Monate

Formel: Zu häufiges Handeln

Tag,

ich will, dass meine Strategie ein Signal nur einmal handelt und erst wieder handelt, wenn das Set-up von neuem eintritt. Leider führt dieser Code nach dem Eintritt des Set-ups und anschließendem Trade immer weitere Trades aus.
Wie kann ich dies verhindern?

Danke für die Hilfe
//////////////////////////////////////////

Inputs: FastLength(7),SlowLength(26),prozenttrail(0.5);
Vars:EntryLong(0),EntryShort(0),Fast(0),Slow(0);

Fast = Average(Close,FastLength);
Slow = Average(Close,SlowLength);

If Fast crosses above Slow then EntryLong = High +1 point;
If Fast > Slow then Buy("Long") next Bar at EntryLong Stop;

If Fast crosses below Slow then EntryShort = Low -1 point;
If Fast < Slow then Sell("Short") next Bar at EntryShort Stop;

ExitLong next Bar at Slow -1 point Stop;
ExitShort next Bar at Slow +1 point Stop;

SetDollarTrailing(close/100*prozenttrail*bigpointvalue);
Setexitonclose;

Geschrieben von mathe am
Prowler
Mitglied seit 10 Jahre 11 Monate

Hallo,

Du könntest z.B. eine zusätzliche Variable einfügen die Du erst dann zurücksetzt wenn Dein Setup neue Trade erlaubt...

mathe
Mitglied seit 11 Jahre 4 Monate

Wie bekomme ich das programmiertechnisch hin?

Danke für eventuelle Anregungen.
Tu mich schwer mit dem Programmieren.

dansmo
Mitglied seit 11 Jahre 4 Monate

@ mathe [#1]

Was heißt denn genau: "Führt weitere Trades aus?" Entries oder Exits?

Ändere mal
If Fast crosses above Slow then EntryLong = High +1 point;
If Fast > Slow then Buy("Long") next Bar at EntryLong Stop;

If Fast crosses below Slow then EntryShort = Low -1 point;
If Fast < Slow then Sell("Short") next Bar at EntryShort Stop;

in
If MarketPosition = 0 then begin
If Fast crosses above Slow then EntryLong = High +1 point;
If Fast > Slow then Buy("Long") next Bar at EntryLong Stop;
end;

If MarketPosition = 0 then begin
If Fast crosses below Slow then EntryShort = Low -1 point;
If Fast < Slow then Sell("Short") next Bar at EntryShort Stop;
end;

Vielleicht hilft dir das schon weiter.
dansmo

mathe
Mitglied seit 11 Jahre 4 Monate

Danke für die Hilfe, aber mein Problem ist dadurch noch nicht gelöst.

Erkläre das nun mal für einen Longtrade

Für einen Long-Entry muss der schnelle GD den langsamen GD von unten nach oben schneiden. Das Hoch +1 point, welches in der folgenden Bar entsteht soll als StopBuy-Limit für die folgenden Bars dienen, solange der schnelle GD sich über dem langsamen GD hält.

Mein Problem ist nun, dass wenn einmal eine Position eingegangen wurde und diese wieder geschlossen wurde(Stop oder Ausstiegssignal), dass das System wieder eine neue Position eingeht, wenn das StopBuy-Limit wieder überschritten wird. Das soll aber vermieden werden. Das System soll erst wieder handeln(Entry), wenn eine weitere Kreuzung der GDe erfolgt ist. Also pro Kreuzung GDe soll max. eine Position eingegangen werden.

Danke für die Hilfe.

dansmo
Mitglied seit 11 Jahre 4 Monate

@ mathe [#5]

If Fast > Slow then Buy("Long") next Bar at EntryLong Stop;

Mit dieser Bedingung wird ja einfach nur geprüft ob der kurze GD größer als der lange GD ist.

Warum schreibst du nicht gleich

If MarketPosition = 0 then begin
If Fast crosses above Slow then Buy nxet bar at High +1 point stop;
end;

mathe
Mitglied seit 11 Jahre 4 Monate

Sorry, dass ich nochmals störe und danke für die Hilfe.

Mit dieser Bedingung kommen wir der Sache schon näher, nach dem Eintritt der Eintrittsbedingung handelt das System nur einmalig. Jedoch entsteht ein anderes Problem, das StopBuy-Limit (High +1 point) gilt nur für die nächste Bar(Buy next bar at High +1 point stop).

Das StopBuy-Limit(mit dem Hoch aus der unmittelbar folgenden Bar nach der Kreuzung der GD) sollte aber solange bestehen bleiben bis eine gegensätzliche Kreuzung (schneller GD schneidet langsamen GD von oben nach unten)stattfindet.
Eigentlich stimmt mein Ursprungsprogramm schon, aber es soll halt nur einmal nach dem Signaleintritt handeln.

he96
Mitglied seit 11 Jahre 4 Monate

@ mathe [#7]

Du hast zwar nich danach gefragt, aber trotzdem: das macht keinen Sinn.

Bei channel breakouts, range breaks etc. macht ein STEHENBLEIBENDES SIGNAL "kauf wenn x überschritten wird" wie du es haben willst Sinn. Mit Deinem crossover macht das keinen Sinn. (Natürlich kann das trotzdem manchmal funktionieren - und manchmal nicht <g>)

gruss hans

PS: du must eine neue variable definieren: z.b. entryhightrigger und durch diese das Kaufsignal auslösen.

mathe
Mitglied seit 11 Jahre 4 Monate

Macht vielleicht schon Sinn, denn dieses Hoch nach dem Kreuzen der GD, wirkt als zusätzlicher Filter. Und dieses StopBuy-Limit soll solange bestehen bleiben, wie auch der schnelle GD über dem langsamen GD bleibt.

Dieser Ansatz ist auch in der August06 Ausgabe des Traders(Trendfolge in Bondmärkten-Teil1). Eigentlich sollte es nicht schwer sein, diesen Ansatz korrekt mit Easy-Language umzusetzen, jedoch habe ich damit einige Probleme und daher habe ich mich hierher gewandt.

Danke für die Hilfe

he96
Mitglied seit 11 Jahre 4 Monate

@ mathe [#9]

Ne Menge codebeispiele findest Du in der Tradestationliste, z.B. hier

http://www.purebytes.com/archives/omega/

Da es -wie selber bemerkt- ein recht simples Problem ist, musst du evtl. mal in die älteren Ausgaben gucken...

gruss hans

dansmo
Mitglied seit 11 Jahre 4 Monate

@ mathe [#9]

Dann ist das Kreuzen an sich doch egal.
Es gibt zwei Zustände...
fast > slow und slow > k.

mathe
Mitglied seit 11 Jahre 4 Monate

Entscheidend ist das Hoch unmittelbar nach dem Kreuzen.
1. Dies ist das StopBuy-Limit solange fast>slow
2. Auf dieses Kreuzen (fast crosses above slow) soll max. einmal gehandelt werden, bis ein erneutes Kreuzen auftritt

dansmo
Mitglied seit 11 Jahre 4 Monate

@ mathe [#12]

So, ich glaube ich habe dich nun richtig verstanden.L etzter Versuch von meiner Seite.

Vars:Trigger(0);

If MarketPosition = 0 and Fast crosses above Slow then begin
Trigger = High;
If Fast) > Slow then buy next bar at Trigger stop;
end;
If MarketPosition = 1 then
ExitLOng next Bar at Slow stop;

mathe
Mitglied seit 11 Jahre 4 Monate

Danke Euch, auch wenn es immer noch nicht ganz geklappt hat.

select
Mitglied seit 11 Jahre 4 Monate

@mathe

Füge doch einen Chart ein und "stelle" das Problem dar.

he96
Mitglied seit 11 Jahre 4 Monate

@ mathe [#14]

was klappt nicht `?

Bildchen mit Pfeilchen !

gruss hans

Rückrufservice
Beschreiben Sie bitte Ihr Anliegen, damit wir uns auf den Rückruf vorbereiten können.
Ja, ich habe die Datenschutzerklärung zur Kenntnis genommen und willige ein, dass die von mir angegebenen Daten inklusive der Kontaktdaten zwecks Bearbeitung der Anfrage und für den Fall von Anschlussfragen elektronisch erhoben und gespeichert werden. Meine Daten werden dabei nur streng zweckgebunden zur Bearbeitung meiner Anfrage genutzt und nicht ohne Einwilligung weitergegeben. Diese Einwilligung kann jederzeit mit Wirkung für die Zukunft widerrufen werden.
Fragen?

Sie haben Fragen zu ZMP Live? Unser Team steht gerne hilfsbereit zu Ihrer Verfügung. Senden Sie uns gerne eine Nachricht:

Es gilt unsere Datenschutzerklärung

Jetzt registrieren

Jetzt registrieren und ZMP Live+ 14 Tage kostenlos testen!
  • Dauerhaft kostenfrei
  • Keine Zahlungsinformationen erforderlich