zoukankan      html  css  js  c++  java
  • 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接口,来自定义实现或扩展我们的日志存储。 

     

  • 相关阅读:
    在WinForm中通过C#调用CHM帮助文件
    筹备婚礼之音乐
    挖掘Microsoft Visual Studio 里面的资源之数据库连接配置
    好的Sql语句也能提高效率
    任务安排
    (读书笔记)
    MicroTeam 博客书写注意事项
    泛海精灵的用户分析:补充【Song Xie】
    什么是测试
    [scrum]2010.12.23
  • 原文地址:https://www.cnblogs.com/justuntil/p/4888643.html
Copyright © 2011-2022 走看看