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
         
     |