2011-01-05 8 views
0

Ok, hier gehen wir. Das ist eine schwierige Frage. Finanzmarkt.DOM zitiert nach Tiefe zu Delta-Zitaten - jemand eine Idee?

Ich habe eine Handelsanwendung, die ursprünglich für die Rithmic API entwickelt wurde. Aus verschiedenen Gründen verschiebe ich jetzt den Echtzeit-Daten-Feed zu NxCore.

RIthmic hat kein Konzept von "DOM Levels". Ich bekomme Moessages für jedes Zitat mit Volumen, Preis. Wenn ein Angebot ungültig wird, erhält es 0 Volumen. WOrks nice ....

NxCore funktioniert mit Ebenen. Ich bekomme für jedes Level eine andere Nachricht (D1 - D10).

Das Problem ist - ich muss von dieser in die rhythmische Darstellung bewegen, ohne zu viele Fehler/überschüssige Nachrichten zu senden.

Grundsätzlich sieht die isue wie folgt aus:

Wir haben ein DOM etablieren - nur die Elemente hier ignorieren. Interessant ist D1 8 @ 11417

CBOT/YM.Z10 MM D2: 17 @ 11416 vs 10 @ 11421 
CBOT/YM.Z10 MM D3: 10 @ 11415 vs 14 @ 11422 
CBOT/YM.Z10 MM D5: 13 @ 11413 vs 13 @ 11424 
CBOT/YM.Z10 MM D4: 17 @ 11414 vs 12 @ 11423 
CBOT/YM.Z10 MM D9: 12 @ 11409 vs 12 @ 11428 
CBOT/YM.Z10 MM D10: 14 @ 11408 vs 14 @ 11429 
CBOT/YM.Z10 MM D5: 13 @ 11413 vs 16 @ 11424 
CBOT/YM.Z10 MM D6: 20 @ 11412 vs 11 @ 11425 
CBOT/YM.Z10 MM D1: 8 @ 11417 vs 3 @ 11420 
CBOT/YM.Z10 2010-12-14 05:00:20.275000 BestBid 8 @ 11417 

Something happens to he BestBid here..... so now it goes to 11418 

CBOT/YM.Z10 MM D1: 3 @ 11418 vs 3 @ 11420 
CBOT/YM.Z10 MM D2: 10 @ 11417 vs 10 @ 11421 
CBOT/YM.Z10 MM D3: 17 @ 11416 vs 14 @ 11422 
CBOT/YM.Z10 MM D4: 10 @ 11415 vs 12 @ 11423 
CBOT/YM.Z10 MM D5: 16 @ 11414 vs 16 @ 11424 
CBOT/YM.Z10 MM D6: 13 @ 11413 vs 11 @ 11425 
CBOT/YM.Z10 MM D7: 17 @ 11412 vs 6 @ 11426 
CBOT/YM.Z10 MM D8: 12 @ 11411 vs 5 @ 11427 
CBOT/YM.Z10 MM D9: 18 @ 11410 vs 12 @ 11428 
CBOT/YM.Z10 MM D10: 12 @ 11409 vs 14 @ 11429 
CBOT/YM.Z10 2010-12-14 05:00:30.325000 BestBid 3 @ 11418 

And that gives ups 10 updates just to move the DOM on the bid side. What I would need here is 2.... 
0 @ 11417 
18 @ 11409 

Jede Zeile ein separater Rückruf in meinen Code (oder Ereignis, wenn Sie diesen Begriff verwenden mögen). Ich weiß schon, dass ich etwas Art von Puffer (D1 - D10 auf beiden Seiten, Gebot und Nachfrage, mit Preis, Niveau und Volumen) behalten muss. Mein Hauptproblem sind alle Randfälle. Wenn sich ein Volume ändert, gleichen DOM-Level, gleicher Preis - einfach.

Aber wenn sich das DOM wie oben bewegt, bekomme ich 10 Updates, aber die meisten müssen für mich weggeworfen werden.

Wer eine Idee? Beachten Sie auch, dass D1 - D10 nicht unbedingt die nächsten 10 Preise behandelt - manchmal (außerhalb der Stunden) gibt es Lücken ... was die Sache wirklich fies macht. Ich weiß, dass ich, wenn ich eine D1 oder D10 bekomme, alle gemeldeten Gegenstände "weiter unten" in die Leitung werfen kann. Aber mein Problem ist meistens um Lücken ...

Oh, und es muss schnell sein. Wie 200.000 Nachrichten pro Sekunde manchmal.

Wer ist eine schlaue Idee?

Antwort

0

Haben Sie eine DOM-Leiter für jedes Symbol, dem Sie folgen (zwei separate Arrays, eins für Gebot, eins für ask).

Dies muss groß genug für jede Art von Volatilität, die erwartet werden könnte, dimensioniert werden. Normalerweise werden 2000 Level für einen Tag ausreichen. Kein Problem mit modernen Computerspeichern, auch wenn Sie mehrere Symbole gleichzeitig verfolgen.

Wenn ein DOM-Ereignis kommt in nur - Aktualisiere die Lautstärke auf dem entsprechenden Preisniveau - Aktualisierte den Index des aktuellen innerhalb Gebotes oder fragen (wenn diese Informationen auch mit der Veranstaltung kommen)

Mit anderen Worten ignorieren die "DOM level" Informationen schreiben Sie einfach das Volume an die entsprechende Stelle.

Es kann davon ausgegangen werden, dass es keine "Löcher" im DOM gibt, die Ebenen sind immer in einem Tick-Abstand positioniert (dies ist in Ihrer Probe zu sehen).

Hoffe ich skizzierte diese Idee klar genug. Wenn Sie nicht fragen können.

+0

Schlechte Nachricht ist, dass ich die transaformation in einem Treiber zu tun haben (keine Benutzeroberfläche) für die Archivierung. Jetzt 7xxx Symbole gleichzeitig. Da kommt noch mehr. – TomTom

0

Wenn ich das richtig berechnen: Niveau von 2000 * 8000 Symbole * 4 Byte (Größe) * 2 (Bid/Ask) = 256 MB

Kein Problem mit den heutigen Computern.

Wahrscheinlich 2 Bytes für die Größe würde auch die Arbeit tun, die es auf 128 MB reduziert.

(Btw, wenn ich dieses Recht den Job ist die komplette US-Aktien-Universum über NxCore folgen)

+0

Eigentlich nicht. Es folgt nur ein kleiner Teil der CME-Gruppe - die insgesamt mehr als 200.000 Symbole hat. Die Optionen bloggen die Symbolanzahl auf. – TomTom

Verwandte Themen