首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >市场数据请求- FieldNotFound异常

市场数据请求- FieldNotFound异常
EN

Stack Overflow用户
提问于 2011-08-12 19:53:08
回答 1查看 315关注 0票数 0

我不断得到FieldNotFound异常时,试图订阅一个外汇符号的报价。尽管我添加了所有必需的标记以及更多。

(它们是: MDReqID、SubscriptionRequestType、MarketDepth、NoMDEntryTypes、MDEntryType、NoRelatedSym、Symbol。如下所示:http://www.onixs.biz/tools/fixdictionary/4.2/msgType_V_86.html)

下面是我的代码:

代码语言:javascript
复制
Dim l_msg As New QuickFix42.MarketDataRequest(
 New MDReqID(System.Guid.NewGuid.ToString),
 New SubscriptionRequestType(SubscriptionRequestType.SNAPSHOT_PLUS_UPDATES),
 New MarketDepth(1))

l_msg.setField(New MDUpdateType(1))
l_msg.setField(New AggregatedBook(False))
l_msg.setField(New NoMDEntryTypes(2))
l_msg.setField(New MDEntryType("0"c))    
l_msg.setField(New NoRelatedSym(1))
l_msg.setField(New Symbol("EUR/USD"))

Session.sendToTarget(l_msg, SENDER_COMP_ID.Value, TARGET_COMP_ID.Value)

这里我漏掉了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-13 04:26:52

找到问题:

toApp方法正在使用PossDupFlag检查重复项,如果不存在,则抛出FieldNotFound异常。

解决方案是使用检查PossDupFlag是否存在的条件对其进行包装,或者在发送之前将此字段添加到消息中:

代码语言:javascript
复制
Public Sub toApp(p_msg As QuickFix.Message, Param1 As QuickFix.SessionID) Implements QuickFix.Application.toApp
        Try
            Dim l_possDupFlag As New QuickFix.PossDupFlag

            If p_msg.isSetField(l_possDupFlag) Then
                p_msg.getHeader().getField(l_possDupFlag)
                If (l_possDupFlag.getValue()) Then
                    Dim donotsendEx As New QuickFix.DoNotSend
                    Throw donotsendEx
                End If
            End If            

        Catch ex As QuickFix.FieldNotFound
            Log.WriteLine("toApp", ex.ToString)
        Catch ex As Exception
            Log.WriteLine("toApp", ex.ToString)
        End Try
    End Sub
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7039711

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档