Qubx 0.7.5__cp312-cp312-manylinux_2_39_x86_64.whl → 0.7.6__cp312-cp312-manylinux_2_39_x86_64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of Qubx might be problematic. Click here for more details.

@@ -415,9 +415,8 @@ class LighterAccountProcessor(BasicAccountProcessor):
415
415
  try:
416
416
  orders = parse_account_all_orders_message(message, self.instrument_loader)
417
417
 
418
- logger.debug(
419
- f"Received {len(orders)} orders: \n\t{'\n\t'.join([f'{order.id} ({order.instrument.symbol})' for order in orders])}"
420
- )
418
+ _d_msg = "\n\t".join([f"{order.id} ({order.instrument.symbol})" for order in orders])
419
+ logger.debug(f"Received {len(orders)} orders: \n\t{_d_msg}")
421
420
 
422
421
  for order in orders:
423
422
  self.channel.send((order.instrument, "order", order, False))
@@ -401,7 +401,9 @@ class LighterBroker(IBroker):
401
401
  base_amount_int = int(amount * (10**instrument.size_precision))
402
402
  price_int = int(price * (10**instrument.price_precision))
403
403
 
404
- # logger.debug(f"Modify order {order.id}: amount={order.quantity} → {amount}, price={order.price} → {price}")
404
+ logger.debug(
405
+ f"[{order.instrument.symbol}] :: Modifying order {order.id}: amount={order.quantity} → {amount}, price={order.price} → {price}"
406
+ )
405
407
 
406
408
  # Step 1: Sign modification transaction locally
407
409
  signer = self.client.signer_client
@@ -435,7 +437,6 @@ class LighterBroker(IBroker):
435
437
  options=order.options,
436
438
  )
437
439
 
438
- logger.info(f"Order modification submitted via WebSocket: {order.id}")
439
440
  return updated_order
440
441
 
441
442
  except Exception as e:
qubx/core/interfaces.py CHANGED
@@ -942,8 +942,7 @@ class ITradingManager:
942
942
 
943
943
  Args:
944
944
  instrument: The instrument to get the minimum size for
