Dienstag, 16. April 2024, 07:36 UTC+2

Sie sind nicht angemeldet.

  • Anmelden
  • Registrieren

cnolte

Profi

Registrierungsdatum: 23. November 2006

Beiträge: 399

1

Mittwoch, 28. Mai 2008, 10:43

HS zum Einstoppen in Positionen: Wie Stop-Loss Signale definieren?

Hallo zusammen,

bei folgender Aufgabe benötige ich Eueren Rat:

Ich habe ein HS, welches bisher die Enter-Signale zum Signalzeitpunkt in Investox erzeugt und dann via ORM an die TWS als Market Orders schickt. Dieses System möchte ich so umschreiben, dass vor dem eigentlichen Signalzeitpunkt eine Stopp Order zum Einstoppen in die Position an die TWS geschickt wird.

Dazu wird aus dem eigentlichen Enter-Signal eine Setup-Komponente abgetrennt, die dann als Signalgeber in Investox eine Stopp-Order zum Einstoppen in eine Position auslöst. (Dies wird so auch im ORM-Handbuch dargestellt.)

Beispiel (aus dem Handbuch):

Das vollständige Enter Long Signal ist:

1. MACD hat 100 von unten nach oben durchkreuzt (Setup) und
2. High dieses Tages übertrifft das High des Vortages.

Dann löst die Setup-Komponente unter 1. ein Kaufsignal aus, so dass eine Stop-Buy Order mit Stoplevel High des Vortages plus 1 Tick an die TWS geschickt wird.

Mein Problem dabei ist, dass nun schon durch das Setup (MACD-Cross) die Verluststopps in Investox scharfgeschaltet werden. Die Verluststopps können also schon ausgelöst werden, noch bevor die Stop-Buy Order am Markt ausgeführt worden ist. Wenn das passiert, sitzt man plötzlich auf einer Short Position. Das konnte ich gestern (glücklicherweise im Papertrading) beobachten.

Ich bin noch unentschlossen, wie ich dieses Problem mit den Stop-Loss Signalen am besten umgehen soll. Daher meine Frage:

Wie handhabt Ihr die Stopps in Handelssystemen, die zum Einstoppen in Positionen ausgelegt sind, so dass die Verluststopps nicht greifen, bevor eine Position tatsächlich eröffnet ist?

Vorschlag an Herrn Knöpfel:

Auf dieses Problem mit den Verluststopps (und am besten auch auf eine Lösungsmöglichkeit) sollte an der entsprechenden Stelle im ORM-Handbuch hingewiesen werden.

Viele Grüße
Cornelius

Lenzelott Männlich

Experte

Registrierungsdatum: 30. Dezember 2002

Beiträge: 3 050

Wohnort: Giessen

2

Mittwoch, 28. Mai 2008, 11:30

Hallo Cornelius,

welche Einstellungen hast du denn im ORM gemacht?

Ordereinstellung / Optionen:
Stückzahl Depot/Handelssystem abgleichen (dürfte für Dein Problem wohl eher nicht relevant sein, gibt aber dazu auch ein paar threads hier)
Sicherheitsstops mit Enter-Order aufgeben. (Damit solltest Du das Problem eigentlich in den griff bekommen).
Das sagt die Hilfe dazu:

Zitat

Interactive Brokers

Sicherheitsstops mit Enter-Order aufgeben: Wenn diese Option aktiviert wird, werden die definierten Sicherheitsstops direkt beim Platzieren der Enter-Order als Kombinations-Bracketorder mit aufgegeben. Dies hat den Vorteil, dass die Position nach einem Fill abgesichert ist (sofern die Stops korrekt sitzen), auch wenn die Verbindung von Investox zu IB bis zum Fill abbricht. Da der Ausführungspreis bei der Orderaufgabe noch nicht feststeht, werden die relativen Limits der Sicherheitsstops wie folgt berechnet:

Bei Limit und Stoplimit-Orders in bezug auf das Limit

Bei Stop-Orders in Bezug auf das Stoplimit

Bei Market-Orders in Bezug auf den Signalkurs der Order

