siglab-py 0.5.0__py3-none-any.whl → 0.5.2__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 siglab-py might be problematic. Click here for more details.

@@ -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>
@@ -15,7 +15,7 @@ siglab_py/market_data_providers/test_provider.py,sha256=wBLCgcWjs7FGZJXWsNyn30lk
15
15
  siglab_py/ordergateway/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
16
16
  siglab_py/ordergateway/client.py,sha256=LvtrYirrdFOcKgTkvuqwdEN7r3nurjX320ESnk7tHE0,15095
17
17
  siglab_py/ordergateway/encrypt_keys_util.py,sha256=-qi87db8To8Yf1WS1Q_Cp2Ya7ZqgWlRqSHfNXCM7wE4,1339
18
- siglab_py/ordergateway/gateway.py,sha256=-7TfrKiFfvOnB1Xf3RhQbhMbmy_b6WsfDrj0z2o4avo,43089
18
+ siglab_py/ordergateway/gateway.py,sha256=Z-BQ-Z9gXoNrKQHzRIy9R1mnCybf9QwWhHpqkSI7bBM,43901
19
19
  siglab_py/ordergateway/test_ordergateway.py,sha256=4PE2flp_soGcD3DrI7zJOzZndjkb6I5XaDrFNNq4Huo,4009
20
20
  siglab_py/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
21
21
  siglab_py/tests/integration/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -23,7 +23,7 @@ siglab_py/tests/integration/market_data_util_tests.py,sha256=p-RWIJZLyj0lAdfi4QT
23
23
  siglab_py/tests/unit/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
24
24
  siglab_py/tests/unit/analytic_util_tests.py,sha256=eeusM5zkQR2QyVhT7nqF0mwHVg7vlxwtgv2JnLqwQgY,3852
25
25
  siglab_py/tests/unit/market_data_util_tests.py,sha256=A1y83itISmMJdn6wLpfwcr4tGola8wTf1D1xbelMvgw,2026
26
- siglab_py/tests/unit/trading_util_tests.py,sha256=tyefqOTQOoXSlemSDonqmdHp61-1nuXb0_6oeLlaNSM,2689
26
+ siglab_py/tests/unit/trading_util_tests.py,sha256=664pnAwhdwfRI21ktPpuAxNydz6XtxBrU_Dm1rTGquQ,2883
27
27
  siglab_py/util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
28
28
  siglab_py/util/analytic_util.py,sha256=blFJ1kY_aSJeuzzk28vdB4nhLgmosz0L8IJaJCZy9OM,47272
29
29
  siglab_py/util/aws_util.py,sha256=KGmjHrr1rpnnxr33nXHNzTul4tvyyxl9p6gpwNv0Ygc,2557
@@ -31,8 +31,8 @@ siglab_py/util/market_data_util.py,sha256=mUXg4uaiX3b6_klgJWIEgnUQU4IUd6CwTOqKLi
31
31
  siglab_py/util/notification_util.py,sha256=vySgHjpHgwFDLW0tHSi_AGh9JBbPc25IUgvWxmjAeT8,2658
32
32
  siglab_py/util/retry_util.py,sha256=g-UU6pkPouWZZRZEqP99R2Z0lX5xzckYkzjwqqSDpVQ,922
33
33
  siglab_py/util/slack_notification_util.py,sha256=G27n-adbT3Q6oaHSMvu_Nom794rrda5PprSF-zvmzkM,1912
34
- siglab_py/util/trading_util.py,sha256=FmqsamuPhMjZUkz4lCyuE8MHFapXn6yNl8Isy7peQEs,3047
35
- siglab_py-0.5.0.dist-info/METADATA,sha256=CXGdpwIvDjVhjApfl9GFdYjUl8lXukcxL0_GMhBOv-A,979
36
- siglab_py-0.5.0.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
37
- siglab_py-0.5.0.dist-info/top_level.txt,sha256=AbD4VR9OqmMOGlMJLkAVPGQMtUPIQv0t1BF5xmcLJSk,10
38
- siglab_py-0.5.0.dist-info/RECORD,,
34
+ siglab_py/util/trading_util.py,sha256=Z-sK4cTi-5rIXYVgmIMgOWlIaxcCEX1lXlCKTweg6-U,3233
35
+ siglab_py-0.5.2.dist-info/METADATA,sha256=yL1RdzFxrjYNgzdB18G-XtbaM-HLC0NWeWcqXLws6Vw,979
36
+ siglab_py-0.5.2.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
37
+ siglab_py-0.5.2.dist-info/top_level.txt,sha256=AbD4VR9OqmMOGlMJLkAVPGQMtUPIQv0t1BF5xmcLJSk,10
38
+ siglab_py-0.5.2.dist-info/RECORD,,