2

Python APIでQuickFixを実行し、FIX4.2を使用してTTFIXアダプターに接続しています

ログオンしてマーケットデータリクエストを送信しています。返信は大丈夫です。メッセージログ(画面ログとファイルログの両方)に、次のようなSendingTime(フィールド52)が表示されます。

52 = 20130207-02:38:32.212

ただし、このフィールドを取得して端末またはファイルに出力しようとすると、ミリ秒が削除されることを除いて、すべてが同じです。したがって、結果は常に次のようになります。

52 = 20130207-02:38:32

明らかにこれは悪いことです。ミリ秒が最初に存在し、アクセスしているときにドロップされる理由がわかりません。

たぶん、これはPythonのアーティファクトであり、「。」で属性にアクセスします。キャラクター?しかし、SendingTimeは文字列であり、最後にピリオドが文字列で許可されていることを確認したため、これはばかげているようです。

どんな助けでも素晴らしいでしょう、私は本当に正確なタイムスタンプをファイルに印刷できるようにしたいと思います。

ありがとう、

ワピチ

4

2 に答える 2

1

FieldMapのconst std::string & getField (int field)関数を使用してフィールドを抽出してみてください。これにより、フィールドを日付型に変換しようとせずに、フィールドが文字列として取得されます。少なくともテキストでは、ミリ秒が保持されると思います。

申し訳ありませんが、Pythonがmsを失っている理由を説明できません。Pythonラッパーについてはよくわかりません。

編集:いいえ、正しい答えではありません。ヘッダーからフィールドを抽出していないことを知りませんでした。(もちろん、この関数はヘッダーで引き続き使用できます。)

于 2013-02-12T03:41:47.200 に答える
0

getField関数を指定してヘッダーを確認することで、問題を解決しました。それで:

sendingTime= quickfix.SendingTime()

print sendingTime, "\n"

message.getHeader().getField(sendingTime)

print sendingTime, "\n"

最初に印刷される行は、ミリ秒を四捨五入した送信時間になります(理由はわかりません)。52 = 20130207-02:38:32のようになります。

2番目の印刷行は、実際にはヘッダー(フィールド52が存在する場所)を調べてフィールド全体を取得します。次のようになります。

52 = 20130207-02:38:32.212

message.getField(sendingTime)これは、試したときにフィールドが見つからないというエラーが発生した理由を説明しています。

于 2013-02-12T22:29:56.363 に答える