Sobald an Investox gemeldet wird, dass die Enter-Order gefillt ist, wird die Kombinations-Bracketorder gestrichen und durch neue Sicherheitsstops ersetzt. Der Grund hierfür ist zum einen, dass hierbei die Limits an den tatsächlichen Ausführungskurs angepasst werden. Zum anderen wird dabei die gesamte Depotposition abgesichert, während die Kombinations-Bracketorder nur die Enter-Order absichert (dies kann zum Beispiel beim „Nachkaufen" relevant sein).



Wie der VB damit umgeht, weiß ich allerdings nicht.
Ich könnte mir auch noch vorstellen, dass in Deinem IV-Depot noch von vorherigen Tests ein Bestand rumstand und daher wurden die Stops bereits vor dem realen Fill benutzt.
If you think it´s expensive to hire a professional, wait until you hire an amateur.

cnolte

Profi

Registrierungsdatum: 23. November 2006

Beiträge: 399

3

Mittwoch, 28. Mai 2008, 12:20

Hallo Joachim,

danke für Deinen Hinweis.

Der Sicherheitsstopp, der mit der Stop-Enter Order aufgegeben wird, ist doch nur als Sicherheitsnetz (Katastrophenschutz) gedacht - insbesondere wenn die Verbindung Investox - IB unterbrochen wird.

Er ersetzt kein Verluststopp-System, wie man es in Investox selbst mit verschiedenen Stopp-Arten definieren kann.

Ich möchte schon diese von mir in Investox definierten Stopps verwenden (drei verschiedene Stopps, z.B. ein ATR-Tailer). Diese sollen aber erst aktiviert werden, wenn die Position tatsächlich eröffnet worden ist. Das lässt sich durch einen im ORM mitgegebenen Sicherheitsstopp nicht ersetzen (oder?).

Viele Grüße
Cornelius

Lenzelott Männlich

Experte

Registrierungsdatum: 30. Dezember 2002

Beiträge: 3 050

Wohnort: Giessen

4

Mittwoch, 28. Mai 2008, 13:00

Hallo Cornelius,


Ich habe das aktuell wie folgt gelöst.

1. Ich habe immer einen verluststop im system, der auch als Katstrophenschutz dient, den rechne ich % aus und gebe die Globale variable ins ORM.
2. die anderen stops bekommen Zusatzbedingunen

Quellcode

1
2
(#_Depot_Pos#<>0 and backtest=0  ) or
backtest=1


wobei backtest eine globale Konstante ist, die entweder 0 ist für Echthandel oder 1 für den backtest.
mit depot_pos fragst Du ab, ob Du schon gefillet bist. Wenn Du getrennte stops für Long und short hast musst das natürlich anpassen.
If you think it´s expensive to hire a professional, wait until you hire an amateur.

cnolte

Profi

Registrierungsdatum: 23. November 2006

Beiträge: 399

5

Mittwoch, 28. Mai 2008, 13:14

Hallo Joachim,

die Verwendung von #_Depot_Pos# bedeutet aber, dass sämtliche Stopps (also z.B. auch ein einfacher ATR-Trailer) als Anwenderstopps definiert werden müssen, oder? Im eigentlichen ATR Trailing Stopp ist dieses Schlüsselwort ja nicht verfügbar.

Da Anwenderstopps ja eher zeitaufwändig sind, wollte ich hier einmal nachhören, ob noch weitere Lösungsansätze existieren.

Viele Grüße
Cornelius

Lenzelott Männlich

Experte

Registrierungsdatum: 30. Dezember 2002

Beiträge: 3 050

Wohnort: Giessen

6

Mittwoch, 28. Mai 2008, 13:34

bei mir funktioniert dass auch in einem einfachen Intraday Stop oder Trailingstop.

Aber obacht:
du musst auch in deinen Exitbedingunegn was ändern.
Wenn der Stop nicht gegriffen hat innerhalb Deines Zeitfensters, dann musst du einen Exit machen, damit der Stop aus de3m markt genommen wird.

Bei mir sieht dass dann für Exit Long so aus.

Quellcode

1
2
3
If(backtest=1,0,1)*
(Ref(close,-1)<Ref(GD(close,gd_perioden,S),-1) or Not(zeitfenster)) and 
#_Depot_Pos#=0


Ich schick Dir eine PN mit Demoprojekt, das funktioniert prima, so.
If you think it´s expensive to hire a professional, wait until you hire an amateur.

cnolte

Profi

Registrierungsdatum: 23. November 2006

Beiträge: 399

7

Mittwoch, 28. Mai 2008, 14:06

Hallo Joachim,

danke für Deine Hinweise und den tollen Service! Um so mehr, als das entsprechende Handelssystem im Prinzip auch von Dir ist! (Hast Du Dir wahrscheinlich ja schon gedacht. ^^ )



Viele Grüße
Cornelius

cnolte

Profi

Registrierungsdatum: 23. November 2006

Beiträge: 399

8

Mittwoch, 28. Mai 2008, 14:21

Da fällt mir noch auf:

Mit dem Stopp, der nach dem Zeitfenster aus dem Markt genommen werden soll, meinst Du den Sicherheitsstopp, welcher mit der Stop Enter Order in den Markt gegeben wurde, oder?

Die anderen Investox Stopps (egal ob Anwenderstopps oder andere, z.B. der Intraday Verluststopp) können wg. der Bedingung #_Depot_Pos# <> 0 ja nur bei bestehender Position und ensprechendem Kursverlauf ausgelöst (und an die TWS geschickt) werden.

Grüße
Cornelius

Lenzelott Männlich

Experte

Registrierungsdatum: 30. Dezember 2002

Beiträge: 3 050

Wohnort: Giessen

9

Mittwoch, 28. Mai 2008, 15:31

Mit dem Stopp, der nach dem Zeitfenster aus dem Markt genommen werden soll, meinst Du den Sicherheitsstopp, welcher mit der Stop Enter Order in den Markt gegeben wurde, oder?


Da habe ich mich missverständlich ausgedrückt.

Ich meine die stopenterorder.
Wenn die nicht in der von dir erwarteten Zeit greift, musst Du einen Exitmachen, sosnt bleibt der stop aktiv.

In Deinem fall mußt Du eine Exitorder auf die MACD Bedingung einstellen, in Abhängigkeit von Backtest=0/1;

Wenn der MACD nicht mehr dort steht, wo er für ein Enter sein soll mußt Du mit einem Exit die Stoporder löschen.
wichtig dabei, dass Du im ORM eingestellt hast: Exit löscht offene orders.
If you think it´s expensive to hire a professional, wait until you hire an amateur.