2016-08-16 1 views
1

QuickFIX는 들어오는 FIX 메시지의 모든 필드를 한 번에 가져올 수 있습니까? (. 내가 파이썬 버전 1.14.3을 사용)QuickFIX로 수신 된 FIX 메시지의 모든 기존 필드 가져 오기

QuickFIX 문서에 따르면, 특정 방법으로 필드 값을 얻을 수있다 :

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

다양한 메시지 유형이 다른 분야를 포함, 그래서 위해 그 일을 모든 분야는 어색 할 것입니다. 또한 메시지에 필드가 있는지 여부도 알 수없는 경우가 있습니다. 메일의 모든 입력란에 포함 된 입력란을 알지 못하게하려면 어떻게해야합니까?

+0

메시지의 모든 필드를 가져와야하는 이유는 무엇입니까? Quickfix는 메시지의 유효성을 검사합니다. 즉, 필수 필드가 있는지 확인한 다음 거부하거나 수락합니다. 설정을 사용하여 코드에서 수행하십시오. 특정 필드를 표시하려면 해당 필드를 필수로 표시하고 거래 상대방이 이에 동의하도록하십시오. – DumbCoder

+0

많은 다른 유형의 필드를 포함 할 수있는 여러 가지 종류의 FIX 메시지를 받아야하기 때문에 원하는 것이므로 모든 필드를 하나의 특종으로 가져 오는 것이 모든 종류의 메시지를 가져올 필드를 결정하는 것보다 훨씬 쉽습니다. 그렇게하면 시간이 많이 걸리고 코드가 복잡해집니다. –

+0

'다른 종류의 고정 메시지'무엇을 의미합니까? 다른 버전? 또는 다른 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 메시지를 할 것입니다.