Qubx 0.6.35__cp312-cp312-manylinux_2_39_x86_64.whl → 0.6.36__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.

@@ -78,6 +78,10 @@ class BitfinexF(cxp.bitfinex):
78
78
  # GTX is not supported by bitfinex, so we need to convert it to PO
79
79
  params["timeInForce"] = "PO"
80
80
  params["postOnly"] = True
81
+
82
+ if "lev" not in params:
83
+ params["lev"] = 2
84
+
81
85
  response = await super().create_order(symbol, type, side, amount, price, params)
82
86
  return response
83
87
 
@@ -90,6 +94,9 @@ class BitfinexF(cxp.bitfinex):
90
94
  params["timeInForce"] = "PO"
91
95
  params["postOnly"] = True
92
96
 
97
+ if "lev" not in params:
98
+ params["lev"] = 2
99
+
93
100
  await self.load_markets()
94
101
  market = self.market(symbol)
95
102
  request = self.create_order_request(symbol, type, side, amount, price, params)
@@ -98,14 +105,22 @@ class BitfinexF(cxp.bitfinex):
98
105
  # request["cid"] = request["newClientOrderId"]
99
106
  # del request["newClientOrderId"]
100
107
 
101
- await self.bfx.wss.inputs.submit_order(
102
- type=request["type"],
103
- symbol=request["symbol"],
104
- amount=float(request["amount"]),
105
- price=float(request["price"]),
106
- flags=request["flags"],
107
- # cid=int(request["cid"]),
108
- )
108
+ _params = {
109
+ "type": request["type"],
110
+ "symbol": request["symbol"],
111
+ "amount": float(request["amount"]),
112
+ "lev": request["lev"],
113
+ }
114
+
115
+ if "price" in request:
116
+ _params["price"] = float(request["price"])
117
+ else:
118
+ _params["price"] = None
119
+
120
+ if "flags" in request:
121
+ _params["flags"] = request["flags"]
122
+
123
+ await self.bfx.wss.inputs.submit_order(**_params)
109
124
  return self.safe_order({"info": {}}, market) # type: ignore
110
125
 
111
126
  async def cancel_order_ws(self, id: str, symbol: Str = None, params={}) -> Order | None:
@@ -54,7 +54,7 @@ def ccxt_convert_order_info(instrument: Instrument, raw: dict[str, Any]) -> Orde
54
54
  type=_type,
55
55
  instrument=instrument,
56
56
  time=pd.Timestamp(raw["timestamp"], unit="ms"), # type: ignore
57
- quantity=amnt,
57
+ quantity=abs(amnt) * (-1 if side == "SELL" else 1),
58
58
  price=float(price) if price is not None else 0.0,
59
59
  side=side,
60
60
  status=status.upper(),
@@ -157,7 +157,7 @@ def ccxt_convert_positions(
157
157
  )
158
158
  pos = Position(
159
159
  instrument=instr,
160
- quantity=info["contracts"] * (-1 if info["side"] == "short" else 1),
160
+ quantity=abs(info["contracts"]) * (-1 if info["side"] == "short" else 1),
161
161
  pos_average_price=info["entryPrice"],
162
162
  )
163
163
  if info.get("markPrice", None) is not None:
@@ -454,7 +454,7 @@ class TardisDataProvider(IDataProvider):
454
454
 
455
455
  # Record data arrival for health monitoring
456
456
  tardis_type = data["type"]
457
- tardis_name = data["name"]
457
+ tardis_name = data["name"] if "name" in data else ""
458
458
  qubx_type = self._map_tardis_type_to_data_type(tardis_type)
459
459
  if qubx_type:
460
460
  self._health_monitor.record_data_arrival(qubx_type, dt_64(msg_time, "ns"))
@@ -536,7 +536,7 @@ def _create_broker(
536
536
  enable_mm=_enable_mm,
537
537
  )
538
538
  return get_ccxt_broker(
539
- exchange_name, exchange, channel, time_provider, account, data_provider, **exchange_config.params
539
+ exchange_name, exchange, channel, time_provider, account, data_provider, **params
540
540
  )
541
541
  case "paper":
542
542
  assert isinstance(account, SimulatedAccountProcessor)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: Qubx
3
- Version: 0.6.35
3
+ Version: 0.6.36
4
4
  Summary: Qubx - Quantitative Trading Framework
5
5
  Author: Dmitry Marienko
6
6
  Author-email: dmitry.marienko@xlydian.com
@@ -25,13 +25,13 @@ qubx/connectors/ccxt/exceptions.py,sha256=OfZc7iMdEG8uLorcZta2NuEuJrSIqi0FG7IICm
25
25
  qubx/connectors/ccxt/exchanges/__init__.py,sha256=eOWj-VN1ZpMX89hSzsVxdl1Knxae-29kPl_bUHbX--k,1885
