- 📖 Table of Contents
- 📍 Overview
- 📦 Features
- 📂 Repository Structure
- ⚙️ Modules
- 🚀 Getting Started
- 🛣 Roadmap
- 🤝 Contributing
- 📄 License
- 👏 Acknowledgments
Trading Engine server that simulates an exchange. You can create instruments, and each of them will have order books that you can execute trades on. Currently using a FIFO price time priority matching algorithm.
Server with multiple orderbooks FIFO matching algorithm Logerbook Templated code to use different loggers, matching algorithms, and orderbook implementations
└── TradingEngine/
├── AlgoTradingPlatform/
│ └── .vscode/
├── ConsoleUI/
│ ├── Console.cs
│ ├── ConsoleUI.csproj
│ └── obj/
├── GraphicCS/
│ ├── Form1.Designer.cs
│ ├── Form1.cs
│ ├── Form1.resx
│ ├── Graphic.cs
│ ├── GraphicCS.csproj
│ ├── GraphicCS.csproj.user
│ ├── bin/
│ └── obj/
├── GraphicUI/
│ ├── Form1.Designer.cs
│ ├── Form1.cs
│ ├── Form1.resx
│ ├── GraphicUI.csproj
│ ├── GraphicUI.csproj.user
│ ├── Program.cs
│ ├── bin/
│ └── obj/
├── InstrumentCS/
│ ├── InstrumentCS.csproj
│ ├── Security.cs
│ ├── bin/
│ └── obj/
├── LoggingCS/
│ ├── AbstractLogger.cs
│ ├── ILogger.cs
│ ├── ITextLogger.cs
│ ├── LogInformation.cs
│ ├── LogLevel.cs
│ ├── LoggerType.cs
│ ├── LoggingCS.csproj
│ ├── LoggingConfiguration/
│ ├── TextLogger.cs
│ ├── bin/
│ └── obj/
├── OrderbookCS/
│ ├── IMatchingOrderbook.cs
│ ├── IOrderEntryOrderbook.cs
│ ├── IReadOnlyOrderbook.cs
│ ├── IRetrievalOrderbook.cs
│ ├── MatchResult.cs
│ ├── NoMatchOrderbook.cs
│ ├── OrderbookCS.csproj
│ ├── OrderbookSpread.cs
│ ├── bin/
│ └── obj/
├── OrdersCS/
│ ├── CancelOrder.cs
│ ├── CancelOrderStatus.cs
│ ├── IOrderCore.cs
│ ├── Limit.cs
│ ├── LimitComparer.cs
│ ├── ModifyOrder.cs
│ ├── ModifyOrderStatus.cs
│ ├── NewOrderStatus.cs
│ ├── Order.cs
│ ├── OrderBookEntry.cs
│ ├── OrderCore.cs
│ ├── OrderRecord.cs
│ ├── OrderStatusCreator.cs
│ ├── OrdersCS.csproj
│ ├── RejectCreator.cs
│ ├── Rejection.cs
│ ├── RejectionReason.cs
│ ├── Side.cs
│ ├── bin/
│ └── obj/
├── RejectCS/
│ ├── Class1.cs
│ ├── RejectCS.csproj
│ └── obj/
├── TradingEngineServer/
├── WinFormsApp1/
│ ├── .vs/
│ ├── Form1.Designer.cs
│ ├── Form1.cs
│ ├── Form1.resx
│ ├── Program.cs
│ ├── WinFormsApp1.csproj
│ ├── WinFormsApp1.csproj.user
│ ├── WinFormsApp1.sln
│ ├── bin/
│ └── obj/
├── WinFormsLibrary1/
│ ├── .vs/
│ ├── Class1.cs
│ ├── WinFormsLibrary1.csproj
│ ├── WinFormsLibrary1.csproj.user
│ ├── WinFormsLibrary1.sln
│ ├── bin/
│ └── obj/
└── WinFormsLibrary2/
├── Class1.cs
├── WinFormsLibrary2.csproj
└── obj/
Winformslibrary2
File | Summary |
---|---|
Class1.cs | HTTPStatus Exception: 401 |
WinFormsLibrary2.csproj | HTTPStatus Exception: 401 |
Obj
Net6.0-windows
Loggingcs
File | Summary |
---|---|
TextLogger.cs | HTTPStatus Exception: 401 |
ITextLogger.cs | HTTPStatus Exception: 401 |
AbstractLogger.cs | HTTPStatus Exception: 401 |
LogInformation.cs | HTTPStatus Exception: 401 |
LoggingCS.csproj | HTTPStatus Exception: 401 |
LoggerType.cs | HTTPStatus Exception: 401 |
LogLevel.cs | HTTPStatus Exception: 401 |
ILogger.cs | HTTPStatus Exception: 401 |
Netstandard2.1
Loggingconfiguration
File | Summary |
---|---|
LoggerConfiguration.cs | HTTPStatus Exception: 401 |
Consoleui
File | Summary |
---|---|
ConsoleUI.csproj | HTTPStatus Exception: 401 |
Console.cs | HTTPStatus Exception: 401 |
Net6.0
File | Summary |
---|---|
.NETCoreApp,Version=v6.0.AssemblyAttributes.cs | HTTPStatus Exception: 401 |
ConsoleUI.GeneratedMSBuildEditorConfig.editorconfig | HTTPStatus Exception: 401 |
ConsoleUI.AssemblyInfo.cs | HTTPStatus Exception: 401 |
ConsoleUI.GlobalUsings.g.cs | HTTPStatus Exception: 401 |
Winformslibrary1
File | Summary |
---|---|
Class1.cs | HTTPStatus Exception: 401 |
WinFormsLibrary1.csproj.user | HTTPStatus Exception: 401 |
WinFormsLibrary1.csproj | HTTPStatus Exception: 401 |
WinFormsLibrary1.sln | HTTPStatus Exception: 401 |
Filecontentindex
File | Summary |
---|---|
read.lock | HTTPStatus Exception: 401 |
read.lock | HTTPStatus Exception: 401 |
Instrumentcs
File | Summary |
---|---|
InstrumentCS.csproj | HTTPStatus Exception: 401 |
Security.cs | HTTPStatus Exception: 401 |
Graphicui
File | Summary |
---|---|
GraphicUI.csproj | HTTPStatus Exception: 401 |
Form1.cs | HTTPStatus Exception: 401 |
GraphicUI.csproj.user | HTTPStatus Exception: 401 |
Program.cs | HTTPStatus Exception: 401 |
Form1.Designer.cs | HTTPStatus Exception: 401 |
Form1.resx | HTTPStatus Exception: 401 |
Winformsapp1
File | Summary |
---|---|
WinFormsApp1.csproj.user | HTTPStatus Exception: 401 |
Form1.cs | HTTPStatus Exception: 401 |
Program.cs | HTTPStatus Exception: 401 |
WinFormsApp1.csproj | HTTPStatus Exception: 401 |
Form1.Designer.cs | HTTPStatus Exception: 401 |
Form1.resx | HTTPStatus Exception: 401 |
WinFormsApp1.sln | HTTPStatus Exception: 401 |
Orderscs
File | Summary |
---|---|
CancelOrderStatus.cs | HTTPStatus Exception: 401 |
OrderBookEntry.cs | HTTPStatus Exception: 401 |
Order.cs | HTTPStatus Exception: 401 |
LimitComparer.cs | HTTPStatus Exception: 401 |
RejectionReason.cs | HTTPStatus Exception: 401 |
Rejection.cs | HTTPStatus Exception: 401 |
IOrderCore.cs | HTTPStatus Exception: 401 |
ModifyOrder.cs | HTTPStatus Exception: 401 |
CancelOrder.cs | HTTPStatus Exception: 401 |
ModifyOrderStatus.cs | HTTPStatus Exception: 401 |
RejectCreator.cs | HTTPStatus Exception: 401 |
Limit.cs | HTTPStatus Exception: 401 |
OrderRecord.cs | HTTPStatus Exception: 401 |
OrderStatusCreator.cs | HTTPStatus Exception: 401 |
OrdersCS.csproj | HTTPStatus Exception: 401 |
NewOrderStatus.cs | HTTPStatus Exception: 401 |
Side.cs | HTTPStatus Exception: 401 |
OrderCore.cs | HTTPStatus Exception: 401 |
Graphiccs
File | Summary |
---|---|
Graphic.cs | HTTPStatus Exception: 401 |
Form1.cs | HTTPStatus Exception: 401 |
GraphicCS.csproj | HTTPStatus Exception: 401 |
GraphicCS.csproj.user | HTTPStatus Exception: 401 |
Form1.Designer.cs | HTTPStatus Exception: 401 |
Form1.resx | HTTPStatus Exception: 401 |
Rejectcs
File | Summary |
---|---|
Class1.cs | HTTPStatus Exception: 401 |
RejectCS.csproj | HTTPStatus Exception: 401 |
Orderbookcs
File | Summary |
---|---|
NoMatchOrderbook.cs | HTTPStatus Exception: 401 |
IReadOnlyOrderbook.cs | HTTPStatus Exception: 401 |
MatchResult.cs | HTTPStatus Exception: 401 |
OrderbookCS.csproj | HTTPStatus Exception: 401 |
IMatchingOrderbook.cs | HTTPStatus Exception: 401 |
IRetrievalOrderbook.cs | HTTPStatus Exception: 401 |
OrderbookSpread.cs | HTTPStatus Exception: 401 |
IOrderEntryOrderbook.cs | HTTPStatus Exception: 401 |
Dependencies
Please ensure you have the following dependencies installed on your system:
- ℹ️ Dependency 1
- ℹ️ Dependency 2
- ℹ️ ...
- Clone the TradingEngine repository:
git clone https://github.com/iyasinn/TradingEngine
- Change to the project directory:
cd TradingEngine
- Install the dependencies:
dotnet build
dotnet run
dotnet test
Finish server endpoints
Finish graphical interface
Contributions are always welcome! Please follow these steps:
- Fork the project repository. This creates a copy of the project on your account that you can modify without affecting the original project.
- Clone the forked repository to your local machine using a Git client like Git or GitHub Desktop.
- Create a new branch with a descriptive name (e.g.,
new-feature-branch
orbugfix-issue-123
).
git checkout -b new-feature-branch
- Make changes to the project's codebase.
- Commit your changes to your local branch with a clear commit message that explains the changes you've made.
git commit -m 'Implemented new feature.'
- Push your changes to your forked repository on GitHub using the following command
git push origin new-feature-branch
- Create a new pull request to the original project repository. In the pull request, describe the changes you've made and why they're necessary. The project maintainers will review your changes and provide feedback or merge them into the main branch.
This project is licensed under the ℹ️ LICENSE-TYPE
License. See the LICENSE-Type file for additional info.
- ℹ️ List any resources, contributors, inspiration, etc.