3

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

ログオンして、2つの商品の市場データリクエストを送信しています。これは正常に機能し、機器からのデータは期待どおりに受信されます。メッセージからいろいろな情報を得ることができます。

ただし、Symbol(フラグ55)フィールドを取得するのに問題があります。

    import quickfix as fix

    def fromApp(self, message, sessionID):

        ID = fix.Symbol()
        message.getField(ID)
        print ID

これは、私に届く最初のメッセージ[最初のマーケットデータスナップショット(フラグ35 = W)]に対して機能します。インクリメンタルリフレッシュ(フラグ35 = X)を取得し始めると、Symbolフィールドを取得できなくなります。到着するすべてのメッセージは、FieldNotFoundエラーになります。

メッセージタイプがWかXかに関係なく、ログには常にSymbolフィールドが存在するため、これは混乱を招きます。

シンボルが更新メッセージのヘッダーにあると考えて、get.Field(ID)35=Wおよびget.Header().getField(ID)35=Xの場合に試しましたが、これは機能しませんでした。

誰かが私がここで何が起こっているのか理解するのを手伝ってもらえますか?コンピューターがどの機器を見ているのかを明示的に伝えられるようにしたいと思います。

ありがとう

4

1 に答える 1

5

あなたの質問は非常に単純ですが、いくつかの誤解も混ざっています。

1)シンボルがヘッダーに含まれることはありません。ボディフィールドです。

2)Xメッセージでは、シンボルは繰り返しグループにあります。最初に、を使用してグループオブジェクトを取得し、次にそのmsg.GetGroup()からシンボルを取得する必要があります。繰り返しグループのドキュメントページから、このサンプルコードを参照してください。

3)Wメッセージでは、シンボルはグループに含まれていません。それがそこであなたのために働く理由です。

QuickFIXとFIX全般にかなり慣れていないことは明らかです。数分かけて、ドキュメントの「メッセージの操作」セクションをざっと読んでください。

また、FIXimateのWebサイトはあなたの親友になることができます。

于 2013-03-19T00:48:55.913 に答える