QuickFIX/N入门:一、如何创建一个QuickFIX/N的应用程序
2015-06-23 16:49
525 查看
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入门:如何自定义FIX
- mysql sequence
- UIScroll View 和 AutoLayout
- 8_Ueditor编辑器和Echarts的使用
- UE4 AI入门
- mysql:Variable 'character_set_client' can't be set to the value of 'NULL'解决
- Azure Queue队列存储(1)
- 使用SoapUI 对WebService压力测试
- easyui 本地js数据的加载
- iOS-给手势UITapGestureRecognizer添加"tag"标志
- easyui combotree的使用示例
- EasyUi细节
- How to fix Column 'InvariantName' is constrained to be unique 解决办法!
- easyui datagrid中图片的展示
- easyui treegrid的使用示例
- IOS键盘的相关设置(UITextfield)
- com.mysql.jdbc.PacketTooBigException: Packet for query is too large (2017898 > 1048576)
- duilib list 获取选中的行ID 获取行数 获取行指针 获取本行索引
- duilib list 去掉表头