@@ -63,17 +63,9 @@ cdef class OrderFactory:
6363 The clock for the factory.
6464 cache : CacheFacade, optional
6565 The cache facade for the order factory.
66- initial_order_id_count : int, optional
67- The initial order ID count for the factory.
68- initial_order_list_id_count : int, optional
69- The initial order list ID count for the factory.
70-
71- Raises
72- ------
73- ValueError
74- If `initial_order_id_count` is negative (< 0).
75- ValueError
76- If `initial_order_list_id_count` is negative (< 0).
66+ use_uuid_client_order_ids : bool, default False
67+ If UUID4's should be used for client order ID values.
68+
7769 """
7870
7971 def __init__ (
@@ -82,25 +74,23 @@ cdef class OrderFactory:
8274 StrategyId strategy_id not None ,
8375 Clock clock not None ,
8476 CacheFacade cache: CacheFacade | None = None ,
85- int initial_order_id_count = 0 ,
86- int initial_order_list_id_count = 0 ,
87- ):
77+ bint use_uuid_client_order_ids = False ,
78+ ) -> None:
8879 self._clock = clock
8980 self._cache = cache
9081 self.trader_id = trader_id
9182 self.strategy_id = strategy_id
83+ self.use_uuid_client_order_ids = use_uuid_client_order_ids
9284
9385 self._order_id_generator = ClientOrderIdGenerator(
9486 trader_id = trader_id,
9587 strategy_id = strategy_id,
9688 clock = clock,
97- initial_count = initial_order_id_count,
9889 )
9990 self._order_list_id_generator = OrderListIdGenerator(
10091 trader_id = trader_id,
10192 strategy_id = strategy_id,
10293 clock = clock,
103- initial_count = initial_order_list_id_count,
10494 )
10595
10696 cpdef void set_client_order_id_count(self , int count ):
@@ -146,7 +136,11 @@ cdef class OrderFactory:
146136 ClientOrderId
147137
148138 """
139+ if self .use_uuid_client_order_ids:
140+ return ClientOrderId(UUID4().value)
141+
149142 cdef ClientOrderId client_order_id = self ._order_id_generator.generate()
143+
150144 if self ._cache is not None :
151145 while self ._cache.order(client_order_id) is not None :
152146 client_order_id = self ._order_id_generator.generate()
@@ -263,7 +257,7 @@ cdef class OrderFactory:
263257
264258 """
265259 if client_order_id is None :
266- client_order_id = self ._order_id_generator.generate ()
260+ client_order_id = self .generate_client_order_id ()
267261 return MarketOrder(
268262 trader_id = self .trader_id,
269263 strategy_id = self .strategy_id,
@@ -362,7 +356,7 @@ cdef class OrderFactory:
362356
363357 """
364358 if client_order_id is None :
365- client_order_id = self ._order_id_generator.generate ()
359+ client_order_id = self .generate_client_order_id ()
366360 return LimitOrder(
367361 trader_id = self .trader_id,
368362 strategy_id = self .strategy_id,
@@ -466,7 +460,7 @@ cdef class OrderFactory:
466460
467461 """
468462 if client_order_id is None :
469- client_order_id = self ._order_id_generator.generate ()
463+ client_order_id = self .generate_client_order_id ()
470464 return StopMarketOrder(
471465 trader_id = self .trader_id,
472466 strategy_id = self .strategy_id,
@@ -580,7 +574,7 @@ cdef class OrderFactory:
580574
581575 """
582576 if client_order_id is None :
583- client_order_id = self ._order_id_generator.generate ()
577+ client_order_id = self .generate_client_order_id ()
584578 return StopLimitOrder(
585579 trader_id = self .trader_id,
586580 strategy_id = self .strategy_id,
@@ -670,7 +664,7 @@ cdef class OrderFactory:
670664
671665 """
672666 if client_order_id is None :
673- client_order_id = self ._order_id_generator.generate ()
667+ client_order_id = self .generate_client_order_id ()
674668 return MarketToLimitOrder(
675669 trader_id = self .trader_id,
676670 strategy_id = self .strategy_id,
@@ -769,7 +763,7 @@ cdef class OrderFactory:
769763
770764 """
771765 if client_order_id is None :
772- client_order_id = self ._order_id_generator.generate ()
766+ client_order_id = self .generate_client_order_id ()
773767 return MarketIfTouchedOrder(
774768 trader_id = self .trader_id,
775769 strategy_id = self .strategy_id,
@@ -883,7 +877,7 @@ cdef class OrderFactory:
883877
884878 """
885879 if client_order_id is None :
886- client_order_id = self ._order_id_generator.generate ()
880+ client_order_id = self .generate_client_order_id ()
887881 return LimitIfTouchedOrder(
888882 trader_id = self .trader_id,
889883 strategy_id = self .strategy_id,
@@ -996,7 +990,7 @@ cdef class OrderFactory:
996990
997991 """
998992 if client_order_id is None :
999- client_order_id = self ._order_id_generator.generate ()
993+ client_order_id = self .generate_client_order_id ()
1000994 return TrailingStopMarketOrder(
1001995 trader_id = self .trader_id,
1002996 strategy_id = self .strategy_id,
@@ -1125,7 +1119,7 @@ cdef class OrderFactory:
11251119
11261120 """
11271121 if client_order_id is None :
1128- client_order_id = self ._order_id_generator.generate ()
1122+ client_order_id = self .generate_client_order_id ()
11291123 return TrailingStopLimitOrder(
11301124 trader_id = self .trader_id,
11311125 strategy_id = self .strategy_id,
@@ -1284,11 +1278,11 @@ cdef class OrderFactory:
12841278 cdef OrderListId order_list_id = self ._order_list_id_generator.generate()
12851279
12861280 if entry_client_order_id is None :
1287- entry_client_order_id = self ._order_id_generator.generate ()
1281+ entry_client_order_id = self .generate_client_order_id ()
12881282 if sl_client_order_id is None :
1289- sl_client_order_id = self ._order_id_generator.generate ()
1283+ sl_client_order_id = self .generate_client_order_id ()
12901284 if tp_client_order_id is None :
1291- tp_client_order_id = self ._order_id_generator.generate ()
1285+ tp_client_order_id = self .generate_client_order_id ()
12921286
12931287 # #######################################################################
12941288 # ENTRY ORDER
0 commit comments