siglab-py 0.5.0__tar.gz → 0.5.2__tar.gz

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 siglab-py might be problematic. Click here for more details.

Files changed (42) hide show
  1. {siglab_py-0.5.0 → siglab_py-0.5.2}/PKG-INFO +1 -1
  2. {siglab_py-0.5.0 → siglab_py-0.5.2}/pyproject.toml +1 -1
  3. {siglab_py-0.5.0 → siglab_py-0.5.2}/setup.cfg +1 -1
  4. {siglab_py-0.5.0 → siglab_py-0.5.2}/siglab_py/ordergateway/gateway.py +14 -1
  5. {siglab_py-0.5.0 → siglab_py-0.5.2}/siglab_py/tests/unit/trading_util_tests.py +4 -0
  6. {siglab_py-0.5.0 → siglab_py-0.5.2}/siglab_py/util/trading_util.py +3 -0
  7. {siglab_py-0.5.0 → siglab_py-0.5.2}/siglab_py.egg-info/PKG-INFO +1 -1
  8. {siglab_py-0.5.0 → siglab_py-0.5.2}/siglab_py/__init__.py +0 -0
  9. {siglab_py-0.5.0 → siglab_py-0.5.2}/siglab_py/constants.py +0 -0
  10. {siglab_py-0.5.0 → siglab_py-0.5.2}/siglab_py/exchanges/__init__.py +0 -0
  11. {siglab_py-0.5.0 → siglab_py-0.5.2}/siglab_py/exchanges/any_exchange.py +0 -0
  12. {siglab_py-0.5.0 → siglab_py-0.5.2}/siglab_py/exchanges/futubull.py +0 -0
  13. {siglab_py-0.5.0 → siglab_py-0.5.2}/siglab_py/market_data_providers/__init__.py +0 -0
  14. {siglab_py-0.5.0 → siglab_py-0.5.2}/siglab_py/market_data_providers/aggregated_orderbook_provider.py +0 -0
  15. {siglab_py-0.5.0 → siglab_py-0.5.2}/siglab_py/market_data_providers/candles_provider.py +0 -0
  16. {siglab_py-0.5.0 → siglab_py-0.5.2}/siglab_py/market_data_providers/candles_ta_provider.py +0 -0
  17. {siglab_py-0.5.0 → siglab_py-0.5.2}/siglab_py/market_data_providers/ccxt_candles_ta_to_csv.py +0 -0
  18. {siglab_py-0.5.0 → siglab_py-0.5.2}/siglab_py/market_data_providers/deribit_options_expiry_provider.py +0 -0
  19. {siglab_py-0.5.0 → siglab_py-0.5.2}/siglab_py/market_data_providers/futu_candles_ta_to_csv.py +0 -0
  20. {siglab_py-0.5.0 → siglab_py-0.5.2}/siglab_py/market_data_providers/orderbooks_provider.py +0 -0
  21. {siglab_py-0.5.0 → siglab_py-0.5.2}/siglab_py/market_data_providers/test_provider.py +0 -0
  22. {siglab_py-0.5.0 → siglab_py-0.5.2}/siglab_py/ordergateway/__init__.py +0 -0
  23. {siglab_py-0.5.0 → siglab_py-0.5.2}/siglab_py/ordergateway/client.py +0 -0
  24. {siglab_py-0.5.0 → siglab_py-0.5.2}/siglab_py/ordergateway/encrypt_keys_util.py +0 -0
  25. {siglab_py-0.5.0 → siglab_py-0.5.2}/siglab_py/ordergateway/test_ordergateway.py +0 -0
  26. {siglab_py-0.5.0 → siglab_py-0.5.2}/siglab_py/tests/__init__.py +0 -0
  27. {siglab_py-0.5.0 → siglab_py-0.5.2}/siglab_py/tests/integration/__init__.py +0 -0
  28. {siglab_py-0.5.0 → siglab_py-0.5.2}/siglab_py/tests/integration/market_data_util_tests.py +0 -0
  29. {siglab_py-0.5.0 → siglab_py-0.5.2}/siglab_py/tests/unit/__init__.py +0 -0
  30. {siglab_py-0.5.0 → siglab_py-0.5.2}/siglab_py/tests/unit/analytic_util_tests.py +0 -0
  31. {siglab_py-0.5.0 → siglab_py-0.5.2}/siglab_py/tests/unit/market_data_util_tests.py +0 -0
  32. {siglab_py-0.5.0 → siglab_py-0.5.2}/siglab_py/util/__init__.py +0 -0
  33. {siglab_py-0.5.0 → siglab_py-0.5.2}/siglab_py/util/analytic_util.py +0 -0
  34. {siglab_py-0.5.0 → siglab_py-0.5.2}/siglab_py/util/aws_util.py +0 -0
  35. {siglab_py-0.5.0 → siglab_py-0.5.2}/siglab_py/util/market_data_util.py +0 -0
  36. {siglab_py-0.5.0 → siglab_py-0.5.2}/siglab_py/util/notification_util.py +0 -0
  37. {siglab_py-0.5.0 → siglab_py-0.5.2}/siglab_py/util/retry_util.py +0 -0
  38. {siglab_py-0.5.0 → siglab_py-0.5.2}/siglab_py/util/slack_notification_util.py +0 -0
  39. {siglab_py-0.5.0 → siglab_py-0.5.2}/siglab_py.egg-info/SOURCES.txt +0 -0
  40. {siglab_py-0.5.0 → siglab_py-0.5.2}/siglab_py.egg-info/dependency_links.txt +0 -0
  41. {siglab_py-0.5.0 → siglab_py-0.5.2}/siglab_py.egg-info/requires.txt +0 -0
  42. {siglab_py-0.5.0 → siglab_py-0.5.2}/siglab_py.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: siglab_py
