QuickFix/N简介 FIX是Financial Information eXchange的简称。FIX是一种专门为实时电子证券交易设计的标准消息协议。该协议由FIX protocol, Ltd(FPL)所有并维护。FIX协议的官方网址为http://www.fixprotocol.org/ QuickFix引擎( http://www.quickfixengine.org/ )一个开源的FIX引擎,其中它有JAVA、C++、C#三个版本的实现。 QuickFix/N是实现了FIX协议4.0-5.0版本及其功能的开源软件,100%使用.NET(C#)实现。 QuickFix/N官网下载 http://www.quickfixn.org/ QuickFix/N源码下载 https://github.com/connamara/quickfixn 使用QuickFIX/N创建一个Fix应用程序 使用QuickFIX/N创建一个FIX应用程序很容易,实现它的接口Application即可,例如创建一个简单应用程序如下: public class MyQuickFixApp : Application { public void FromApp(Message msg, SessionID sessionID) { } public void OnCreate(SessionID sessionID) { } public void OnLogout(SessionID sessionID) { } public void OnLogon(SessionID sessionID) { } public void FromAdmin(Message msg, SessionID sessionID) { } public void ToAdmin(Message msg, SessionID sessionID) { } public void ToApp(Message msg, SessionID sessionID) { } } 这些实现方法将被QuickFIX/N的事件调用。 下面我们来看看每个回调事件的说明。 应用回调 客户端(对手方)发送登录请求或其它请求消息,当QuickFIX/N应用程序收到消息。QuickFIX/N应用程序会发送一个回调事件的通知。 FromApp -每个应用级别的消息将通过该方法处理,如委托指令,执行报告,证券信息以及市场数据。 FromAdmin -每个管理级别的消息将通过该方法处理,如心跳,登录以及注销。 OnCreate中 - 每当一个新的会话被创建,该方法被调用。 OnLogon - 当登录操作成功完成时,该方法被调用。 OnLogout - 当会话断开时触发,包括对方主动请求logout或者网络连接断开都会引发该事件。 ToApp -所有应用级别的消息在发送出去之前,都会调用该方法。如果需要在每个发出的消息当中添加一个标签(Tag),在该方法是实现该需求最好的位置。 ToAdmin -所有发出的管理级别消息在发送出去之前,都会调用该方法。 Acceptor 和 Initiator QuickFIX/N 实现了的acceptor 和 initiator两种模式。 Initiator:作为客户端,当我们要连接到对方的应用时,使用Initiator。 Acceptor :作为服务端,当我们要提供应用服务供对方连接时,使用Acceptor。 创建我们的应用程序 以下示例代码,我们实现Application 接口,然后实例化一个Acceptor: using QuickFix; public class MyQuickFixApp : Application { public void FromApp(Message msg, SessionID sessionID) { } public void OnCreate(SessionID sessionID) { } public void OnLogout(SessionID sessionID) { } public void OnLogon(SessionID sessionID) { } public void FromAdmin(Message msg, SessionID sessionID) { } public void ToAdmin(Message msg, SessionID sessionID) { } public void ToApp(Message msg, SessionID sessionID) { } } public class MyApp { static void Main(string[] args) { SessionSettings settings = new SessionSettings(args[0]); Application myApp = new MyQuickFixApp(); MessageStoreFactory storeFactory = new FileStoreFactory(settings); LogFactory logFactory = new FileLogFactory(settings); ThreadedSocketAcceptor acceptor = new ThreadedSocketAcceptor( myApp, storeFactory, settings, logFactory); acceptor.Start(); while (true) { System.Console.WriteLine("Waiting!"); System.Threading.Thread.Sleep(1000); } acceptor.Stop(); } } 如果要更改应用角色,改为Initiator,只要简单地用SocketInitiator替换ThreadedSocketAcceptor即可。 其它扩展 1)消息存储扩展 MessageStore会存储FIX会话级别消息的消息传出记录。我们可以通过实现MessageStoreFactory接口,来自定义或扩展我们的消息存储。 2)日志存储扩展 日志记录已经有了两个的实现:FileLog、ScreenLog,其中文件存储的日志记录器已经可以满足一般的要求。当然,我们也可以通过实现LogFactory接口,来自定义实现或扩展我们的日志存储
QuickFIX/N入门:一、如何创建一个QuickFIX/N的应用程序
最新推荐文章于 2022-09-16 17:34:01 发布