IB Fix开发 之 Quickfix 解读

Quickfix 是开源的FIX引擎,支持JAVA, C#等语言

官网地址:http://quickfixn.org/tutorial/creating-an-application.html

阅读下面文字之前假设用户已经看过了Quickfix官网并且已经对fix协议的基本内容有了了解。

下面主要介绍Quickfix(C#版本的)核心要点:

(1)Quickfix 到底是什么?

      可以将Quickfix 理解为一套实现fix协议的工具,利用这个工具用户可以向对手方发送fix消息,同时可以及时接收并响应对手方发送来的消息

   用户同时也可以扩展这个工具(在IB 条件单中会简单介绍)

(2)Quickfix源码在哪里?

  https://github.com/connamara/quickfixn

(3)怎么使用Quickfix?

  用户可以直接下载源码,编译后可以引用生成的QuickFix 动态库或者直接在官网下载最新版的QuickFix动态库

(4)Quickfix关键接口-----IApplication

  Quickfix的核心就是该接口,用户在引用QuickFix 动态库后,最主要的工作就是根据自己的需求实现该接口中的方法。

  为了叙述的方便,假设A公司和IB 互为对手方,A公司作为Fix回话的发起方主动去连接IB, 即A公司为initator, IB为acceptor

  除此之外, IB FIX消息可分为两类:应用类(application msg)的消息和管理类(administrative msg)的消息

  

  A公司的程序员需要实现IApplication接口的下面几个方法:

  public void FromApp(Message msg, SessionID sessionID)

  方法说明:当A公司应用程序收到IB发来的应用类消息时会调用该方法,A公司程序员需要在该方法中处理不同的应用类消息

     public void OnCreate(SessionID sessionID)

  方法说明:当Quickfix根据配置文件创建会话成功后会调用该方法,一般在这个方法中不做特别的事情      

     public void OnLogon(SessionID sessionID

  方法说明:当A公司应用程序和IB Fix服务连接成功的时候会调用该方法,一般在这个方法中不做特别的事情

    public void OnLogout(SessionID sessionID

  方法说明:当A公司应用程序和IB Fix服务连接断开时会调用该方法,一般需要在该方法中实现断开重连机制
      
public void FromAdmin(Message msg, SessionID sessionID)

  方法说明:当A公司应用程序收到IB发来的管理类消息时会调用该方法,
     public void ToAdmin(Message msg, SessionID sessionID)

  方法说明:当A公司向IB发送管理类消息前会调用该方法(用户可以在消息发送前修改msg)
       public void ToApp(Message msg, SessionID sessionID

  方法说明:当A公司向IB发送应用类消息前会调用该方法(用户可以在消息发送前修改msg)

  官网有很详细的示例可以参考

 (5)FIX消息序号的管理

  FIX 会话是由不同的消息构成的,每个消息都包含有一个递增字段MsgSeqNum(tag#34)

  即用户发送第一个msg的时候MsgSeqNum=1,发送第二个msg的时候MsgSeqNum=2 ,后面发送的消息以此类推

  假设用户收到第一个msg的时候MsgSeqNum=1,接收到第二个msg的时候MsgSeqNum应该是2,后面接收的消息以此类推

  即在调用Quickfix的时候用户必须要维护两个序号队列,一个是用户自己发出消息的序号队列,一个是用户收到消息的序号队列。

  假设用户收到收到的前一个消息的序号是30, 那下一个接收到的消息序号应该是31,假设下一个消息的序号变成了40,则代表用户漏掉了某些消息,这个时候用          户需告诉IB 重发丢失的消息。

  用户维护自己发送消息的序号可在ToAdmin和ToApp两个函数中实现,用户维护收到消息的序号可在FromAdmin和FromApp两个函数中实现。

(6)Quickfix的配置

  用户在使用Quickfix之前需要做一些配置,这些配置都很简单,可参考官网(http://quickfixn.org/tutorial/configuration.html)

  

转载于:https://www.cnblogs.com/010bj/p/8304302.html

你可能感兴趣的:(IB Fix开发 之 Quickfix 解读)