Commit Graph

47 Commits

Author SHA1 Message Date
66044ddae1 Add message parser 2024-02-14 19:33:05 +01:00
dd0b83734d Add message struct definitions
All message structs required to run the exchange
2024-02-10 11:21:21 +01:00
dd1ac04fc7 Remove gitlab ci configuration
We are not hosting on gitlab anymore
2024-02-10 11:19:38 +01:00
4a087bc2eb Rename mock connection interface
Rename inbox to messages to be more consistent
2024-02-10 11:18:54 +01:00
19afa23021 Add mock queue implementation 2024-02-10 11:18:06 +01:00
b9ea7cca30 Implement basic message broker 2024-02-03 22:25:37 +01:00
14557d2a34 Add method to retrieve a user's orders in a limit order book 2024-02-03 21:29:27 +01:00
1bdb619f6c Implement basic capped trade tracker 2024-02-03 21:04:09 +01:00
16028989e4 Allow iteration of limit volume tracker entries 2024-02-03 20:29:38 +01:00
4b48904f1e Rename new_volume to quantity in LimitVolumeChange 2024-02-03 20:24:07 +01:00
64b17e0803 Reformat matcher 2024-02-03 20:21:40 +01:00
8c33a21052 Add AGPLv3 license 2024-02-03 19:06:50 +01:00
17ce4193dd Add event machine and json validation dependencies 2024-02-03 18:47:01 +01:00
bd0aa1245a Use nested hash instead of tuple for hash keys 2024-01-22 16:54:49 +01:00
dd441df8ff Return the cancelled order explicitly 2024-01-21 19:00:17 +01:00
cd2262e895 Separate LimitOrderBook#match into its own method 2024-01-21 18:59:40 +01:00
0ba5914b9c Move next_trade to matcher implementation 2024-01-20 17:27:09 +01:00
188f45d4c4 Implement a limit volume tracker
Implement the limit volume tracker that keeps track of the limit
volumes and emits change events that can be used by clients to
update their copy of the order book
2023-11-08 22:47:08 +01:00
b7df45794c Refactor how we require the book commponents 2023-11-08 22:44:47 +01:00
cc624fb93a Bump standard ruby version 2023-11-08 20:36:10 +01:00
1e62686e69 Rename OrderBook to LimitOrderBook 2023-11-08 20:35:14 +01:00
509b00bb14 Move order book to Rex::Book namespace 2023-11-08 20:33:49 +01:00
0efb6b0e88 Remove limit volume tracking from order book
It is not super relevant for the current matching engine,
we are going to solve this in the server implementation
2023-10-30 20:43:49 +01:00
79be3b534c Implement limit volume tracking 2023-10-29 20:07:39 +01:00
87f56e6e9b Remove unused exception 2023-10-29 20:07:39 +01:00
5862368498 Rename amount to quantity
More idiomatic naming for the order quantities.
2023-10-29 20:07:39 +01:00
2b9c82c4f6 Add stack overflow based test case for matcher implementation 2023-10-29 20:07:39 +01:00
a95062234d Ignore spec files in coverage reports 2023-10-29 20:07:39 +01:00
55f8652c64 Increase branch test coverage 2023-10-29 20:07:39 +01:00
7191df2a90 Add automatic order id assignment to order book 2023-10-29 20:07:39 +01:00
8668ad8927 Add add_and_match_order method to orderbook 2023-10-28 23:00:09 +02:00
37435355ae Implement matching system 2023-10-28 22:42:19 +02:00
57436c9eb0 Finish basic order book implementation 2023-10-28 19:26:53 +02:00
c16e705a4c Finish limit implementation 2023-10-28 14:06:21 +02:00
b3b31427db Add factory for orders 2023-10-28 14:06:03 +02:00
d168a36fda Add simplecov for coverage reports 2023-10-28 11:33:28 +02:00
9582315e59 Add factory bot dependency 2023-10-28 11:31:54 +02:00
986fc47c73 Fix standard ruby style issues 2023-10-27 19:14:57 +02:00
e92a3b1102 Add Order#filled? method 2023-10-27 19:09:24 +02:00
f2f051c3a4 Remove default rspec test case 2023-10-27 19:08:46 +02:00
a51c0724c2 Add new models to rex library 2023-10-27 14:57:04 +02:00
44ab975d2f Add order book scaffolding 2023-10-27 14:56:35 +02:00
da31634600 Implement limit 2023-10-27 14:56:19 +02:00
59420ee879 Implement order model 2023-10-27 14:56:05 +02:00
42758636b4 Add Gemfile.lock 2023-10-27 14:55:53 +02:00
f1bad8d91a Fill out gemspec 2023-10-27 14:55:38 +02:00
c8a7022e5b First commit 2023-10-27 14:53:56 +02:00