26
26
  qubx/connectors/ccxt/exchanges/binance/broker.py,sha256=BB2V82zaOm1EjP3GrsOqQQMeGpml6-w23iv7goKrjyU,2111
27
27
  qubx/connectors/ccxt/exchanges/binance/exchange.py,sha256=ywmf373kVkXXw0h1PTqi7dg_3-sb7ZYKC8Y3qTmDtsY,24561
28
- qubx/connectors/ccxt/exchanges/bitfinex/bitfinex.py,sha256=SoMXtcPhuPU2Bi1kAymaq9VA9vHWPNt7l40EJMehMsk,10381
28
+ qubx/connectors/ccxt/exchanges/bitfinex/bitfinex.py,sha256=Q6inz-43fDrl--UsnTaDMGHWWkUlcmzbuMLMkcQDVyk,10682
29
29
  qubx/connectors/ccxt/exchanges/bitfinex/bitfinex_account.py,sha256=zrnA6GJiNddoM5JF-SlFFO4FpITDO5rGaU9ipshUvAY,1603
30
30
  qubx/connectors/ccxt/exchanges/kraken/kraken.py,sha256=RFrnvr1L1NZYoKYWR5_L8vVkpMXtY7UDkWRnHeoasDU,351
31
31
  qubx/connectors/ccxt/factory.py,sha256=T0cMSH5m6-T2LXrbZHM9uCSOYOfZf-bh1fAOXAoFhF4,3226
32
32
  qubx/connectors/ccxt/reader.py,sha256=qaZIaOZkRf3Rz31ZrEqqAv4kATk5zDlSq-LK1jziBs8,8314
33
- qubx/connectors/ccxt/utils.py,sha256=hin4NgFJCH8fwQMZsjnMCwtP4KiITm5xgkiBnWgzMkI,11733
34
- qubx/connectors/tardis/data.py,sha256=S8YjJ35_GXc3o8_VRPAM3L4GSnADPPdV46y0EgFd0NU,30919
33
+ qubx/connectors/ccxt/utils.py,sha256=7BRmVT3hbGFbhRpJXTJ3lYX7R6VXi5aPxNYj1EjxObY,11775
34
+ qubx/connectors/tardis/data.py,sha256=JYkU9PTxIL4m0L2bLROzKtiiJSRbk48GDR4wnrL9ENM,30945
35
35
  qubx/connectors/tardis/utils.py,sha256=epThu9DwqbDb7BgScH6fHa_FVpKUaItOqp3JwtKGc5g,9092
36
36
  qubx/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
37
  qubx/core/account.py,sha256=4_XskMLR9Uh-rpJBDYMrceYiGMvAZw56k1ve-unIW8w,19417
@@ -52,11 +52,11 @@ qubx/core/mixins/processing.py,sha256=dqehukrfqcLy5BeILKnkpHCvva4SbLKj1ZbQdnByu1
52
52
  qubx/core/mixins/subscription.py,sha256=V_g9wCPQ8S5SHkU-qOZ84cV5nReAUrV7DoSNAGG0LPY,10372
53
53
  qubx/core/mixins/trading.py,sha256=idfRPaqrvkfMxzu9mXr9i_xfqLee-ZAOrERxkxv6Ruo,7256
54
54
  qubx/core/mixins/universe.py,sha256=L3s2Jw46_J1iDh4622Gk_LvCjol4W7mflBwEHrLfZEw,9899
55
- qubx/core/series.cpython-312-x86_64-linux-gnu.so,sha256=FnN1en4og23NDYguU3uOYcYa-kt6m6-kH3UrVXCniLE,978280
55
+ qubx/core/series.cpython-312-x86_64-linux-gnu.so,sha256=LFmJpcBqlXuSBDKyT_vd9ZPJkBOmQu44w2npmICqNWc,978280
56
56
  qubx/core/series.pxd,sha256=jBdMwgO8J4Zrue0e_xQ5RlqTXqihpzQNu6V3ckZvvpY,3978
57
57
  qubx/core/series.pyi,sha256=RaHm_oHHiWiNUMJqVfx5FXAXniGLsHxUFOUpacn7GC0,4604
58
58
  qubx/core/series.pyx,sha256=7cM3zZThW59waHiYcZmMxvYj-HYD7Ej_l7nKA4emPjE,46477
59
- qubx/core/utils.cpython-312-x86_64-linux-gnu.so,sha256=btF3eoTRmCq9jLbwBm7ZvM4U-7W0pGUo7DXxQop3ZZs,86568
59
+ qubx/core/utils.cpython-312-x86_64-linux-gnu.so,sha256=JgYB_6ZJ8HwHPHUxUUvdmxygQnMbUvBIAy1tFCcCJ2g,86568
60
60
  qubx/core/utils.pyi,sha256=a-wS13V2p_dM1CnGq40JVulmiAhixTwVwt0ah5By0Hc,348
