Dienstag, 16. April 2024, 14:51 UTC+2

Sie sind nicht angemeldet.

  • Anmelden
  • Registrieren

bigpoppa

unregistriert

1

Montag, 1. Februar 2010, 10:17

LMT/STP-Orders wurden vertauscht

Hallo!

Handle zwei EURUSD-Intraday-System über IB live, TWS ist die aktuellste.

Heute in der Früh kam es zu folgendem Problem:
1. Beide Systeme gingen zuerst gleichzeitig LONG
2. Um 7:45 ging System A dann SHORT, Order wurde ordnungsgemäß ausgeführt und STOP bzw. LIMIT Order gesetzt. System B ist weiterhin LONG...
3. Jetzt kommts: Um 7:46 passt Investox die STOP- und LIMIT-Werte der neuen SHORT-Position von System A mit den Werten von System B an, welches ja zu dieser Zeit LONG ist. Dann wurden beide Orders bei IB gefillt was zum Ergebiss führte, dass ich nun in die komplette falsche Richtung positioniert war und das noch mit doppelter Positionsgröße, nicht gut... :(

Hatte zufällig jemand schon mal selbes Problem?

Mein Vertrauen ins Order-Modul ist am Tiefpunkt.

lg

bigpoppa

unregistriert

2

Montag, 1. Februar 2010, 10:37

Hier noch ein paar Infos aus den Protokollen:

Signalprotokoll:
Datum/Uhrzeit Projekt System Titel Signal Basiswert Investition Stücke V-Limit G-Limit Signalzeit Tickzeit Stop-Info
01.02.2010 07:45:01 FX_BreakOut1 EUR_BO1 eurusd_15m_live Enter Short 1,38900 2.500.000.000,00 50000 1,39428 1,38456 01.02.2010 07:30:00 01.02.2010 07:30:00 K/A
01.02.2010 08:00:01 FX_BreakOut1 EUR_BO1 eurusd_15m_live Hold Short 1,38840 2.500.000.000,00 50000 1,39428 1,38456 01.02.2010 07:45:00 01.02.2010 07:45:00 K/A

Orderprotokoll:
Uhrzeit ID OCA-Group Aktion Anzahl Symbol Titeltyp Laufzeit BasisPreis Ausübung Börsenplatz Währung Ordertyp Limit 1 Limit 2
***BEIDE SYSTEME GEHEN LONG***
01.02.2010 03:15:01 786 BUY 50000 EUR CASH 0 IDEALPRO USD LMT 1,38555 0
01.02.2010 03:15:01 787 BUY 50000 EUR CASH 0 IDEALPRO USD LMT 1,38555 0
01.02.2010 03:21:49 788 787 SELL 50000 EUR CASH 0 IDEALPRO USD STP 0 1,3811
01.02.2010 03:21:49 789 787 SELL 50000 EUR CASH 0 IDEALPRO USD LMT 1,3958 0
01.02.2010 03:21:49 790 786 SELL 50000 EUR CASH 0 IDEALPRO USD STP 0 1,3811
01.02.2010 03:21:49 791 786 SELL 50000 EUR CASH 0 IDEALPRO USD LMT 1,3958 0
***SYSTEM-A GEHT NUN SHORT***
01.02.2010 07:45:01 792 SELL 100000 EUR CASH 0 IDEALPRO USD LMT 1,389 0
01.02.2010 07:45:02 793 792 BUY 50000 EUR CASH 0 IDEALPRO USD STP 0 1,39435
01.02.2010 07:45:02 794 792 BUY 50000 EUR CASH 0 IDEALPRO USD LMT 1,3846 0
***NUN WERDEN DIE LMT/STP-ORDER PLÖTZLICH VERTAUSCHT, OFFENSICHTLICH MIT DEN AKTUELLEN WERTEN VON SYSTEM B, SIEHE OBEN***
01.02.2010 07:46:01 793 792 BUY 50000 EUR CASH 0 IDEALPRO USD STP 0 1,3811
01.02.2010 07:46:01 794 792 BUY 50000 EUR CASH 0 IDEALPRO USD LMT 1,3958 0

Getradet wird mit Close-Delay 0,Komprimierung 15min,Aktualisierung zu jeder Minute

Bernd

Experte

Registrierungsdatum: 5. Juni 2005

Beiträge: 4 070

Wohnort: Iringsweg

3

Montag, 1. Februar 2010, 11:11

Komprimierung 15min,Aktualisierung zu jeder Minute

Verwendest Du unvollendete Perioden? (Die Vermutung liegt nahe, weil Du bei 15 Minuten Komprimierung jede Minute aktualisierst.)
Gruss
Bernd

bigpoppa

unregistriert

4

Montag, 1. Februar 2010, 11:23

Unvollendete Perioden ist aktiviert, wobei dies nicht der Grund sein kann, da sich das Signal nachträglich nicht geändert hat. Des weiteren ist sichergestellt das die Periode "vollendet" ist, da die Daten ausserhalb von Investox komprimiert werden. Sprich Investox bekommt die Daten über eine ASCII-Datei geliefert:

2010-02-01 09:45:00,1.38770,1.38945,1.38765,1.38930
2010-02-01 10:00:00,1.38930,1.39070,1.38930,1.38935
2010-02-01 10:15:00,1.38935,1.39090,1.38935,1.39065
2010-02-01 10:30:00,1.39065,1.39110,1.39050,1.39080
2010-02-01 10:45:00,1.39080,1.39135,1.38995,1.39135
2010-02-01 11:00:00,1.39135,1.39160,1.39085,1.39110
...

Mein Verdacht liegt eher im Bereich des fortlaufenden Anpassens der Verlust- und Gewinn-Stops, wobei offensichtlich die beiden Systeme vertauscht wurden. Möglicherweise liegt hier ein Bug im Order-Modul vor?

Investox

Administrator

Registrierungsdatum: 31. August 2002

Beiträge: 5 680

5

Montag, 1. Februar 2010, 11:28

Hallo,

was steht denn in den Order-Details der beiden Orders 793 und 794 (die Bemerkungen unten)?

Viele Grüße

Andreas Knöpfel

bigpoppa

unregistriert

6

Montag, 1. Februar 2010, 11:34

Hallo Hr. Knöpfel!

793:
07:45:02: Sicherheits-Verluststop
07:46:01: Verluststop wurde durch HS-Stop angepasst von 1,39435 auf 1,3811
07:46:02: Order wurde von einer anderen Order der selben OCA-Gruppe mitgestrichen.

794:
07:45:02: Sicherheits-Gewinnstop
07:46:01: Gewinnstop wurde durch HS-Stop angepasst von 1,3846 auf 1,3958


Grundsatzfrage:
Ist es überhaupt möglich zwei Handelssysteme in der selben Projektdatei gleichzeitig auf den selben Titel traden zu lassen?

lg

Investox

Administrator

Registrierungsdatum: 31. August 2002

Beiträge: 5 680

7

Montag, 1. Februar 2010, 11:38

Hallo,

das ist natürlich möglich. Ich kann eigentlich auch ausschließen, dass die Sicherheitsstops eines HS sich auf die Orders eines anderen HS auswirken, da hier eine Abfrage des System-Keys erfolgt (habe ich gerade nochmal geprüft). Kann die Anpassung nicht durch die Stops von System A selbst erfolgt sein?

Viele Grüße

Andreas Knöpfel

Bernd

Experte

Registrierungsdatum: 5. Juni 2005

Beiträge: 4 070

Wohnort: Iringsweg

8

Montag, 1. Februar 2010, 11:47

Ein interessantes Problem. Auf den ersten Blick scheint Deine Argumentationskett stimmig und deutet Richtung ORM. Allerdings laufen hier ebenfalls mehrere Systeme z.T. auf den gleichen Titel, und das ORM hat sich in der Richtung bei mir noch nicht "verschluckt". In sofern würde ich schon der Aussage von Herrn Knöpfel zustimmen.

Was ist denn der Grund, dass Du unvollendete Perioden verwendest und jede Minute aktualisierst, wenn der Feed doch nur alle 15 Minuten einliefert? Dies scheint mir ohne weitere Erklärung ziemlich unlogisch und birgt in Verbindung mit Close Delay 0 (was man einfach nicht einsetzt mit unvollendeten Perioden, gehört ganz einfach zu den dont's!) möglicherweise trotzdem Probleme. Ich kenne Dein Coding nicht, aber es kann bei dieser ungünstigen Einstellung natürlich Coding-Strecken geben, die während der laufenden Periode ändern, obwohl Dein primärer Feed keine neuen Daten einliefert.

Auffällig scheint mir noch: obwohl Du Stein und Bein schwörst, dass trotz unvolendeter Perioden keine Änderung auftreten können - die Order-Änderungen sind genau auf der Minuten-Grenze, aber nicht auf den 15 Minuten Bounds ...
Gruss
Bernd

bigpoppa

unregistriert

9

Montag, 1. Februar 2010, 11:55

Ok wenn dies ausgeschlossen werden kann, dann besteht nur mehr die Möglichkeit, das die STOPs "zurückspringen". Ignorieren wir mal das zweite System und gehen von einem System aus:

***SYSTEM GEHT LONG***
01.02.2010 03:15:01 786 BUY 50000 EUR CASH 0 IDEALPRO USD LMT 1,38555 0
01.02.2010 03:21:49 790 786 SELL 50000 EUR CASH 0 IDEALPRO USD STP 0 1,3811
01.02.2010 03:21:49 791 786 SELL 50000 EUR CASH 0 IDEALPRO USD LMT 1,3958 0
***SYSTEM GEHT NUN SHORT***
01.02.2010 07:45:01 792 SELL 100000 EUR CASH 0 IDEALPRO USD LMT 1,389 0
01.02.2010 07:45:02 793 792 BUY 50000 EUR CASH 0 IDEALPRO USD STP 0 1,39435
01.02.2010 07:45:02 794 792 BUY 50000 EUR CASH 0 IDEALPRO USD LMT 1,3846 0

***Nun springen die STOP-Werte zurück auf die vorherige Periode, wo das System noch LONG war, siehe Order 790 und 791.
01.02.2010 07:46:01 793 792 BUY 50000 EUR CASH 0 IDEALPRO USD STP 0 1,3811 ---> 790
01.02.2010 07:46:01 794 792 BUY 50000 EUR CASH 0 IDEALPRO USD LMT 1,3958 0 ---> 791

Entry und Exit ist eingestellt auf Close, Delay 0

bigpoppa

unregistriert

10

Montag, 1. Februar 2010, 12:08

@Bernd
Die Einstellung "unvollendete Perioden" ist nicht zwingend erforderlich, werde dies zukünftig deaktivieren.

Ich aktuallisiere zu jeder Minute, da der IB-Feed bekannterweise mal abreissen kann und deswegen die Daten erst nach dem Backfill verfügbar sind. Da ich die Daten selbst aufzeichne und in eine ASCII-Datei komprimiere, ist nicht immer 100%ig sichergestellt, dass die Daten alle 15 Minuten punktgenau vorhanden sind. Deswegen aktualisiere ich sicherheitshalber alle Minuten...

Irgendwie muss dies jedoch dazu geführt haben, dass die Limit- und Stop-Orders falsche Kurse haben. Wobei der Datenfeed kannst eigentlich nicht sein, denn warum werden genau die Kurse der vorherigen Orders verwendet...

Bernd

Experte

Registrierungsdatum: 5. Juni 2005

Beiträge: 4 070

Wohnort: Iringsweg

11

Montag, 1. Februar 2010, 12:29

Das klingt nach RTT für Arme. Konstellationen mit parallel schreibenden und lesenden Applikationen (eigentlich eine Domäne von Datenbanken, nicht von ASCII Files) bedürfen normalerweise eines koordinierten Enqueue/Dequeue Handlings, oder es muss mindestens durch die verwendete Logik sichergestellt sein, dass nicht unvollständige Daten, sogenannte Inflights, verwendet werden!

Wobei der Datenfeed kannst eigentlich nicht sein, denn warum werden genau die Kurse der vorherigen Orders verwendet...

Bei der Konstellation könnte es doch sein, dass Dein Programm die ASCII Datei just in dem Moment neu geschrieben hat oder in einem Inflight Status war, als Investox drauf zugegriffen hat; da hat es dann vielleicht irgendeinen Wert gegriffen! Schwer das nachzuvollziehen oder dem ORM die Schuld zu geben!

Es ist nichteinmal sichergestellt, das diese Konstellation bei vollendeten Perioden funktioniert, es sei denn, DU kannst sicherstellen, dass die Daten schreibend nicht genau zur 15 Minute Lese-Periode von Investox angefasst werden!
Gruss
Bernd

bigpoppa

unregistriert

12

Montag, 1. Februar 2010, 12:44

Mein "RTT für Arme" liefert die 5s Ticks vom IB Feed innerhalb einer Sekunde in der gewünschten 15min Komprimierung für die letzten 10 Tage. Mich würde mal interessieren, wie schnell das über das Investox-RTT Modul geht, da ich dieses nicht zu Verfügung habe?

Selbst wenn die Daten im ASCII File falsch wären, müsste auch ein anderes Signal generiert werden. Im Signalprotokoll steht aber nur das eine richtige Signal...komisch

Werd mal versuchen den ganzen Ablauf zu reproduzieren...

bigpoppa

unregistriert

13

Montag, 1. Februar 2010, 14:34

Herr Knöpfel,

ich konnte das Verhalten mit dem virtuellen Broker reproduzieren. Es tritt wie beschrieben auf, wenn in der neuen Periode ein Einstiegssignal generiert wird und innerhalb dieser Periode nochmals eine zeitbedingte Aktualisierung erfolgt (z.B. bei 15min Bars, Aktualisierung alle Minuten). Dann kommen die Stop-Kurse durcheinander, sprich diese werden auf die Werte der resultierenden Position aus der vorherigen Periode gesetzt. Ich konnte diese Verhalten abstellen, indem ich bei der zeitbedingten Aktualisierung die Signalberechnung auf neue Perioden eingeschränkt habe.

Eventuell könnten Sie dies bei einem zukünftigen Serviceupgrade berücksichtigen.

Danke

PS: Für weitere Infos bzw. Beschreibungen stehe ich gerne zur Verfügung...

Investox

Administrator

Registrierungsdatum: 31. August 2002

Beiträge: 5 680

14

Montag, 1. Februar 2010, 14:48

Hallo,

>>diese werden auf die Werte der resultierenden Position aus der vorherigen Periode gesetzt.

das kann m.E. aber nur passieren, wenn die zuvor geöffnete Position wieder "verschwindet", wenn also das zuvor aufgetretenen Entersignal wieder revidiert wird. Dann wären natürlich wieder die Stops der (jetzt ja wieder bestehenden) vorigen Position aktiv. Deckt sich dies mit Ihrer Beobachtung?

Viele Grüße

Andreas Knöpfel

bigpoppa

unregistriert

15

Montag, 1. Februar 2010, 14:57

Nein leider nicht, ich lass Ihnen die Projektdatei samt ASCII-Daten und einer Beschreibung zum Reproduzieren per Email zukommen.