https://github.com/bigbuildbench/arjunvachhani_order-matcher
https://github.com/bigbuildbench/arjunvachhani_order-matcher
Science Score: 13.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
○.zenodo.json file
-
○DOI references
-
○Academic publication links
-
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (8.5%) to scientific vocabulary
Repository
Basic Info
- Host: GitHub
- Owner: BigBuildBench
- License: mit
- Language: C#
- Default Branch: master
- Size: 2.24 MB
Statistics
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
- Releases: 0
Metadata Files
README.md
order-matcher
order-matcher is a simple and fast library to build crypto-currency exchange, stock exchange or commodity exchange. order-matcher matches buy and sell orders using price-time priority algorithm. order-matcher supports multiple order types and able to excecute upto 1 million messages per seconds.
- Support multiple order types
- Limit
- Market
- Stop Loss
- Stop Limit
- Supports multiple options on order
- Book or Cancel
- Immediate or Cancel(IOC)
- Fill or kill(FOK)
- Iceberg
- Good till Date(GTD)
- Self Trade Prevention
1 Million orders per seconds on AWS c6a.xlarge instance
Supports integer & real numbers/decimal for price and quantity
Hand written serializer faster than any serializer. x15 times faster than JSON, x5 times faster than messagepack
Documentation
3. Frequently Asked Questions(FAQ)
Project Development Status : Actively maintained.
Community
Questions and pull requests are welcomed.
Are you building spot crypto exchange?
Chat with me on telegram at https://t.me/Arjun_Vachhani, I may be able to help you.
Code
```csharp
class Program { static void Main(string[] args) { //timeProvider will provide epoch var timeProvider = new TimeProvider();
//create instance of matching engine.
MatchingEngine matchingEngine = new MatchingEngine(new MyTradeListener(), new MyFeeProvider(), new Quantity(0.0000_0001m), 8);
Order order1 = new Order { IsBuy = true, OrderId = 1, OpenQuantity = 0.01m, Price = 69_000 };
//push new order engine.
var addResult = matchingEngine.AddOrder(order1, timeProvider.GetSecondsFromEpoch());
if (addResult == OrderMatchingResult.OrderAccepted)
{
// matching engine has accepted order
}
//cancel existing orders
var cancelResult = matchingEngine.CancelOrder(1);//pass orderId to cancel
if (cancelResult == OrderMatchingResult.CancelAcepted)
{
// cancel request is accepted
}
}
}
//create a listener to receive events from matching engine. pass it to constructore of MatchingEngine class MyTradeListener : ITradeListener { public void OnAccept(OrderId orderId, UserId userId) { Console.WriteLine($"Order Accepted.... orderId : {orderId}"); }
public void OnCancel(OrderId orderId, UserId userId, Quantity remainingQuantity, Amount cost, Amount fee, CancelReason cancelReason)
{
Console.WriteLine($"Order Cancelled.... orderId : {orderId}, remainingQuantity : {remainingQuantity}, cancelReason : {cancelReason}");
}
public void OnOrderTriggered(OrderId orderId, UserId userId)
{
Console.WriteLine($"Stop Order Triggered.... orderId : {orderId}");
}
public void OnTrade(OrderId incomingOrderId, OrderId restingOrderId, UserId incomingUserId, UserId restingUserId, bool incomingOrderSide, Price matchPrice, Quantity matchQuantiy, Quantity? askRemainingQuantity, Amount? askFee, Amount? bidCost, Amount? bidFee)
{
if (bidCost.HasValue)
{
// buy order completed
}
if (askRemainingQuantity.HasValue)
{
// sell order completed
}
Console.WriteLine($"Order matched.... incomingOrderId : {incomingOrderId}, restingOrderId : {restingOrderId}, executedQuantity : {matchQuantiy}, exetedPrice : {matchPrice}");
}
}
class MyFeeProvider : IFeeProvider { public Fee GetFee(short feeId) { return new Fee { TakerFee = 0.5m, //0.5% taker fee MakerFee = 0.1m, //0.1% maker fee }; } } ```
Owner
- Name: BigBuildBench
- Login: BigBuildBench
- Kind: organization
- Repositories: 1
- Profile: https://github.com/BigBuildBench
abbr. B3, benchmarking the repo-level understanding capability of your LLMs by reconstructing project build-file.
GitHub Events
Total
- Create event: 4
Last Year
- Create event: 4
Dependencies
- actions/checkout master composite
- actions/setup-dotnet v2 composite