Special thanks to Aarav for driving the development
A trading simulator between a Broker and a Stock Exchange using the Financial Information eXchange (FIX) Protocol. It's a study project using QuickFIX/J, Quarkus, Angular, Docker, Docker Compose and PostgreSQL.
If you want to participate on this project, just open an issue and we can talk about!
Both Broker and Exchange systems were built with Quarkus on the back-end and Angular on the front-end.
The back-ends communicate each other with QuickFIX/J and each has a schema into the PostgreSQL.
Each Angular front-end communicates with the Quarkus back-end using REST and Websockets.
The architecture consists of:
- Exchange Back-End: Quarkus REST API with QuickFIX Acceptor
- Exchange Front-End: Angular UI for exchange management
- Broker Back-End: Quarkus REST API with QuickFIX Initiator
- Broker Front-End: Angular UI for broker trading platform
- PostgreSQL: Shared database for logging and persistence
fix-trading-simulator/
├── scripts/
│ ├── build/
│ ├── debug/
│ ├── ops/
│ ├── tests/
│ └── validation/
├── exchange-back-end/
├── exchange-front-end/
├── broker-back-end/
├── broker-front-end/
├── docker-compose.yml
└── README.md
You can submit, negotiate, cancel and list your orders.
It's possible to set the Exchange to automatically negotiate the orders.
Every change in the orders are broadcasted using websockets and are immediately updated on the front-end.
Make logon and logout.
View the session status and storage.
View the session configuration.
List the messages sent from the session.
List the FIX events.
List the messages received and sent.
After start, access project at:
- Broker Front end
- Broker Back end swagger:
- Exchange Front end
- Exchange Back end swagger:
- PostgreSQL:
- jdbc:postgresql://localhost:5432/postgres
- user: postgres
- password: postgres
Inside the root folder of the project, execute:
$ chmod +x ./scripts/build/run-from-docker-hub.sh
$ ./scripts/build/run-from-docker-hub.sh
Docker Hub images:
Inside the root folder of the project, execute:
$ chmod +x ./run-with-local-build.sh
$ ./run-with-local-build.sh
After the first build, you can use the run-after-local-build script.
$ ./mvnw compile quarkus:dev -Ddebug=5006
Access http://localhost:8090/q/swagger-ui/
$ ./mvnw compile quarkus:dev
Access http://localhost:8080/q/swagger-ui/
$ npm install
$ ng serve
Access http://localhost:4300
$ npm install
$ ng serve
Access http://localhost:4200



