hyperquant 0.96__py3-none-any.whl → 0.98__py3-none-any.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 hyperquant might be problematic. Click here for more details.

@@ -33,10 +33,19 @@ class Bitmart:
33
33
 
34
34
  self.account_index = account_index
35
35
  self.apis = apis
36
+ self.symbol_to_contract_id: dict[str, str] = {}
36
37
 
37
38
  async def __aenter__(self) -> "Bitmart":
38
39
  await self.update("detail")
39
40
  asyncio.create_task(self.auto_refresh())
41
+
42
+ for entry in self.store.detail.find():
43
+ contract_id = entry.get("contract_id")
44
+ symbol = entry.get("name") or entry.get("display_name")
45
+ if contract_id is None or symbol is None:
46
+ continue
47
+ self.symbol_to_contract_id[str(symbol)] = str(contract_id)
48
+
40
49
  return self
41
50
 
42
51
  async def auto_refresh(self, sec=3600, test=False) -> None:
@@ -325,8 +334,8 @@ class Bitmart:
325
334
  *,
326
335
  category: Literal[1,2,"limit","market"] = "limit",
327
336
  price: float,
328
- volume: float,
329
- way: Literal[1, 2, 3, 4, "open_long", "close_short", "close_long", "open_short", "buy", "sell"] = "open_long",
337
+ qty: float,
338
+ side: Literal[1, 2, 3, 4, "open_long", "close_short", "close_long", "open_short", "buy", "sell"] = "open_long",
330
339
  mode: Literal[1, 2, 3, 4, "gtc", "ioc", "fok", "maker_only", "maker-only", "post_only"] = "gtc",
331
340
  open_type: Literal[1, 2, "cross", "isolated"] = "isolated",
332
341
  leverage: int | str = 10,
@@ -334,8 +343,9 @@ class Bitmart:
334
343
  trigger_price: float | None = None,
335
344
  custom_id: int | str | None = None,
336
345
  extra_params: dict[str, Any] | None = None,
337
- ) -> dict[str, Any]:
346
+ ) -> int:
338
347
  """Submit an order via ``submitOrder``.
348
+ 返回值: order_id (int)
339
349
  """
340
350
 
341
351
  contract_id = self.get_contract_id(symbol)
@@ -359,16 +369,16 @@ class Bitmart:
359
369
  if contract_size_val <= 0:
360
370
  raise ValueError(f"Invalid contract_size for {symbol}: {contract_size_str}")
361
371
 
362
- contracts_float = float(volume) / contract_size_val
372
+ contracts_float = float(qty) / contract_size_val
363
373
  contracts_int = int(round(contracts_float))
364
374
  if contracts_int <= 0:
365
375
  raise ValueError(
366
- f"Volume too small for contract size ({contract_size_val}): volume={volume}"
376
+ f"Volume too small for contract size ({contract_size_val}): volume={qty}"
367
377
  )
368
378
  if abs(contracts_float - contracts_int) > 1e-8:
369
379
  raise ValueError(
370
380
  f"Volume must be a multiple of contract_size ({contract_size_val}). "
371
- f"Received volume={volume} -> {contracts_float} contracts."
381
+ f"Received volume={qty} -> {contracts_float} contracts."
372
382
  )
373
383
 
374
384
  price_unit = detail.get("price_unit") or 1
@@ -396,7 +406,7 @@ class Bitmart:
396
406
  price_fmt = f"{adjusted_price:.15f}".rstrip("0").rstrip(".") or "0"
397
407
 
