Git Product home page Git Product logo

fix-orchestra-quickfix's Introduction

fix-orchestra-quickfix

This project contains integrations between FIX Orchestra and QuickFIX.

  • FIX Orchestra is intended to provide a standard and some reference implementation for machine readable rules of engagement between counterparties.

  • QuickFIX is a popular, open-source FIX engine. It has been implemented or ported to several programming languages, including C++, Java, .NET, and golang.

Modules

Some models in this project are intended to be operational while others are proofs of concept.

repository-quickfix

This module generates a QuickFIX data dictionary from an Orchestra file. The format can be consumed by the C++, Java and .NET versions. Additionally, the module generates message classes for QuickFIX/J directly from an Orchestra file. Although the QuickFIX data dictionary format is not as richly featured as Orchestra, it is hoped that this utility will help with Orchestra adoption.

model-quickfix

This module generates code that is conformant to the QuickFIX/J API for validating and populating messages. It is dependent on repository-quickfix.

session-quickfix

A demonstration of session configuration for QuickFIX open-source FIX engine. It consumes an XML file in the interfaces schema.

References

Orchestra specifications specifications for Orchestra in GitHub.

Orchestrations public Orchestra files for service offerings

FIX Standards normative standards documents

License

© Copyright 2016-2020 FIX Protocol Limited

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Participation

Issues may be entered here in GitHub or in a discussion forum on the FIX Trading Community site. In GitHub, anyone may enter issues or pull requests for the next release candidate.

Data Files

Data files in this project under test/resources are strictly for testing and to serve as examples for format. They are non-normative for FIX standards and may not be up to date.

fix-orchestra-quickfix's People

Contributors

chrjohn avatar david-gibbs-ig avatar donmendelson avatar jacobnorthey-itiviti avatar onurkaraduman avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

fix-orchestra-quickfix's Issues

A few clarification questions based on the examples

Given this slight adaptation of:
https://github.com/FIXTradingCommunity/fix-orchestra/blob/master/interfaces/src/test/resources/examples/SampleInterfaces.xml

    <fixi:interface name="Private">
        <!-- one or more service offerings, with local orchestration file or internet address -->
        <fixi:service name="orderEntry" orchestration="https://mydomain.com/orchestra/orderEntry.xml"/>
        <!-- the protcol stack -->
        <fixi:userInterface name="ATDL" orchestration="https://mydomain.com/orchestra/algo.xml"/>
        <fixi:encoding name="TagValue"/>
        <fixi:sessionProtocol name="FIX4" reliability="recoverable" orchestration="https://mydomain.com/orchestra/session.xml" version="FIX.4.2" >
            <fixi:annotation>
                <fixi:documentation langId="en-us">FIX session protocol</fixi:documentation>
            </fixi:annotation>
        </fixi:sessionProtocol>
        <fixi:transport name="TCP"/>
        <fixi:sessions>
            <fixi:session name="XYZ-ABC">
                <!-- inherits services and protocols from interface -->
                <fixi:role>initiator</fixi:role>
                <!-- alternate addresses are supported -->
                <fixi:transport address="10.96.1.2:567" use="primary"/>
                <fixi:transport address="10.96.2.2:567" use="secondary"/>
                <!-- there can be any number of identifiers -->
                <fixi:identifier name="SenderCompID">XYZ</fixi:identifier>
                <fixi:identifier name="TargetCompID">ABC</fixi:identifier>
                <!-- tells when session becomes effective so it can be configured in advance -->
                <fixi:activationTime>2019-08-07T09:30:00Z</fixi:activationTime>
            </fixi:session>
        </fixi:sessions>
    </fixi:interface>
  1. Role doesn't seem to be a mandatory XML element - I added it in. If left out maybe we should assume it's for an initiator?
  2. There's no coverage on HeartBtInt either which means that initiators need extra config.
  3. Also there's no coverage for StartTime & EndTime type config
  4. For FIXT sessions there's no DefaultApplVerID picked up

Question 1 falls in a wider question I have which is:

Orchestra is machine-readable but is the same file expected to be used by both sides of a connection. Or can/should I trivially be able to generate the counter-party side and that's something I'll need to do when provided with one?

Question 2, 3 & 4 falls into a second wider question I have which is:

How best do we define the specifics of the connectivity between the peers within Orchestra. Is this the point of the orchestration file? Is there any example on an orchestration file / scheme I should look at for orderEntry.xml / session.xml (I'm assuming algo.xml is FIXAtdl)? Or should we propose schema additions?

CodeGeneratorJ main method throws Checked Exception

main methods should not throw checked exceptions. It wasn't actually the cause of the mvn exec plugin error that I encountered but might as well remove the checked exception.

public static void main(String[] args) throws IOException {

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.