Dienstag, 16. April 2024, 18:39 UTC+2

Sie sind nicht angemeldet.

  • Anmelden
  • Registrieren

Lieber Besucher, herzlich willkommen bei: INVESTOX-Forum. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

dubi

Profi

Registrierungsdatum: 1. September 2002

Beiträge: 331

1

Mittwoch, 13. September 2017, 12:37

IB hat Order nicht ausgeführt

Hallo,

Mein HS hat gestern um 06:00 ein Signal (bestehender Long Trade schliessen) an IB gesendet, welches nicht ausgeführt wurde. In den IB-Fehlermeldungen habe ich folgenden Eintrag gefunden:

Quellcode

1
12.09.2017 06:00:32	14	200	Timeout (ID:FixSecDefReqBySymbol2289,EmptyBuffer,Available:0)


vorher und nachher gab es keine Meldungen.

Um 06:16 habe ich dann versucht, über "Handelssystem/Signale jezt versenden" versucht, die Order nochmals aufzugeben. Das hat zu folgendem Eintrag im IB-Fehlerprotokoll geführt:

Quellcode

1
12.09.2017 06:16:05	14	103	Duplicate order id


Ich habe dann den Trade über den "Exit" Knopf im Depot-Fenster manuell geschlossen. Das hat dann funktioniert, allerdings auch eine Fehlermeldung im IB-Log hinterlassen:

Quellcode

1
12.09.2017 06:18:52	14	10147	OrderId 14, die storniert werden soll, wurde nicht gefunden.


Ich verwende das IB-Gateway (Build 963.3h) ein.

Kennt jemand den Grund für die Fehlermeldung und wie ich das künftig vermeiden kann?

Danke!

Ergänzung:
Im Gateway log steht das folgende:

Quellcode

1
2
3
4
5
6
7
8
9
10
06:00:02:888 <- 3-45-14-0-USD-CASH--0---IDEALPRO--DKK-----SELL-25000-MKT-0-0-GTC----0-Investox-14-1-0-0-0-0-0-0-0--0--------0---1-0---0---0-0--0------0-----0-----------0---0-0---0--0-0-0-0--1.79769313486232E+308-1.79769313486232E+308-1.79769313486232E+308-1.79769313486232E+308-1.79769313486232E+308-0----
06:00:12:035 <- 7-3--1-50209015--20170912-05:59:02-----
06:00:12:035 -> ---55-1--1-
06:00:23:057 <- 7-3--1-50209015--20170912-05:59:12-----
06:00:23:057 -> ---55-1--1-
06:00:32:925 -> ---I4-2-14-200-Timeout (ID:FixSecDefReqBySymbol2289,EmptyBuffer,Available:0)-
06:00:33:065 <- 7-3--1-50209015--20170912-05:59:23-----
06:00:33:065 -> ---55-1--1-
06:00:49:029 <- 7-3--1-50209015--20170912-05:59:33-----
06:00:49:029 -> ---55-1--1-


Sieht nach einem Timeout Fehler aus. Ist es demnach so, dass das Gateway keine Verbindung mit IB hatte? In der Konfiguration steht ein Timeout von 30 Sek. Ich würde den nun mal erhöhen (bei meinem HS-Anstz kann die Order auch mal 1-2 min später ausgeführt werden). Die ganze Installation incl. Gateway läuft auf einem Server im professionellen RZ. Die Internetverbindung war auf jeden Fall vorhanden, also evtl. ein disconnect von IB-Server Seite?
Sollte ich den Timeout mal von 30 auf 60 stellen oder habe ich andere Möglichkeiten? 8|

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »dubi« (13. September 2017, 12:59)


Bernd

Experte

Registrierungsdatum: 5. Juni 2005

Beiträge: 4 070

Wohnort: Iringsweg

2

Montag, 18. September 2017, 06:41

Hallo dubi

Meist ist der Unterbruch ja nur ab 6 Uhr CET für 8 bis 10 Minuten. Aber gemäss Beschreibung der IB Server Reset Times kann es auch mal länger sein; und was zu der Zeit seitens IB alles mal grade nicht verfügbar ist, ist auch nicht genau vorhersehbar, siehe Fussnote auf der verlinkten Site.

Also am Besten also das gesamte Reset-Zeitfenster durch passende Handelsregeln herausnehmen, so dass in der Zeit keine Orders generiert werden :)
Gruss
Bernd

dubi

Profi

Registrierungsdatum: 1. September 2002

Beiträge: 331

3

Montag, 18. September 2017, 23:16

Hallo Bernd,

Dass IB die Server um die Zeit neu startet, war mir nicht bewusst - vielen Dank für den Hinweis und die Website! Damit ist das Mysterium auch gelöst und ich muss tatsächlich überlgen, wie ich meine Systeme hier "herumbauen" kann. Für den Moment werde ich hier einfach einen längeren Timeout im Gateway eintragen. Die Wahrscheinlichkeit, dass um 06:00 ein Trade geöffnet oder geschlossen wird, ist eher gering und wenn doch, dann nehme ich für den Moment das Risiko.

Viele Grüsse
-dubi

Bernd

Experte

Registrierungsdatum: 5. Juni 2005

Beiträge: 4 070

Wohnort: Iringsweg

4

Montag, 18. September 2017, 23:32

Hoi dubi

Schön, dass ich raten konnte :)

Das Coding entsprechend anzupassen, sollte auch nicht sehr schwer sein:

Zentral ist die klitze kleine Formel "DatePart(h)*100+DatePart(n)", die man sich am besten als Indikator namens Uhrzeit() implementiert und auf hhmm abfragen kann:
* dann kannst Du in den Enter- und Exit Regeln via mit NOT Zwischen() einfach das Handeln zu diesen Zeiten unterbinden.
* sollte es Stops geben, dann kannst Du dort jeweils in der Zusatzbedingung das Handeln zur IB Server Reset Time via Uhrzeit() Indikator NOT Zwischen() ebenfalls leicht ausschliessen. Das könnte vielleicht so aussehen:


Das nette an dieser Lösung, das passt auch gleich im Backtest, und Du siehst, was Dir allenfalls entgeht, wenn überhaupt. Normal ist um diese Zeit ja nicht gerade der Bär los am Markt ...
Gruss
Bernd

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Bernd« (19. September 2017, 00:22)


dubi

Profi

Registrierungsdatum: 1. September 2002

Beiträge: 331

5

Mittwoch, 20. September 2017, 08:25

Wow - das ist ja mundgerecht serviert, Bernd! Danke für die genauen Erklärungen! :thumbsup:

Bernd

Experte

Registrierungsdatum: 5. Juni 2005

Beiträge: 4 070

Wohnort: Iringsweg

6

Mittwoch, 20. September 2017, 18:59

Gerne doch und danke für das nette Feedback.

Investox ist wirklich Spitze punkto "korrekte" Backtests und dann im vollautomatischen Handel der resultierenden Handelssysteme - und manchmal sind es gerade diese kleinen Tipps, die einem wirklich weiterbringen bei beidem.

Und für solche gegenseitige Hilfestellungen soll das Forum ja schliesslich da sein :)
Gruss
Bernd