2014-11-11 3 views
2

QuickFix 및 Python에서 FIX 4.2를 사용하고 있습니다. 저는 이상한 방식으로 모든 것을하는 데이터 제공 업체 인 CTS에 연결하고 있습니다. 필자는 데이터 사전을 약 4 개월 동안 수정 해왔다.값의 데이터 형식이 올바르지 않습니다. - OrdType

데이터 딕셔너리를 수정하여 해결할 수없는 문제가 발생했지만 DD 문제인 것으로 보입니다. 나 엄청 혼란스러워.

SecurityDefinitionRequest, 35 = c를 보내고 SecurityDefinition, 35 = d를받습니다. 태그 40은 CTS에 의해 FIX 프로토콜에서 크게 변경되었습니다. http://www.ctsfutures.com/wiki/T4%20API%20FIX.Security%20Definition.ashx

태그 40을 문자열로 정의하려고합니다. 그러나 아무리 내가 뭘, 내 QF 엔진은 값 잘못된 데이터 형식으로 메시지를 거부하지 : 40 여기

은 예입니다

(8=FIX.4.2☺9=591☺35=d☺34=15☺49=CTS☺56=XXX☺50=T4FIX☺52=20141111-15:56:11.62 7☺320=1415721370.22☺322=sd-11/11/2014 9:56:11 AM☺323=4☺911=12☺55=YM☺107=SIM:E-mi ni Dow BF:+Dec14-2Mar15+Jun15☺48=XCME_E YM (Z14)-2(H15)(M15)☺
40=2083
(< - 태그 (40)는 여기에있다)

☺207=CME_E☺200=201412☺205=19☺167=FUT☺762=4☺562=1☺15=USD☺1146=5☺5770=1/1☺555=3☺600=YM☺623=1☺624=1☺609=FUT☺602=XCME_E YM (Z14)☺556=USD☺610=201412☺616=CME_E☺620=SIM:E-mini Dow Dec14☺600=YM☺623=-2☺624=2☺609=FUT☺602=XCME_E YM (H15)☺556=USD☺610=201503☺616=CME_E☺620=SIM:E-mini Dow Mar15☺600=YM☺623=1☺624=1☺609=FUT☺602=XCME_E YM (M15)☺556=USD☺610=201506☺616=CME_E☺620=SIM:E-mini Dow Jun15☺10=235☺)

Incorrect data format for value: 2083 <20141111-15:56:11.087, FIX.4.2:XXX->CTS, event> (Message 15 Rejected: Incorrect data format for value:40)

명시 적으로 문제가있는 값

을 지정뿐만 아니라

<field number="40" name="OrdType" type="STRING" allowOtherValues="true"/> 

: 내가 좋아하는, 조합의 모든 종류의 시도

<field number="40" name="OrdType" type="STRING"/> 

참고 : 여기에

내 데이터 사전의 항목입니다

<field number="40" name="OrdType" type="STRING" > 
    <value enum="2083" description="STUPID" /> 
</field> 

아무 것도 작동하지 않습니다. 나는 항상 같은 결과를 얻는다. 값의 데이터 형식이 올바르지 않습니다. 40

무슨 일이 벌어지고 있습니까?

QuickFIX에서
+1

'OrdType' 필드는'char' 타입으로 정의되어 있으므로 사용중인 QuickFIX 버전에서 여러 문자 값이 작동하는지 궁금합니다. 호기심에서, 어떤 종류의 메시지에서 CTS의 비표준 'OrdType'값을 사용할 수 있습니까? 예를 들어'NewOrderSingle' (35 = D)에'40 = 512' (GTC)가 있습니까? 아니면 다른 커스텀'OrdType' 값으로 CTS의 메시지를 받았습니까? –

+1

https : // github.com/quickfix/quickfix/blob/3875882f490e96e721275dfffbbc8ae4b7da2308/src/python/quickfix_fields.py # L654 –

+1

[기본 FIX42.xml 문서] (http://www.quickfixengine.org/FIX42.xml) (QF I 버전 당신이 사용하고 있다고 가정 할 때)''을 정의합니다. –

답변

1

OrdType class이 소요 quickfix.CharField :

class OrdType(quickfix.CharField): 
    def __init__(self, data = None): 
     if data == None: 
      quickfix.CharField.__init__(self, 40) 
     else: 
      quickfix.CharField.__init__(self, 40, data) 

the default FIX42.xml 문서에 OrdType에 대한 정의는 본 확증 : 따라서

<field number="40" name="OrdType" type="CHAR"> 인바운드 FIX에 OrdType위한 string 값 메시지를 보내면 QuickFIX가 잘못된 데이터를 포함하는 메시지를 거부합니다. OrdType의 값이 CTS 사용자 지정 값으로 인바운드 및 아웃 바운드 메시지를 수용 할 수 있도록 QuickFIX를 수정해야합니다.

+1

그게 다야! 감사. – Wapiti

관련 문제