398
408
  way_value = self._normalize_enum(
399
- way,
409
+ side,
400
410
  {
401
411
  "open_long": 1,
402
412
  "close_short": 2,
@@ -460,7 +470,10 @@ class Bitmart:
460
470
 
461
471
  if resp.get("success") is False or resp.get("errno") not in (None, "OK"):
462
472
  raise ValueError(f"Bitmart submitOrder error: {resp}")
463
- return resp
473
+
474
+ # {"errno":"OK","message":"Success","data":{"order_id":3000236525013551},"success":true}
475
+ # 直接取order_id返回
476
+ return resp.get("data", {}).get("order_id")
464
477
 
465
478
  async def cancel_order(
466
479
  self,
@@ -378,28 +378,10 @@ class BitmartDataStore(DataStoreCollection):
378
378
  """
379
379
  return self._get("detail")
380
380
 
381
- @property
382
- def ticker(self) -> Ticker:
383
- """Bitmart 24h 行情 (`ifcontract/tickers`)。
384
-
385
- .. code:: json
386
-
387
- {
388
- "contract_id": 1,
389
- "last_price": "95500.1",
390
- "open_24h": "91000",
391
- "high_24h": "96000",
392
- "low_24h": "90000",
393
- "base_vol_24h": "12345",
394
- "quote_vol_24h": "118000000"
395
- }
396
- """
397
- return self._get("ticker")
398
-
399
381
  @property
400
382
  def orders(self) -> Orders:
401
383
  """用户订单 (`userAllOrders`)。
402
-
384
+ key: order_id
403
385
  .. code:: json
404
386
 
405
387
  [
@@ -528,19 +510,19 @@ class BitmartDataStore(DataStoreCollection):
528
510
  {
529
511
  "account_id": 14794011,
530
512
  "coin_code": "USDT",
531
- "available_vol": "0",
532
- "cash_vol": "0",
513
+ "available_vol": "10.970977797397999999",
514
+ "cash_vol": "11.000536099457999999",
533
515
  "freeze_vol": "0",
534
- "realised_vol": "0",
535
- "un_realised_vol": "0",
536
- "earnings_vol": "0",
516
+ "realised_vol": "0.000536099457999999",
517
+ "un_realised_vol": "-0.00001502",
518
+ "earnings_vol": "0.000536099457999999",
537
519
  "total_im": "",
538
520
  "margin_balance": "",
539
521
  "available_balance": "",
540
522
  "trans_out_balance": "",
541
523
  "status": 0,
542
524
  "total_balance": "",
543
- "account_rights": "0",
525
+ "account_rights": "11.000521079457999999",
544
526
  "bonus_voucher_vol": "",
545
527
  "freeze_bonus_voucher_vol": ""
546
528
  }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hyperquant
3
- Version: 0.96
3
+ Version: 0.98
4
4
  Summary: A minimal yet hyper-efficient backtesting framework for quantitative trading
5
5
  Project-URL: Homepage, https://github.com/yourusername/hyperquant
6
6
  Project-URL: Issues, https://github.com/yourusername/hyperquant/issues
@@ -6,7 +6,7 @@ hyperquant/logkit.py,sha256=nUo7nx5eONvK39GOhWwS41zNRL756P2J7-5xGzwXnTY,8462
6
6
  hyperquant/notikit.py,sha256=x5yAZ_tAvLQRXcRbcg-VabCaN45LUhvlTZnUqkIqfAA,3596
7
7
  hyperquant/broker/auth.py,sha256=C8B5-x8Qcaeafm4ZwPCVFR7GRURmHC3CE4_vdg00Qgw,12139
8
8
  hyperquant/broker/bitget.py,sha256=X_S0LKZ7FZAEb6oEMr1vdGP1fondzK74BhmNTpRDSEA,9488
9
- hyperquant/broker/bitmart.py,sha256=3lAkSy8J2p-M-663cUVFuRU-XtgNEwWAa4SKgeG6Vb8,16798
9
+ hyperquant/broker/bitmart.py,sha256=jMU2SPLB7bfndopJtnL5rqowZNZH-dnbBCkOAapJtDk,17365
10
10
  hyperquant/broker/coinup.py,sha256=eOr8BTRXiTb5tCU2FDmvBdXXgqiwVmCbP5pdeA1ORJ8,20390
11
11
  hyperquant/broker/coinw.py,sha256=SnJU0vASh77rfcpMGWaIfTblQSjQk3vjlW_4juYdbcs,17214
12
12
  hyperquant/broker/edgex.py,sha256=TqUO2KRPLN_UaxvtLL6HnA9dAQXC1sGxOfqTHd6W5k8,18378
@@ -20,7 +20,7 @@ hyperquant/broker/lib/hpstore.py,sha256=LnLK2zmnwVvhEbLzYI-jz_SfYpO1Dv2u2cJaRAb8
20
20
  hyperquant/broker/lib/hyper_types.py,sha256=HqjjzjUekldjEeVn6hxiWA8nevAViC2xHADOzDz9qyw,991
21
21
  hyperquant/broker/lib/util.py,sha256=iMU1qF0CHj5zzlIMEQGwjz-qtEVosEe7slXOCuB7Rcw,566
22
22
  hyperquant/broker/models/bitget.py,sha256=0RwDY75KrJb-c-oYoMxbqxWfsILe-n_Npojz4UFUq7c,11389
23
- hyperquant/broker/models/bitmart.py,sha256=Utu67H0D1wzppKeHqZmsPLeJ0sao2-yR_iGwWP5p0wU,20800
23
+ hyperquant/broker/models/bitmart.py,sha256=6lOpQXLcuR7MEayvMt_e-okE2A8CCUvpzAT6aCxWSaM,20455
24
24
  hyperquant/broker/models/coinup.py,sha256=X_ngB2_sgTOdfAZqTyeWvCN03j-0_inZ6ugZKW6hR7k,11173
25
25
  hyperquant/broker/models/coinw.py,sha256=LvLMVP7i-qkkTK1ubw8eBkMK2RQmFoKPxdKqmC4IToY,22157
26
26
  hyperquant/broker/models/edgex.py,sha256=vPAkceal44cjTYKQ_0BoNAskOpmkno_Yo1KxgMLPc6Y,33954
@@ -32,6 +32,6 @@ hyperquant/datavison/_util.py,sha256=92qk4vO856RqycO0YqEIHJlEg-W9XKapDVqAMxe6rbw
32
32
  hyperquant/datavison/binance.py,sha256=3yNKTqvt_vUQcxzeX4ocMsI5k6Q6gLZrvgXxAEad6Kc,5001
33
33
  hyperquant/datavison/coinglass.py,sha256=PEjdjISP9QUKD_xzXNzhJ9WFDTlkBrRQlVL-5pxD5mo,10482
34
34
  hyperquant/datavison/okx.py,sha256=yg8WrdQ7wgWHNAInIgsWPM47N3Wkfr253169IPAycAY,6898
35
- hyperquant-0.96.dist-info/METADATA,sha256=QrSvVyXcZYw1iM1uv6KfrWUVbt97Tyxzi4qinAyKDqw,4409
36
- hyperquant-0.96.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
37
- hyperquant-0.96.dist-info/RECORD,,
35
+ hyperquant-0.98.dist-info/METADATA,sha256=qlQ1iovL3mASEQDkMbKD2Mn9Fkcs94oImykALPv7iE8,4409
36
+ hyperquant-0.98.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
37
+ hyperquant-0.98.dist-info/RECORD,,