@@ -63,17 +63,9 @@ cdef class OrderFactory:
63
63
The clock for the factory.
64
64
cache : CacheFacade, optional
65
65
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
+
77
69
"""
78
70
79
71
def __init__ (
@@ -82,25 +74,23 @@ cdef class OrderFactory:
82
74
StrategyId strategy_id not None ,
83
75
Clock clock not None ,
84
76
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:
88
79
self._clock = clock
89
80
self._cache = cache
90
81
self.trader_id = trader_id
91
82
self.strategy_id = strategy_id
83
+ self.use_uuid_client_order_ids = use_uuid_client_order_ids
92
84
93
85
self._order_id_generator = ClientOrderIdGenerator(
94
86
trader_id = trader_id,
95
87
strategy_id = strategy_id,
96
88
clock = clock,
97
- initial_count = initial_order_id_count,
98
89
)
99
90
self._order_list_id_generator = OrderListIdGenerator(
100
91
trader_id = trader_id,
101
92
strategy_id = strategy_id,
102
93
clock = clock,
103
- initial_count = initial_order_list_id_count,
104
94
)
105
95
106
96
cpdef void set_client_order_id_count(self , int count ):
@@ -146,7 +136,11 @@ cdef class OrderFactory:
146
136
ClientOrderId
147
137
148
138
"""
139
+ if self .use_uuid_client_order_ids:
140
+ return ClientOrderId(UUID4().value)
141
+
149
142
cdef ClientOrderId client_order_id = self ._order_id_generator.generate()
143
+
150
144
if self ._cache is not None :
151
145
while self ._cache.order(client_order_id) is not None :
152
146
client_order_id = self ._order_id_generator.generate()
@@ -263,7 +257,7 @@ cdef class OrderFactory:
263
257
264
258
"""
265
259
if client_order_id is None :
266
- client_order_id = self ._order_id_generator.generate ()
260
+ client_order_id = self .generate_client_order_id ()
267
261
return MarketOrder(
268
262
trader_id = self .trader_id,
269
263
strategy_id = self .strategy_id,
@@ -362,7 +356,7 @@ cdef class OrderFactory:
362
356
363
357
"""
364
358
if client_order_id is None :
365
- client_order_id = self ._order_id_generator.generate ()
359
+ client_order_id = self .generate_client_order_id ()
366
360
return LimitOrder(
367
361
trader_id = self .trader_id,
368
362
strategy_id = self .strategy_id,
@@ -466,7 +460,7 @@ cdef class OrderFactory:
466
460
467
461
"""
468
462
if client_order_id is None :
469
- client_order_id = self ._order_id_generator.generate ()
463
+ client_order_id = self .generate_client_order_id ()
470
464
return StopMarketOrder(
471
465
trader_id = self .trader_id,
472
466
strategy_id = self .strategy_id,
@@ -580,7 +574,7 @@ cdef class OrderFactory:
580
574
581
575
"""
582
576
if client_order_id is None :
583
- client_order_id = self ._order_id_generator.generate ()
577
+ client_order_id = self .generate_client_order_id ()
584
578
return StopLimitOrder(
585
579
trader_id = self .trader_id,
586
580
strategy_id = self .strategy_id,
@@ -670,7 +664,7 @@ cdef class OrderFactory:
670
664
671
665
"""
672
666
if client_order_id is None :
673
- client_order_id = self ._order_id_generator.generate ()
667
+ client_order_id = self .generate_client_order_id ()
674
668
return MarketToLimitOrder(
675
669
trader_id = self .trader_id,
676
670
strategy_id = self .strategy_id,
@@ -769,7 +763,7 @@ cdef class OrderFactory:
769
763
770
764
"""
771
765
if client_order_id is None :
772
- client_order_id = self ._order_id_generator.generate ()
766
+ client_order_id = self .generate_client_order_id ()
773
767
return MarketIfTouchedOrder(
774
768
trader_id = self .trader_id,
775
769
strategy_id = self .strategy_id,
@@ -883,7 +877,7 @@ cdef class OrderFactory:
883
877
884
878
"""
885
879
if client_order_id is None :
886
- client_order_id = self ._order_id_generator.generate ()
880
+ client_order_id = self .generate_client_order_id ()
887
881
return LimitIfTouchedOrder(
888
882
trader_id = self .trader_id,
889
883
strategy_id = self .strategy_id,
@@ -996,7 +990,7 @@ cdef class OrderFactory:
996
990
997
991
"""
998
992
if client_order_id is None :
999
- client_order_id = self ._order_id_generator.generate ()
993
+ client_order_id = self .generate_client_order_id ()
1000
994
return TrailingStopMarketOrder(
1001
995
trader_id = self .trader_id,
1002
996
strategy_id = self .strategy_id,
@@ -1125,7 +1119,7 @@ cdef class OrderFactory:
1125
1119
1126
1120
"""
1127
1121
if client_order_id is None :
1128
- client_order_id = self ._order_id_generator.generate ()
1122
+ client_order_id = self .generate_client_order_id ()
1129
1123
return TrailingStopLimitOrder(
1130
1124
trader_id = self .trader_id,
1131
1125
strategy_id = self .strategy_id,
@@ -1284,11 +1278,11 @@ cdef class OrderFactory:
1284
1278
cdef OrderListId order_list_id = self ._order_list_id_generator.generate()
1285
1279
1286
1280
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 ()
1288
1282
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 ()
1290
1284
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 ()
1292
1286
1293
1287
# #######################################################################
1294
1288
# ENTRY ORDER
0 commit comments