2016-08-16 2 views
1

QuickFIXは、着信FIXメッセージの既存のフィールドをすべて一度に取得できますか? (私は、Pythonのバージョン1.14.3を使用)QuickFIXで受信したFIXメッセージの既存のフィールドをすべて取得する

クイックフィックスのドキュメントによれば、特定の方法でフィールドの値を取得することが可能です:

price = quickfix.Price() 
field = message.getField(price) 
field.getValue() 

様々なメッセージタイプはとてもためにそれをやって、異なるフィールドが含まれていますすべてのフィールドは厄介なものになります。さらに、メッセージにフィールドがいくつか存在するかどうかは不明です。どのフィールドにメッセージのすべてのフィールドが含まれているのかわからないようにするにはどうすればよいですか?

+0

メッセージ内のすべてのフィールドを取得する必要があるのはなぜですか?クイックフィックスは、メッセージの有効性をチェックします。つまり、必要なフィールドが存在するかどうかを確認し、それを拒否します。これを行うには、あなたの設定で遊んで、コードでやってください。特定のフィールドを表示させたい場合は、それらを必須としてマークし、カウンターパーティーに同意させてください。 – DumbCoder

+0

多くの異なるタイプのフィールドを含む多くの異なる種類のFIXメッセージを受け取る必要があるため、1つのスクープ内のすべてのフィールドを取得することは、あらゆる種類のメッセージに対してどのフィールドを取得するよりもはるかに簡単です。それは時間がかかり、正当な理由でコードを複雑にすることになります。 –

+0

「異なる種類のFIXメッセージ」とはどういう意味ですか?異なるバージョン?または異なるFIXメッセージ? – DumbCoder

答えて

0

私は方法を知らない。

tags = re.findall(r'(?<=\x01).*?(?==)', str(message))

はその後、FIX = {'1':fix.Account(), '2':fix.AdvId(), ...}、あなたは明らかにあなたがreモジュールをインポートする必要があります

for tag in set(tags)&set(FIX.keys()): 
    message.getField(FIX[tag]) 

を行うことで、すべての値を取得することができます。これは私がmessageで、入ってくるFIXメッセージを何をすべきかです。

関連する問題