QuickFIX/N入门:一、如何创建一个QuickFIX/N的应用程序

来源:互联网 发布:知字草书写法 编辑:程序博客网 时间:2024/05/17 20:11
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 和 InitiatorQuickFIX/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接口,来自定义实现或扩展我们的日志存储
0 0