如何解决QuickFix c ++不支持的消息类型
我正在使用QuickFix开发C#机器人,并使用Remarkets测试我的应用程序,但是当我破解它们时,我的quickfix引擎几乎拒绝了所有消息。
收到消息:
8=FIXT.1.1|9=116|35=h|34=3|49=ROFX|52=20201026-17:11:49.665|56=user|325=Y|335=NONE|336=[N/A]|340=2|1300=DDA|1301=ROFX|10=228|
从我(客户端)发送到服务器的邮件:
8=FIXT.1.1|9=118|35=j|34=4|49=user|52=20201026-17:11:52.374|56=ROFX|45=3|58=Unsupported Message Type|372=h|380=3|1137=9|10=168|
Application.h
...
void onMessage( const FIX50::TradingSessionStatus& M,const FIX::SessionID& S)
throw( FIX::FieldNotFound,FIX::IncorrectDataFormat,FIX::IncorrectTagValue,FIX::UnsupportedMessageType );
...
Application.cpp:
void Application::fromApp(const FIX::Message& message,const FIX::SessionID& sessionID )
throw(FIX::FieldNotFound,FIX::UnsupportedMessageType)
{
crack( message,sessionID );
}
void Application::onMessage
( const FIX50::TradingSessionStatus& M,const FIX::SessionID& S)
throw( FIX::FieldNotFound,FIX::UnsupportedMessageType )
{
std::cout << "MENSAJE H";
}
FIXT11.xml:
<value enum='h' description='TRADING_SESSION_STATUS'/>
FIX50SP2.xml:
<message name='TradingSessionStatus' msgtype='h' msgcat='app'>
<component name='ApplicationSequenceControl' required='N' />
<field name='TradSesReqID' required='N' />
<field name='MarketID' required='N' />
<field name='MarketSegmentID' required='N' />
<field name='TradingSessionID' required='Y' />
<field name='TradingSessionSubID' required='N' />
<field name='TradSesMethod' required='N' />
<field name='TradSesMode' required='N' />
<field name='UnsolicitedIndicator' required='N' />
<field name='TradSesStatus' required='Y' />
<field name='TradSesEvent' required='N' />
<field name='TradSesStatusRejReason' required='N' />
<field name='TradSesStartTime' required='N' />
<field name='TradSesOpenTime' required='N' />
<field name='TradSesPreCloseTime' required='N' />
<field name='TradSesCloseTime' required='N' />
<field name='TradSesEndTime' required='N' />
<field name='TotalVolumeTraded' required='N' />
<field name='Text' required='N' />
<field name='EncodedTextLen' required='N' />
<field name='EncodedText' required='N' />
<component name='Instrument' required='N' />
</message>
配置文件:
UseDataDictionary=Y
我可以正确覆盖“ onMessage”吗? 拒绝的原因可能是什么?
我发现this帖子中存在类似的问题,他通过更新quickfix解决了该问题。我使用的是从官方网站下载的1.15.1版本。
解决方法
感谢克里斯托夫·约翰!
我正在为FIX50覆盖onMessage,我需要为FIX50SP2覆盖它。
原文:
void onMessage( const FIX50::TradingSessionStatus& M,const FIX::SessionID& S)
throw( FIX::FieldNotFound,FIX::IncorrectDataFormat,FIX::IncorrectTagValue,FIX::UnsupportedMessageType );
已修改,可以正常工作:
void onMessage( const FIX50SP2::TradingSessionStatus& M,FIX::UnsupportedMessageType );
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。