945
- amount: The amount to get the minimum size for
946
- price: The price to get the minimum size for
945
+ amount: The amount to be traded to determine if it's position reducing or not
947
946
  """
948
947
  ...
949
948
 
qubx/core/series.pyx CHANGED
@@ -1236,7 +1236,10 @@ cdef class OHLCV(TimeSeries):
1236
1236
 
1237
1237
  return self._is_new_item
1238
1238
 
1239
- cpdef short update_by_bar(self, long long time, double open, double high, double low, double close, double vol_incr=0.0, double b_vol_incr=0.0, double volume_quote=0.0, double bought_volume_quote=0.0, int trade_count=0, short is_incremental=1):
1239
+ cpdef short update_by_bar(
1240
+ self, long long time, double open, double high, double low, double close,
1241
+ double vol_incr=0.0, double b_vol_incr=0.0, double volume_quote=0.0, double bought_volume_quote=0.0, int trade_count=0, short is_incremental=1
1242
+ ):
1240
1243
  cdef Bar b
1241
1244
  cdef Bar l_bar
1242
1245
  bar_start_time = floor_t64(time, self.timeframe)
@@ -1468,14 +1471,15 @@ cdef class OHLCV(TimeSeries):
1468
1471
  ValueError(f"Input must be a pandas DataFrame, got {type(df_p).__name__}")
1469
1472
 
1470
1473
  _ohlc = OHLCV(name, infer_series_frequency(df_p).item())
1474
+ _has_count = "count" in df_p.columns
1471
1475
  for t in df_p.itertuples():
1472
1476
  _ohlc.update_by_bar(
1473
- t.Index.asm8, t.open, t.high, t.low, t.close,
1474
- getattr(t, "volume", 0.0),
1475
- getattr(t, "taker_buy_volume", 0.0),
1476
- getattr(t, "quote_volume", 0.0),
1477
- getattr(t, "taker_buy_quote_volume", 0.0),
1478
- getattr(t, "count", 0.0)
1477
+ time=t.Index.asm8, open=t.open, high=t.high, low=t.low, close=t.close,
1478
+ vol_incr=getattr(t, "volume", 0.0),
1479
+ b_vol_incr=getattr(t, "taker_buy_volume", 0.0),
1480
+ volume_quote=getattr(t, "quote_volume", 0.0),
1481
+ bought_volume_quote=getattr(t, "taker_buy_quote_volume", 0.0),
1482
+ trade_count=t.count if _has_count else 0,
1479
1483
  )
1480
1484
  return _ohlc
1481
1485
 
@@ -149,6 +149,7 @@ class StateResolver:
149
149
 
150
150
  # - now check which positions are open in live and we didn't update them by InitializingSignal
151
151
  for instrument, live_pos in live_positions.items():
152
+ ctx.cancel_orders(live_pos.instrument)
152
153
  if live_pos.is_open() and instrument not in sim_active_targets:
153
154
  # - just close the position
154
155
  ctx.emit_signal(InitializingSignal(time=ctx.time(), instrument=instrument, signal=0.0))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: Qubx
3
- Version: 0.7.5
3
+ Version: 0.7.6
4
4
  Summary: Qubx - Quantitative Trading Framework
5
5
  License-File: LICENSE
6
6
  Author: Dmitry Marienko
@@ -60,8 +60,8 @@ qubx/connectors/ccxt/warmup_service.py,sha256=a7qSFUmgUm6s7qP-ae9RP-j1bR9XyEsNy4
60
60
  qubx/connectors/tardis/data.py,sha256=TlapY1dwc_aQxf4Na9sF620lK9drrg7E9E8gPTGD3FE,31004
61
61
  qubx/connectors/tardis/utils.py,sha256=epThu9DwqbDb7BgScH6fHa_FVpKUaItOqp3JwtKGc5g,9092
62
62
  qubx/connectors/xlighter/__init__.py,sha256=6Cs8jUvlDasyjue5KFQBgp5ws7Sh-BiMd-O2ECCIHAE,2174
63
- qubx/connectors/xlighter/account.py,sha256=CzwlDTj2aaW5XjbY5_O6l-SFbP-qji2QnGNMB8b1_l0,19719
64
- qubx/connectors/xlighter/broker.py,sha256=QT4KLFM7vVttBLXU9ihWdeLnCap7aeoXhqoPePioTX0,28702
63
+ qubx/connectors/xlighter/account.py,sha256=Z1iGxRJezFrgNYrnyv9O9hAxc5hgme5R3kVWFbyqsd8,19717
64
+ qubx/connectors/xlighter/broker.py,sha256=AeqVMwTn-1oyEvChFt2WLJktrQZvrDAcimX0QSFR4Ug,28681
65
65
  qubx/connectors/xlighter/client.py,sha256=0u99uK93KUIvqPRRdY5tAklO5FLPmLRwTb2qk9sABTs,14685
66
66
  qubx/connectors/xlighter/constants.py,sha256=KgZGrVpCD0anIHOCOx2w7MU9Jmp1cVTkxr-uDtrVNng,4137
67
67
  qubx/connectors/xlighter/data.py,sha256=4aXsxv5owmW2SljAo5ueF38LkZiPeM_s4Mc5dOj_i0g,32545
@@ -92,7 +92,7 @@ qubx/core/errors.py,sha256=LENtlgmVzxxUFNCsuy4PwyHYhkZkxuZQ2BPif8jaGmw,1411
92
92
  qubx/core/exceptions.py,sha256=KBJPtAKm9AOqJ1vhwhjbK2WYF8SXoMDbnp0yDgcQy3E,640
93
93
  qubx/core/helpers.py,sha256=-6p_vPyVzbQ3Pab41oaUorVmWW1UqKsJZm0qR2U5QHM,24504
94
94
  qubx/core/initializer.py,sha256=sY9HYkhYgmHndyPjJ0bUEIoC3nwkg7edwsFB3zar6ec,9167
95
- qubx/core/interfaces.py,sha256=IQ0odBWkcPrNO1akxLnob1dVX7CQWhjMzsq3vqlb_RE,81051
95
+ qubx/core/interfaces.py,sha256=ry5o1jx1wAVJOaS3XZie4XDgPbRFyWrtKPGPScaQ-zA,81025
96
96
  qubx/core/loggers.py,sha256=eYijsR02S5u1Hv21vjIk_dOUwOMv0fiBDYwEmFhAoWk,14344
97
97
  qubx/core/lookups.py,sha256=Bed30kPZvbTGjZ8exojhIMOIVfB46j6741yF3fXGTiM,18313
98
98
  qubx/core/metrics.py,sha256=upqH4QrFdhmqlApzSDwenvVd0uxFrMOJMRhjWt9SNSc,85783
@@ -103,11 +103,11 @@ qubx/core/mixins/subscription.py,sha256=2nUikNNPsMExS9yO38kNt7jk1vKE-RPm0b3h1bU6
103
103
  qubx/core/mixins/trading.py,sha256=jW4P6Gba0O1kaQIy5rl3UqwPwAmEJrMdGYoWj1AhleI,20422
104
104
  qubx/core/mixins/universe.py,sha256=aj1Ai_WUccotBt419SMPgAf2xPZL5n0U9CdTD4tQGGI,10845
105
105
  qubx/core/mixins/utils.py,sha256=P71cLuqKjId8989MwOL_BtvvCnnwOFMkZyB1SY-0Ork,147
106
- qubx/core/series.cpython-312-x86_64-linux-gnu.so,sha256=Rti--xevwPJYUJgHefsoU3FxqI6VSt-dEgDAVGmn4M4,1175336
106
+ qubx/core/series.cpython-312-x86_64-linux-gnu.so,sha256=raCBNQqOmDLbQriqLeYWGFFv1kf69c-VEgl9tJBxUcw,1175336
107
107
  qubx/core/series.pxd,sha256=YZ8WWQLjyn6fpIlyfnRlARoY3w0XzrvKZkCRlfkt-C0,4998
108
108
  qubx/core/series.pyi,sha256=axEc8DBfeCUYu4NZ2eRiL5oWaWhed-uYlR3U0d1QBos,8020
109
- qubx/core/series.pyx,sha256=RE828CSZoRKOJJSw72h_K4e6gtTAEuTqT6GUq4bwntw,62176
110
- qubx/core/utils.cpython-312-x86_64-linux-gnu.so,sha256=EhCgS-x-8Wtbiwf-3c9FWq9OK301pl61eVdjHUEiC6w,86568
109
+ qubx/core/series.pyx,sha256=FMUCWKFyNj08TKVhR7gOR4UHob5ZFvdahc4nipyVKe8,62339
110
+ qubx/core/utils.cpython-312-x86_64-linux-gnu.so,sha256=BTSDP0ivS5vJeC88QBJ_LaQYk_L-LFqvSBIqe9DzbD4,86568
111
111
  qubx/core/utils.pyi,sha256=a-wS13V2p_dM1CnGq40JVulmiAhixTwVwt0ah5By0Hc,348
112
112
  qubx/core/utils.pyx,sha256=UR9achMR-LARsztd2eelFsDsFH3n0gXACIKoGNPI9X4,1766
113
113
  qubx/data/__init__.py,sha256=cCUJjuq0LCBeeOKXIvBh_YQI00je_IQmr9OcHARJCPE,896
@@ -177,7 +177,7 @@ qubx/resources/instruments/symbols-kraken-spot.json,sha256=3JLxi18nQAXE5J73hFY-m
177
177
  qubx/resources/instruments/symbols-kraken.f-future.json,sha256=FzOg8KIcl4nBQdPqugc-dMHxXGvyiQncNAHs84Tf4Pg,247468
178
178
  qubx/resources/instruments/symbols-kraken.f-perpetual.json,sha256=a1xXqbEcOyL1NLQO2JsSsseezPP7QCB9dub4IQhRviE,177233
179
179
  qubx/restarts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
180
- qubx/restarts/state_resolvers.py,sha256=_MpcCqHL0_NL1A3CC9iKIwVffkjMHj6QJir3jQGrG10,7755
180
+ qubx/restarts/state_resolvers.py,sha256=vQrjLyaFCS9mlJfNeOIeXp9CATh1oVQNUlOAqcTlqV0,7806
181
181
  qubx/restarts/time_finders.py,sha256=AX0Hb-RvB4YSot6L5m1ylkj09V7TYYXFvKgdb8gj0ok,4307
182
182
  qubx/restorers/__init__.py,sha256=vrnZBPJHR0-6knAccj4bK0tkjUPNRl32qiLr5Mv4aR0,911
183
183
  qubx/restorers/balance.py,sha256=yLV1vBki0XhBxrOhgaJBHuuL8VmIii82LAWgLxusbcE,6967
@@ -188,7 +188,7 @@ qubx/restorers/signal.py,sha256=5nK5ji8AucyWrFBK9uW619YCI_vPRGFnuDu8JnG3B_Y,1451
188
188
  qubx/restorers/state.py,sha256=I1VIN0ZcOjigc3WMHIYTNJeAAbN9YB21MDcMl04ZWmY,8018
189
189
  qubx/restorers/utils.py,sha256=We2gfqwQKWziUYhuUnjb-xo-5tSlbuHWpPQn0CEMTn0,1155
190
190
  qubx/ta/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
191
- qubx/ta/indicators.cpython-312-x86_64-linux-gnu.so,sha256=_DjVvXGy-tv-z6glT3RMheaAGi6jjNizJY4st2IU45Y,950440
191
+ qubx/ta/indicators.cpython-312-x86_64-linux-gnu.so,sha256=Ez93JglVhpz7LIzVW6bHloihxmsMssY54hP-kzfyU5A,950440
192
192
  qubx/ta/indicators.pxd,sha256=khYJZY3nn33jeVaURpDwF-GCMtrNwzMkPv43aB6zOv0,6563
193
193
  qubx/ta/indicators.pyi,sha256=XNySCW8WE3j4lpCUU2BKRjnAQ7kjjGBXvdowhLBuEAM,3719
194
194
  qubx/ta/indicators.pyx,sha256=igtVvX81a3Fv5o_3n4dtCVaom7JN3RP25CT8cwJMz7Y,55757
@@ -223,7 +223,7 @@ qubx/utils/charting/orderbook.py,sha256=NmeXxru3CUiKLtl1DzCBbQgSdL4qmTDIxV0u81p2
223
223
  qubx/utils/collections.py,sha256=go2sH_q2TlXqI3Vxq8GHLfNGlYL4JwS3X1lwJWbpFLE,7425
224
224
  qubx/utils/hft/__init__.py,sha256=rZjNmRtD1TWAEe7JPgiak9qJftf8yQavLviWReKQJ5w,101
225
225
  qubx/utils/hft/numba_utils.py,sha256=C_C3MwEW5ZbLhOMSH6SSYbQ7BfnvuKhgOtY_N-U-ULM,146
226
- qubx/utils/hft/orderbook.cpython-312-x86_64-linux-gnu.so,sha256=eQcQ7KnPm4MSc1lVjARgsVOpooq9oWm2rmdhb92mGNU,316592
226
+ qubx/utils/hft/orderbook.cpython-312-x86_64-linux-gnu.so,sha256=GI8EGU_TOBReSf1uWE07bJXsvWaTTiwdKvAT1me8Y1U,316592
227
227
  qubx/utils/hft/orderbook.pyi,sha256=F2P9kbh314wjCwfn6BivFWQMEDMLnZDQ2rmWbGoM7-o,5076
228
228
  qubx/utils/hft/orderbook.pyx,sha256=gbNrtpNRZjZ8DjXjrIXsw20UixErDrLzN-8Qep8sSJg,15217
229
229
  qubx/utils/marketdata/binance.py,sha256=hWX3noZj704JIMBqlwsXA5IzUP7EgiLiC2r12dJAKQA,11565
@@ -242,7 +242,7 @@ qubx/utils/plotting/renderers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5N
242
242
  qubx/utils/plotting/renderers/plotly.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
243
243
  qubx/utils/questdb.py,sha256=fIOMImSa3N3eZKMakHqs5q5ld4m5jkG6IkrTGfuvXFg,5191
244
244
  qubx/utils/rate_limiter.py,sha256=nI4yJ2VjTGoHYPQvURyd7rtpfn37ms6xd0hLt6RJeDc,7008
245
- qubx/utils/ringbuffer.cpython-312-x86_64-linux-gnu.so,sha256=Lzzc37dSpaQ9GDCAl00E0tXxt3VcpcNpFdktjz8E_20,108328
245
+ qubx/utils/ringbuffer.cpython-312-x86_64-linux-gnu.so,sha256=k4G3Gh4RrAxol5ki1Y_EhErw-Iv6P0MknZmbKFJaMR8,108328
246
246
  qubx/utils/ringbuffer.pxd,sha256=NiLNnVwSJuDZj6M99DnHt07OEhKVBlEEf80rNukJJeQ,374
247
247
  qubx/utils/ringbuffer.pyi,sha256=H0MD68jctVlko09KfxI9-1MloapO5Ba6smaqx1_X5Zo,4580
248
248
  qubx/utils/ringbuffer.pyx,sha256=3S8MQreAKMfhaMm3RwztfEQ2AJYDyfPQpfMAsb-JCWA,7069
@@ -270,8 +270,8 @@ qubx/utils/slack.py,sha256=jhos-5pNGomg3TvFZRVvF0b_FrzxfvnTqAEMlDIrgn8,12234
270
270
  qubx/utils/time.py,sha256=SYOiz2UqX7dCUhO_vBeWcm42_LmDl-59wp7INu0R8is,15355
271
271
  qubx/utils/version.py,sha256=e52fIHyxzCiIuH7svCF6pkHuDlqL64rklqz-2XjWons,5309
272
272
  qubx/utils/websocket_manager.py,sha256=ld4jvwnWyIkdKpgpUzyfnXGT3Ul4bGemXjy4HX9XTKs,17182
273
- qubx-0.7.5.dist-info/METADATA,sha256=5-PdIGCOZ_i_0kUSk8ljKKNRQWhpPqz4pJjNHv1lKks,6062
274
- qubx-0.7.5.dist-info/WHEEL,sha256=RA6gLSyyVpI0R7d3ofBrM1iY5kDUsPwh15AF0XpvgQo,110
275
- qubx-0.7.5.dist-info/entry_points.txt,sha256=VqilDTe8mVuV9SbR-yVlZJBTjbkHIL2JBgXfQw076HY,47
276
- qubx-0.7.5.dist-info/licenses/LICENSE,sha256=qwMHOSJ2TD0nx6VUJvFhu1ynJdBfNozRMt6tnSul-Ts,35140
277
- qubx-0.7.5.dist-info/RECORD,,
273
+ qubx-0.7.6.dist-info/METADATA,sha256=NoXwGPDHHrP7vctkmbL_pHxpeYA3hiieAUzfF3M1DRM,6062
274
+ qubx-0.7.6.dist-info/WHEEL,sha256=RA6gLSyyVpI0R7d3ofBrM1iY5kDUsPwh15AF0XpvgQo,110
275
+ qubx-0.7.6.dist-info/entry_points.txt,sha256=VqilDTe8mVuV9SbR-yVlZJBTjbkHIL2JBgXfQw076HY,47
276
+ qubx-0.7.6.dist-info/licenses/LICENSE,sha256=qwMHOSJ2TD0nx6VUJvFhu1ynJdBfNozRMt6tnSul-Ts,35140
277
+ qubx-0.7.6.dist-info/RECORD,,
File without changes