61
61
  qubx/core/utils.pyx,sha256=k5QHfEFvqhqWfCob89ANiJDKNG8gGbOh-O4CVoneZ8M,1696
62
62
  qubx/data/__init__.py,sha256=ELZykvpPGWc5rX7QoNyNQwMLgdKMG8MACOByA4pM5hA,549
@@ -117,7 +117,7 @@ qubx/restorers/signal.py,sha256=DBLqA7vDhoMTAzUC4N9UerrO0GbjeHdTeMoCz7U7iI8,6621
117
117
  qubx/restorers/state.py,sha256=duXyEHQhS1zdNdo3VKscMhieZ5sYNlfE4S_pPXQ1Tuw,4109
118
118
  qubx/restorers/utils.py,sha256=We2gfqwQKWziUYhuUnjb-xo-5tSlbuHWpPQn0CEMTn0,1155
119
119
  qubx/ta/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
120
- qubx/ta/indicators.cpython-312-x86_64-linux-gnu.so,sha256=lmn5jOH43-uSKHjA3wwcQP6-WHZYAzPsx3Yeo5xoOxg,654440
120
+ qubx/ta/indicators.cpython-312-x86_64-linux-gnu.so,sha256=t8YvA1PtEcC-ORaGIhhiB0JEIyPlEzcm36TEZSDFPZk,654440
121
121
  qubx/ta/indicators.pxd,sha256=Goo0_N0Xnju8XGo3Xs-3pyg2qr_0Nh5C-_26DK8U_IE,4224
122
122
  qubx/ta/indicators.pyi,sha256=19W0uERft49In5bf9jkJHkzJYEyE9gzudN7_DJ5Vdv8,1963
123
123
  qubx/ta/indicators.pyx,sha256=Xgpew46ZxSXsdfSEWYn3A0Q35MLsopB9n7iyCsXTufs,25969
@@ -151,11 +151,11 @@ qubx/utils/runner/_jupyter_runner.pyt,sha256=41dLQeI2EL4wJjBDht2qKbgISgS5DtmJ6Xt
151
151
  qubx/utils/runner/accounts.py,sha256=mpiv6oxr5z97zWt7STYyARMhWQIpc_XFKungb_pX38U,3270
152
152
  qubx/utils/runner/configs.py,sha256=4lonQgksh4wDygsN67lIidVRIUksskWuhL25A2IZwho,3694
153
153
  qubx/utils/runner/factory.py,sha256=vQ2dBTbrQE9YH__-TvuFzGF-E1li-vt_qQum9GHa11g,11666
154
- qubx/utils/runner/runner.py,sha256=DWc85M5thSQsuiV9FQiowJ3VF9DbwPiG9RE5Lc-7XEk,29314
154
+ qubx/utils/runner/runner.py,sha256=TF-nD-EH8k1U2Wkjk70eEVketU6HtWpTFmFH7vjE9Z8,29298
155
155
  qubx/utils/time.py,sha256=J0ZFGjzFL5T6GA8RPAel8hKG0sg2LZXeQ5YfDCfcMHA,10055
156
156
  qubx/utils/version.py,sha256=e52fIHyxzCiIuH7svCF6pkHuDlqL64rklqz-2XjWons,5309
157
- qubx-0.6.35.dist-info/LICENSE,sha256=qwMHOSJ2TD0nx6VUJvFhu1ynJdBfNozRMt6tnSul-Ts,35140
158
- qubx-0.6.35.dist-info/METADATA,sha256=vhl17QmSnb0raya3HhxLpxOPNDOi1YTXdQdvlpmxGH8,4492
159
- qubx-0.6.35.dist-info/WHEEL,sha256=XjdW4AGUgFDhpG9b3b2KPhtR_JLZvHyfemLgJJwcqOI,110
160
- qubx-0.6.35.dist-info/entry_points.txt,sha256=VqilDTe8mVuV9SbR-yVlZJBTjbkHIL2JBgXfQw076HY,47
161
- qubx-0.6.35.dist-info/RECORD,,
157
+ qubx-0.6.36.dist-info/LICENSE,sha256=qwMHOSJ2TD0nx6VUJvFhu1ynJdBfNozRMt6tnSul-Ts,35140
158
+ qubx-0.6.36.dist-info/METADATA,sha256=qrcaXiH2YR8EG6dGQFDeovwGCaZYat-ehfsK9vvXih0,4492
159
+ qubx-0.6.36.dist-info/WHEEL,sha256=XjdW4AGUgFDhpG9b3b2KPhtR_JLZvHyfemLgJJwcqOI,110
160
+ qubx-0.6.36.dist-info/entry_points.txt,sha256=VqilDTe8mVuV9SbR-yVlZJBTjbkHIL2JBgXfQw076HY,47
161
+ qubx-0.6.36.dist-info/RECORD,,
File without changes
File without changes