3
- Version: 0.5.0
3
+ Version: 0.5.2
4
4
  Summary: Market data fetches, TA calculations and generic order gateway.
5
5
  Author: r0bbarh00d
6
6
  Author-email: r0bbarh00d <r0bbarh00d@gmail.com>
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "siglab_py"
7
- version = "0.5.0"
7
+ version = "0.5.2"
8
8
  description = "Market data fetches, TA calculations and generic order gateway."
9
9
  authors = [{name = "r0bbarh00d", email = "r0bbarh00d@gmail.com"}]
10
10
  license = {text = "MIT"}
@@ -1,6 +1,6 @@
1
1
  [metadata]
2
2
  name = siglab_py
3
- version = 0.5.0
3
+ version = 0.5.2
4
4
  description = Market data fetches, TA calculations and generic order gateway.
5
5
  author = r0bbarh00d
6
6
  author_email = r0bbarh00d@gmail.com
@@ -31,6 +31,13 @@ from util.notification_util import dispatch_notification
31
31
 
32
32
  current_filename = os.path.basename(__file__)
33
33
 
34
+ '''
35
+ Error: RuntimeError: aiodns needs a SelectorEventLoop on Windows.
36
+ Hack, by far the filthest hack I done in my career: Set SelectorEventLoop on Windows
37
+ '''
38
+ if sys.platform == 'win32':
39
+ asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
40
+
34
41
  '''
35
42
  Usage:
36
43
  set PYTHONPATH=%PYTHONPATH%;D:\dev\siglab\siglab_py
@@ -456,7 +463,13 @@ async def execute_one_position(
456
463
  'reduceOnly': slice.reduce_only
457
464
  }
458
465
  if position.order_type=='limit':
459
- # order_params['postOnly'] = True
466
+ if position.leg_room_bps<0:
467
+ order_params['postOnly'] = True
468
+ else:
469
+ log(
470
+ f"{position.side} {rounded_slice_amount_in_base_ccy} {position.ticker}. Limit order to be sent as Market order. Invalid leg_room_bps: {position.leg_room_bps}. By convention, leg_room_bps more positive means you want your order to get filled more aggressively. To post limit orders, leg_room_bps should be negative.",
471
+ log_level=LogLevel.WARNING
472
+ )
460
473
 
461
474
  if not param['dry_run']:
462
475
  executed_order = await exchange.create_order( # type: ignore
@@ -5,6 +5,10 @@ from pathlib import Path
5
5
 
6
6
  from util.trading_util import *
7
7
 
8
+ '''
9
+ Have a look at this for a visual explaination how "Gradually tightened stops" works:
10
+ https://github.com/r0bbar/siglab/blob/master/siglab_py/tests/manual/trading_util_tests.ipynb
11
+ '''
8
12
 
9
13
  # @unittest.skip("Skip all integration tests.")
10
14
  class TradingUtilTests(unittest.TestCase):
@@ -49,6 +49,9 @@ What's 'loss_trailing'? 'loss_trailing' is essentially pnl drop from max_unreali
49
49
  unrealized_pnl_live = $40
50
50
  max_unrealized_pnl_live = $100
51
51
  loss_trailing = (1 - unrealized_pnl_live/max_unrealized_pnl_live) = (1-40/100) = 0.6 (Or 60%)
52
+
53
+ Have a look at this for a visual explaination how "Gradually tightened stops" works:
54
+ https://github.com/r0bbar/siglab/blob/master/siglab_py/tests/manual/trading_util_tests.ipynb
52
55
  '''
53
56
  def calc_eff_trailing_sl(
54
57
  tp_min_percent : float,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: siglab-py
3
- Version: 0.5.0
3
+ Version: 0.5.2
4
4
  Summary: Market data fetches, TA calculations and generic order gateway.
5
5
  Author: r0bbarh00d
6
6
  Author-email: r0bbarh00d <r0bbarh00d@gmail.com>