2012-07-02 188 views
1

我一直在尝试使用QuickFIX来设置客户端。这是从QuickFix的网站举例如下:QuickFIX启动器无法发送消息

int main(int argc, char** argv) { 
    try 
    { 
    if(argc < 2) return 1; 
    std::string fileName = argv[1]; 
    FIX::SessionSettings settings(fileName); 
    Handler application; 
    FIX::FileStoreFactory storeFactory(settings); 
    FIX::FileLogFactory logFactory(settings); 
    FIX::SocketInitiator initiator(application, storeFactory, settings, logFactory /*optional*/); 
    initiator.start(); 
    cout << "Started.\n"; 
    initiator.block(); 
    cout << "Stopped.\n"; 
    return 0; 
    } 
    catch(FIX::ConfigError& e) 
    { 
    std::cout << e.what(); 
    return 1; 
    } 
} 

我定义的Handler实施Application类。 和配置文件看起来像如下:

# default settings for sessions 
[DEFAULT] 
ConnectionType=initiator 
ReconnectInterval=60 
SenderCompID=CLIENT 
FileLogPath=. 
FileStorePath=. 
DataDictionary=D:\Program Files\quickfix\spec\FIX44.xml 

# session definition 
[SESSION] 
# inherit ConnectionType, ReconnectInterval and SenderCompID from default 
BeginString=FIX.4.4 
TargetCompID=SERVER 
HeartBtInt=30 
SocketConnectPort=6523 
SocketConnectHost=127.0.0.1 
StartTime=8:00:00 
EndTime=23:00:00 

在运行时,Handler::toAdminHandler::onCreate接到电话,然后block功能块。但是,使用小型FIX应用程序Mini-FIX作为服务器,我无法从程序获得任何传入消息。我试过打开两个Mini-FIX,一个作为服务器,一个作为客户端,他们沟通得很好。而且我确定了ID和监听端口是正确的。那么问题是什么? Mini-FIX应收到程序发送的toAdmin消息8=FIX.4.4|9=55|35=5|34=1|49=CLIENT|52=20120702-08:29:25.334|56=SERVER|10=115。 开始时间和结束时间似乎很奇怪,但实际上调用了toAdmin。所以我认为这个消息应该已经发送了。

编辑 我解决了这个问题已经后,我做了一些改动的配置文件和程序,但我不太清楚什么原因造成的。考虑这个关闭。

+0

什么似乎奇怪的开始和结束时间? –

+0

@MD-Tech我假设在'starttime'和'endtime'之间的时间内启动器将被启动。但是,当时间超出'starttime'和'endtime'范围时,'toAdmin'似乎只能被调用。 。所有使用UTC时间。 – WiSaGaN

+1

要使用UTC时间,您必须将此行放在配置文件中:UseLocalTime = N – stexcec

回答

0

的问题已经没有了,以后我操纵的配置文件和Mini-FIX。
看来,它是由几个原因造成的:

  1. 的时间应间隔进行设置。

  2. 作为服务器的Mini-FIX应正确设置targetcomputerid。

  3. initiator.block()就足以启动发动机并等待。无需运行start()block()两者。

2

您在问题中发布的FIX消息是LOGOUT消息(35 = 5),启动与此类消息的连接非常奇怪。我期望第一条消息是一个登录(35 = A)。尝试将序列号在每次登录时重置,在配置加入这一行:

ResetOnLogon=Y 

而且在quickfix分布有一个小服务器(执行),您可以用它来测试客户端。请在这里找到服务器:

http://www.quickfixengine.org/quickfix/doc/html/examples.html

+0

谢谢。注销消息似乎是不在交易时间的结果。我在对配置文件和程序进行了一些更改后,我已经解决了这个问题,但我不确定是什么导致了它。 – WiSaGaN