quickFIX01 - initiator

本文详细介绍如何从零开始搭建基于quickFIX的金融交易系统,包括下载与编译源代码、配置连接参数、实现登录认证及发送市场数据请求等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、首先到官网下载quickFIX源代码,编译连接,可以使用自带的某个例子作为框架进行修改

二、找到配置文件  * .cfg并打开, 修改文件中DataDictionary字段使其适应当前版本

三、如果要连接的Acceptor需要用户名密码将字段添加到配置文件中以便程序可以获取

       UserName=name
      Password=123

      根据约定配置SenderCompID、TargetCompID

      BeginString = FIX(所使用的版本)

根据需要进行修改以下字段

 如果使用stunnel则写本机IP和stunnel设置的端口号

    SocketConnectHost   = IP 
    SocketConnectPort   =  PORT

其他字段根据需要进行修改

四、对自带的例子程序进行改造

//获取配置文件中的会话集
FIX::SessionSettings settings( file );

 //存储会话
FIX::FileStoreFactory storeFactory(settings);
//日志会话
FIX::FileLogFactory logFactory(settings);
Application application(settings);

FIX::SocketInitiator initiator( application, storeFactory, settings,logFactory );
initiator.start();
application.run();

initiator.stop();


得到用户名密码

std::set<FIX::SessionID> sessionIds = m_sessions.getSessions();
const FIX::Dictionary& dict = m_sessions.get(*sessionIds.begin());
m_username = dict.getString("UserName",false);
m_password = dict.getString("Password",false);


发送用户名密码

void Application::toAdmin( FIX::Message& m, const FIX::SessionID& sessionID)
{
  if (FIX::MsgType_Logon == FIELD_GET_REF( m.getHeader(), MsgType)) {
m.setField(FIX::FIELD::Username, m_username);
        m.setField(FIX::FIELD::Password, m_password);
}
}


封装消息

 FIX44::MarketDataRequest message(
FIX::MDReqID("1"),FIX::SubscriptionRequestType('1'),FIX::MarketDepth(10));
FIX44::MarketDataRequest::NoMDEntryTypes group;
group.set(FIX::MDEntryType('0'));
message.addGroup(group);
group.set(FIX::MDEntryType('1'));
message.addGroup(group);
FIX44::MarketDataRequest::NoRelatedSym group1;
group1.set(FIX::SecurityID("4008"));
group1.set(FIX::SecurityIDSource("8"));
message.addGroup(group1);

发送消息

FIX::Session::sendToTarget(message, sessionID);







连接 QuickFIX 会话需要使用 QuickFIX 库和 Python 的快速安装包(pip)。在 Python 中,我们可以使用 QuickFIX 库来连接到交易所和其通信。以下是连接 QuickFIX 会话的基本步骤: 1. 安装 QuickFIX 和 Python 快速安装包(pip)。 2. 创建一个 QuickFIX 的配置文件。在此文件中,我们可以指定 QuickFIX 库的设置,如消息协议、会话属性、消息格式等。配置文件应该 QuickFIX 库的版本兼容。 3. 创建 Python 脚本并导入 QuickFIX 库。在脚本中,我们可以使用 QuickFIX 库的 API 来连接到交易所和其通信。 4. 在 Python 脚本中创建一个 QuickFIX 应用程序。在此应用程序中,我们可以定义 QuickFIX 库的处理程序和回调函数,以处理交易所的通信。 5. 在应用程序中,创建 QuickFIX 会话并连接到交易所。在此过程中,我们可以指定 QuickFIX 库的会话属性和协议。 以下是一个简单的 Python 脚本,用于连接到 QuickFIX 会话: ```python import quickfix as fix # 创建 QuickFIX 应用程序 class MyApp(fix.Application): def onCreate(self, sessionID): pass def onLogon(self, sessionID): pass def onLogout(self, sessionID): pass def toAdmin(self, message, sessionID): pass def fromAdmin(self, message, sessionID): pass def toApp(self, message, sessionID): pass def fromApp(self, message, sessionID): pass # 创建 QuickFIX 设置 settings = fix.SessionSettings("quickfix.cfg") # 创建 QuickFIX 应用程序 application = MyApp() # 创建 QuickFIX 会话 storeFactory = fix.FileStoreFactory(settings) logFactory = fix.FileLogFactory(settings) initiator = fix.SocketInitiator(application, storeFactory, settings, logFactory) # 连接到 QuickFIX 会话 initiator.start() ``` 在上面的示例中,我们创建了一个名为 `MyApp` 的 QuickFIX 应用程序,并在其中实现了 QuickFIX 库的回调函数。我们还创建了 QuickFIX 设置,指定了 QuickFIX 库的消息协议、会话属性和日志文件。最后,我们创建了 QuickFIX 会话,并使用 `SocketInitiator` 类连接到交易所。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值