QuickFix/N简介
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简介的更多相关文章
- [Android Memory] Android Lint简介(转载)
英文原文:http://tools.android.com/tips/lint 参照文章:http://blog.csdn.net/thl789/article/details/8037473 转载 ...
- Android Lint简介(转)
转载自原文:http://blog.csdn.net/hudashi/article/details/8333349,感谢原作者. 英文原文:http://tools.android.com/tips ...
- ASP.NET Core 1.1 简介
ASP.NET Core 1.1 于2016年11月16日发布.这个版本包括许多伟大的新功能以及许多错误修复和一般的增强.这个版本包含了多个新的中间件组件.针对Windows的WebListener服 ...
- MVVM模式和在WPF中的实现(一)MVVM模式简介
MVVM模式解析和在WPF中的实现(一) MVVM模式简介 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在 ...
- Cassandra简介
在前面的一篇文章<图形数据库Neo4J简介>中,我们介绍了一种非常流行的图形数据库Neo4J的使用方法.而在本文中,我们将对另外一种类型的NoSQL数据库——Cassandra进行简单地介 ...
- REST简介
一说到REST,我想大家的第一反应就是“啊,就是那种前后台通信方式.”但是在要求详细讲述它所提出的各个约束,以及如何开始搭建REST服务时,却很少有人能够清晰地说出它到底是什么,需要遵守什么样的准则. ...
- Microservice架构模式简介
在2014年,Sam Newman,Martin Fowler在ThoughtWorks的一位同事,出版了一本新书<Building Microservices>.该书描述了如何按照Mic ...
- const,static,extern 简介
const,static,extern 简介 一.const与宏的区别: const简介:之前常用的字符串常量,一般是抽成宏,但是苹果不推荐我们抽成宏,推荐我们使用const常量. 执行时刻:宏是预编 ...
- HTTPS简介
一.简单总结 1.HTTPS概念总结 HTTPS 就是对HTTP进行了TLS或SSL加密. 应用层的HTTP协议通过传输层的TCP协议来传输,HTTPS 在 HTTP和 TCP中间加了一层TLS/SS ...
随机推荐
- Castle DynamicProxy
Introduction¶ Castle DynamicProxy is a library for generating lightweight .NET proxies on the fly at ...
- inputType属性
android中inputType属性在EditText输入值时启动的虚拟键盘的风格有着重要的作用.这也大大的方便的操作.有时需要虚拟键盘只为字符或只为数字.所以inputType尤为重要.<E ...
- LeakCanary中英文文档+使用例子
Android 开源界最伟(jian)大(zhi)高(kai)效(gua)的公司 Square 又向业界投下一颗重磅炸弹.推出了一个叫 LeakCanary 的玩意儿,可以通过简单粗暴的方式来让开发者 ...
- 对Xcode菜单选项的详细探索(干货)
本文调研Xcode的版本是 7.1,基本是探索了菜单的每一个按钮.虽然从xcode4一直用到了xcode7,但是一般都只是用了一些基础的功能,说来也惭愧.在一次偶然的机遇突然发现了“显示调用层级”的选 ...
- iOS开发--Swift 基于MVC设计模式的简单的tableViewDemo
如果说MVC是最好的设计模式, 可能很多人并不赞同, 但是如果说MVC是最主流, 应用面最广的设计模式, 我想这是毫无争议的. 不说废话, 直接演示在Swift中如何使用MVC新建工程(我并没有新建文 ...
- 【代码笔记】iOS-评分系统(小星星)
一,效果图. 二,工程图. 三,代码. RootViewController.m - (void)viewDidLoad { [super viewDidLoad]; // Do any additi ...
- symfony2 twig模板引擎
1.基本语法 Says something:{{ }} Does something:{% %} Comment something:{# #} {% extends "App ...
- 0005 《SQL必知必会》笔记01-SELECT语句
1.SELECT基本语句: SELECT 字段名1,···,字段名n FROM 表名 2.检索所有字段,用"*"替换字段名,这会导致效率低下 SELECT * FROM 表名; 3 ...
- 一篇博客理解Recyclerview的使用
从Android 5.0开始,谷歌公司推出了RecylerView控件,当看到RecylerView这个新控件的时候,大部分人会首先发出一个疑问,recylerview是什么?为什么会有recyler ...
- 使用Hive或Impala执行SQL语句,对存储在Elasticsearch中的数据操作(二)
CSSDesk body { background-color: #2574b0; } /*! zybuluo */ article,aside,details,figcaption,figure,f ...