我对ICE测试平台有一个相当简单的quickfix / n设置,但此端的引擎拒绝交易捕获报告(ae) - 说明字段828(TrdType)的值具有不正确的数据格式。
看起来交换机正在发送quickfix不期望的数据('S')。一切都应该是44 ..这可能是版本问题还是交换只是行为不端?
initiator.config
ValidateFieldsOutOfOrder=N
ValidateFieldsHaveValues=N
ValidateUserDefinedFields=N
DataDictionary=../../spec/FIX44.xml
订阅代码
public TradeCaptureReportRequest ReportRequestSubscribe()
{
TradeCaptureReportRequest req = new TradeCaptureReportRequest(new TradeRequestID("187345347856"), new TradeRequestType(TradeRequestType.ALL_TRADES));
req.SubscriptionRequestType = new SubscriptionRequestType(SubscriptionRequestType.SNAPSHOT_PLUS_UPDATES);
return req;
}
致电代码
if (_initiator.IsLoggedOn)
{
MessageFactory mFact = new MessageFactory();
fixApp.sendMessage(mFact.ReportRequestSubscribe());
}
AD和AQ消息
8=FIX.4.49=9435=AD34=249=1006350=testsubid52=20140210-11:40:39.44556=ICE263=1568=187345347856569=010=231
8=FIX.4.49=10035=AQ34=249=ICE52=20140210-11:40:39.60056=1006357=testsubid568=187345347856569=0749=0750=010=042
AE和拒绝消息
20140210-16:14:03.693 : 8=FIX.4.49=71235=AE49=ICE34=352=20140210-16:14:03.68156=1006357=testsubid571=386487=0856=0828=S150=F17=5325010939=2570=N55=279100548=BRZ SMZ0014_OMCE000000413211121422=8461=OCXXXX202=4.139403=90855287916=20141201917=2014123132=1.031=2.639018=19022=175=2014021060=20140210-16:14:00.5189413=0552=154=137=5325010911=53250109453=11448=scadv-block447=D452=11448=36 South Capital Advisors LLP447=D452=13448=8449447=D452=56448=PVM Oil Associates Ltd-Broker447=D452=1448=10063447=D452=61448=ice_hd447=D452=12448=8449447=D452=35448=8745447=D452=4448=38023447=D452=51448=JP Morgan Securities LLC447=D452=60448=W447=D452=54376=1010000042303dab89ac4149928cb31a46d4c76b0210=060
20140210-16:14:03.855 : 8=FIX.4.49=12535=334=349=1006350=testsubid52=20140210-16:14:03.85356=ICE45=358=Incorrect data format for value371=828372=AE373=610=104
20140210-16:14:03.847 : Could not convert field: Could not convert string to int (S): The first character must be a digit or a minus sign
20140210-16:14:03.853 : Message 3 Rejected: Incorrect data format for value (Field=828)
并且quickfix组件引发了一个真正的错误:
A first chance exception of type 'QuickFix.FieldConvertError' occurred in QuickFix.dll
A first chance exception of type 'QuickFix.IncorrectDataFormat' occurred in QuickFix.dll
答案 0 :(得分:1)
查看您的拒绝消息(为了便于阅读,我添加了字段分隔符):
8=FIX.4.4|9=125|35=3|34=4|49=10063|50=testsubid|52=20140210-16:05:44.231|56=ICE|45=4|58=Incorrect data format for value|371=828|372=AE|373=6|10=101
参见字段371和372.这些字段告诉您字段828在AE消息中是错误的。字段45告诉您被拒绝的AE消息具有序号= 4。
从那里你应该能够找出发送给你的坏字段。
关于您的ICE特定问题:
检查ICE的最新规范(此答案时为2.0.34)。 “S”确实是一个有效的值。您需要使用所有有效值更新DD,或者只是将字段更改为字符串(或字符串)并完全删除枚举列表。如果删除枚举列表,QF / n将接受任何正确类型的值(例如字符串或字符)。
答案 1 :(得分:0)
网站上说你应该使用dictonary数据并且你违反规则。您目前得到的错误不是目前需要关注的领域。
字段828(TrdType)的值
的数据格式不正确
虽然这是你应该研究的真正问题。