Quickfix sendingtime (Feld 52) fällt Millisekunden ab

Ich laufe QuickFix mit der Python API und verbinde mit einem TT FIX Adapter mit FIX4.2

Ich melde mich erfolgreich an und schicke eine Marktdatenanforderung. Die Antworten sind gut. In meinen Nachrichtenprotokollen (sowohl Bildschirmprotokolle als auch Dateiprotokolle) bekomme ich ein SendingTime (Feld 52), das so aussieht:

52 = 20130207-02: 38: 32,212

Allerdings, wenn ich versuche, dieses Feld zu bekommen und es an das Terminal oder eine Datei zu drucken, ist alles das gleiche, außer dass die Millisekunden fallen gelassen werden. Also das Ergebnis ist immer:

52 = 20130207-02: 38: 32

Offensichtlich ist das schlecht Ich kann nicht denken, warum die Millisekunden anwesend sein würden, und dann fallen gelassen, wenn ich auf sie zugreifen würde.

Vielleicht ist das ein Artefakt von Python, das mit dem '' 'auf Attribute zugreift. Charakter? Aber das scheint dumm, denn SendingTime ist ein String, und zuletzt habe ich überprüft Perioden wurden in Strings erlaubt.

Jede Hilfe wäre toll, ich würde wirklich gerne in der Lage sein, genaue Zeitstempel in Dateien zu drucken.

Vielen Dank,

Wapiti

  • Unerwartete Ergebnisse von min () und max () Methoden der Pandas Serie aus Timestamp Objekten
  • Extrahiere die Zeit von einer UUID v1 in Python
  • Schreiben Sie ein Python-Skript, um einen Zeitstempel (Unix-Epoch-Wert) jeden Tag zu einem Zeitpunkt zu generieren
  • Überwachen, ob eine Datei gestoppt hat, um in Python zu schreiben
  • Wie bekomme ich eine genaue UTC Zeit mit Python?
  • Konvertieren Zeitstempel in datetime.datetime in pandas.Series
  • Fuzzy-Zeitstempel-Parsing mit Python
  • Wie bekomme ich Millisekunden- und Mikrosekunden-Zeitstempel in Python
  • 2 Solutions collect form web for “Quickfix sendingtime (Feld 52) fällt Millisekunden ab”

    Versuchen Sie, das Feld mit der Feldstruktur st. const std::string & getField (int field) . Das bekommt dein Feld als String, ohne zu versuchen, es in einen Datumstyp umzuwandeln. Ich wette, das wird die Millisekunden bewahren, zumindest textuell.

    Tut mir leid, dass ich nicht helfen kann, warum Python die Frau verliert. Ich weiß nur nicht genug über den Python-Wrapper.

    EDIT: Nein, nicht die richtige Antwort. Ich wusste nicht, dass du das Feld nicht aus dem Header herausgezogen hast. (Du kannst diese Funktion natürlich auch auf dem Header verwenden.)

    Ich habe mein Problem gelöst, indem ich die Funktion getField spezifiziere, um den Header zu betrachten. Damit:

    sendingTime= quickfix.SendingTime()

    print sendingTime, "\n"

    message.getHeader().getField(sendingTime)

    print sendingTime, "\n"

    Die erste gedruckte Linie wird die Sendezeit mit Millisekunden abgerundet (ich habe keine Ahnung warum), sie sieht aus wie 52 = 20130207-02: 38: 32

    Die zweite gedruckte Zeile schaut tatsächlich in den Header (wo Feld 52 wohnt) und bekommt das ganze Feld, es sieht aus wie:

    52 = 20130207-02: 38: 32,212

    Dies erklärt, warum, wenn ich versuchte message.getField(sendingTime) ich ein Feld nicht gefunden Fehler.

    Python ist die beste Programmiersprache der Welt.