hyperquant 0.98__py3-none-any.whl → 0.99__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.
hyperquant/broker/bitmart.py
CHANGED
|
@@ -4,7 +4,7 @@ import asyncio
|
|
|
4
4
|
import json
|
|
5
5
|
import random
|
|
6
6
|
import time
|
|
7
|
-
from typing import Any, Literal, Sequence
|
|
7
|
+
from typing import Any, Literal, Optional, Sequence
|
|
8
8
|
|
|
9
9
|
import pybotters
|
|
10
10
|
|
|
@@ -335,6 +335,7 @@ class Bitmart:
|
|
|
335
335
|
category: Literal[1,2,"limit","market"] = "limit",
|
|
336
336
|
price: float,
|
|
337
337
|
qty: float,
|
|
338
|
+
qty_contract: Optional[int] = None,
|
|
338
339
|
side: Literal[1, 2, 3, 4, "open_long", "close_short", "close_long", "open_short", "buy", "sell"] = "open_long",
|
|
339
340
|
mode: Literal[1, 2, 3, 4, "gtc", "ioc", "fok", "maker_only", "maker-only", "post_only"] = "gtc",
|
|
340
341
|
open_type: Literal[1, 2, "cross", "isolated"] = "isolated",
|
|
@@ -361,25 +362,31 @@ class Bitmart:
|
|
|
361
362
|
raise ValueError(f"Market metadata unavailable for symbol: {symbol}")
|
|
362
363
|
|
|
363
364
|
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
365
|
+
if qty_contract is not None:
|
|
366
|
+
|
|
367
|
+
contract_size_str = detail.get("contract_size") or detail.get("vol_unit") or "1"
|
|
368
|
+
try:
|
|
369
|
+
contract_size_val = float(contract_size_str)
|
|
370
|
+
except (TypeError, ValueError):
|
|
371
|
+
contract_size_val = 1.0
|
|
372
|
+
if contract_size_val <= 0:
|
|
373
|
+
raise ValueError(f"Invalid contract_size for {symbol}: {contract_size_str}")
|
|
374
|
+
|
|
375
|
+
contracts_float = float(qty) / contract_size_val
|
|
376
|
+
contracts_int = int(round(contracts_float))
|
|
377
|
+
if contracts_int <= 0:
|
|
378
|
+
raise ValueError(
|
|
379
|
+
f"Volume too small for contract size ({contract_size_val}): volume={qty}"
|
|
380
|
+
)
|
|
381
|
+
if abs(contracts_float - contracts_int) > 1e-8:
|
|
382
|
+
raise ValueError(
|
|
383
|
+
f"Volume must be a multiple of contract_size ({contract_size_val}). "
|
|
384
|
+
f"Received volume={qty} -> {contracts_float} contracts."
|
|
385
|
+
)
|
|
386
|
+
else:
|
|
387
|
+
contracts_int = int(qty)
|
|
388
|
+
if contracts_int <= 0:
|
|
389
|
+
raise ValueError(f"Volume must be positive integer contracts: volume={qty}")
|
|
383
390
|
|
|
384
391
|
price_unit = detail.get("price_unit") or 1
|
|
385
392
|
try:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: hyperquant
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.99
|
|
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=
|
|
9
|
+
hyperquant/broker/bitmart.py,sha256=d9eEWCskoRRAH0knjyT8K-3ob0MK_0uQ9h_0UnQSOJM,17708
|
|
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
|
|
@@ -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.
|
|
36
|
-
hyperquant-0.
|
|
37
|
-
hyperquant-0.
|
|
35
|
+
hyperquant-0.99.dist-info/METADATA,sha256=Xp8eYdpew89TrwNCR-NUygnlHVMwrQ3SkG8kCogxm28,4409
|
|
36
|
+
hyperquant-0.99.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
37
|
+
hyperquant-0.99.dist-info/RECORD,,
|
|
File without changes
|