Stock-Trading-System

A Java-based simulated stock market with GUI following FIX protocol


Project maintained by derekniess Hosted on GitHub Pages — Theme by mattgraham

Stock Trading System

This is a mini-trading system simulation written in Java, whose components (market data and order simulators, FIX acceptor and initiator, back-end for market data and filled/rejected orders) interact by queues and topics over ActiveMQ.


Overview

In a real-world trading environment, there are a handful of independent systems that must communicate with each other in order to carry out the day-to-day activities of a stock market. An exchange will have an automated system in place to verify and accept orders via some form of communication, commonly following the FIX protocol, and execute those orders according to a matching engine. They are also responsible for keeping a book of orders for assets at any given time. Any client wishing to make trades will have an Order Management System (OMS) that acts as a platform for managing the flow of orders it routes to/order confirmations it receives from the exchange. A 3rd party stock market data system pools market data from stock exchanges to be viewed by clients such as stockbrokers and stock traders and may also store up-to-date logs of historic market data with published orders.


High-Level Architecture

Architecture


Main Implemented Components

This project was built on Ubuntu and Eclipse, using the following technologies: Java, QuickFIX/J (FIX 5.0), Maven, ActiveMQ, MongoDB and MySql.

The following are the set of implemented applications that run concurrently in order to simulate the interactions that take place in a real stock market:


Trade Monitor UI

UI for filled and rejected orders along with statistics:

Orders


UI for on-going market data:

MarketData


Running the Various Components