我正在使用quickfixj。我有一条自定义消息,例如“ EndTrade”,当收到该消息时,我想结束修复会话吗?我怎样才能做到这一点?我还没有找到任何办法。它不允许我使用new Session().logout()。
我从我的对方得到了一份执行报告,我的quickfix引擎拒绝了它"为此消息类型371 = 1300定义了标记"
似乎在说exec报告有一个非标准的标签(1300),我的quickfix引擎不喜欢它.
但是,我已将该标记添加到我的字典XML文件中,如下所示
<field number="1300" name="MarketSegmentID" type="String" added="FIX.5.0" addedEP="52" abbrName="MktSegID" textId="FIELD_1300">
<enum value="BETP" symbolicName="BETP" textId="ENUM_1300_BETP"/>
<enum value="BGL" symbolicName="BGL" textId="ENUM_1300_BGL"/>
<enum value="BMTF" symbolicName="BMTF" textId="ENUM_1300_BMTF"/>
<enum value="BSEF" symbolicName="BSEF" textId="ENUM_1300_BSEF"/>
</field>
Run Code Online (Sandbox Code Playgroud)
因此它应该知道标签1300.我的对方发送"1300 = BSEF",因此它是有效选择之一.
"为此消息类型定义的标记"究竟是什么意思?我该怎么办?
我正在尝试找到一种检测连接丢失的好方法。
我的适配器是根据示例之一实现为 Fix::Application 的。它使用套接字启动器连接到修复网关。
当我拔掉互联网时,大约需要 30 秒才能触发 Fix::Application 的 onLogout 方法。似乎某些底层类会更早地意识到套接字存在问题。有没有快速的方法来解决这个问题?
当我在我的quickfix配置文件中设置参数FileLogPath(带值:传出)并尝试执行以下操作时:
SessionSettings sessionSettings = new SessionSettings(CfgFile);
FileStoreFactory fileStoreFactory = new FileStoreFactory(sessionSettings);
FileLogFactory fileLogFactory = new FileLogFactory(sessionSettings);
ScreenLogFactory screenLogFactory = new ScreenLogFactory(sessionSettings);
MessageFactory messageFactory = new DefaultMessageFactory();
Run Code Online (Sandbox Code Playgroud)
之后尝试使用以下命令初始化socketInitiator:
socketInitiator = new ThreadedSocketInitiator(application, fileStoreFactory, sessionSettings, fileLogFactory, messageFactory);
Run Code Online (Sandbox Code Playgroud)
我得到例外
QuickFix.ConfigError: Configuration failed: FileLogPath not defined
Run Code Online (Sandbox Code Playgroud)
但是当我为FileLogFactory设置直接路径时
FileLogFactory fileLogFactory = new FileLogFactory("outgoing");
Run Code Online (Sandbox Code Playgroud)
一切都很好.
我究竟做错了什么?
配置文件看起来像这样:
[DEFAULT]
[SESSION]
ConnectionType=initiator
HeartBtInt=30
ReconnectInterval=5
FileStorePath=incoming
FileLogPath=outgoing
SenderSubId=xxxxx
Password=yyyyy
StartTime=00:00:00
EndTime=00:00:00
SocketConnectHost=aaa.aaa.aaa.aaa
SocketConnectPort=bbb
CheckLatency=N
BeginString=FIX.4.4
SenderCompId=rrrrrr
TargetCompId=vvvvvv
DataDictionary=./Specs/FIX44.xml
ValidateUserDefinedFields=N
Run Code Online (Sandbox Code Playgroud) 如何在c ++中使用QuickFIX创建登录部分?我在c#或java上找到了大量有关如何执行此操作的教程和文章,但c ++上没有.
我有一个服务器(接受者)和一个客户端(发起者).客户端的用户名和密码存储在设置文件中,并在服务器程序中进行硬编码.
从我在客户端阅读的内容中我设置了用户名和密码,fromAdmin()然后阅读并检查服务器中的toAdmin(),但是我该怎么做?
这是我到目前为止所尝试的:
使用以下方法将其message转换为FIX44::Logon&对象:
FIX44::Logon& logon_message = dynamic_cast<FIX44::Logon&>(message);
Run Code Online (Sandbox Code Playgroud)将用户名和密码设置为登录对象,如下所示:
if(session_settings.has("Username"))
{
FIX::Username username = session_settings.getString("Username");
logon_message.set(username);
}
Run Code Online (Sandbox Code Playgroud)并发送这样的消息:
FIX::Message messageToSend = logon_message;
FIX::Session::sendToTarget(messageToSend);
Run Code Online (Sandbox Code Playgroud)但是我在演员表上得到了这个错误:
cannot dynamic_cast 'message' (of type 'class FIX::Message') to type 'struct FIX44::Logon&' (target is not pointer or reference to complete type)
Run Code Online (Sandbox Code Playgroud)
我试过的是http://niki.code-karma.com/2011/01/quickfix-logon-support-for-username-password/comment-page-1/.
我还不清楚如何制作客户端和服务器.
谁能帮我?
我正在研究修复会话层并且对会话级别拒绝有一些困惑。
如果在会话期间收到的消息出现乱码或无效(校验和错误、正文长度、所需标签丢失等),正确的恢复措施是什么?我在思考以下三个问题:
另一件事是: REJECT 后面总是跟着 LOGOUT 和 DISCONNECTION 吗?
提前致谢。
我正在迭代一个快速修复消息。对于给定的字段,如何在不知道类型的情况下获取该字段的值?
quickfix.Message 也有像 ' Double getDouble(int field), String getString(int field)' 等方法,也有像DoubleField getField(DoubleField), StringField getField(StringField )等方法。
我期待像 ' Object get(int field)' 这样的方法返回 Object
如何在不知道字段类型的情况下检索值?
我试图安装QuickFix的使用pip install quickfix在其网站上的建议。
但是,在安装过程中出现错误:
C++\Acceptor.cpp(21) : fatal error C1083: Cannot open include file: 'stdafx.h': No such file or directory
Run Code Online (Sandbox Code Playgroud)
据我了解stdafx.h是一个预编译的 C++ 头文件。那么我在哪里可以得到这个文件,我如何告诉 pip 在哪里找到它?
下面给出了完整的 pip 日志以供参考:
------------------------------------------------------------
C:\Program Files (x86)\Python27\lib\site-packages\pip\__main__.py run on 04/25/16 23:14:35
Downloading/unpacking quickfix
Getting page https://pypi.python.org/simple/quickfix/
URLs to search for versions for quickfix:
* https://pypi.python.org/simple/quickfix/
Analyzing links from page https://pypi.python.org/simple/quickfix/
Found link https://pypi.python.org/packages/63/6e/842f5fcaae56f6a992f6a4e962e256327a85e31f49cd18ef6785d71dcc11/quickfix-1.14.2.tar.gz#md5=9412b4c496403408f5cd3864a74be86f (from https://pypi.python.org/simple/quickfix/), version: 1.14.2
Found link https://pypi.python.org/packages/8c/e1/0943a3ae87d5c9e13d97ff66e3f0d110dac3450c3b137c8fc3b61128f72a/quickfix-1.14.1.tar.gz#md5=6944d6c0840a3157eb5dae1552a7a3a6 (from https://pypi.python.org/simple/quickfix/), version: 1.14.1
Found link https://pypi.python.org/packages/d4/73/88e00fab6aec1b5ca10816b294b351e3af2f6fc6fbf08f8c48b3ffaf60cb/quickfix-1.14.3.tar.gz#md5=6a4085d95e30af2c93e75d8e5b08d921 (from https://pypi.python.org/simple/quickfix/), …Run Code Online (Sandbox Code Playgroud) 在与quickfix库捆绑在一起的FIX.4.4数据字典XML中,似乎某些字段被标记为必需,可能不应该符合FIXimate中描述的协议规范.
例如:
35/OrderId in message AE/TradeCaptureReport的组件组TrdCapRptSideGrp 552/NoSides
另一个例子:
15 /消息AR/TradeCaptureReportAck中的ExecType
我想,这些字段不应该是必需的,而且我可以简单地将它们标记为需要=在FIX44.xml在我的数据字典"N".
我在库存数据字典中发现可疑的必需='Y',这一点令人惊讶吗?我是否应该全神贯注地改变这些?
quickfix ×10
fix-protocol ×3
c++ ×2
installation ×2
python ×2
c# ×1
connectivity ×1
finance ×1
java ×1
login ×1
quickfixj ×1
sockets ×1
windows ×1