PyAlgoEngine 0.7.6.post5__tar.gz → 0.7.6.post7__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.
Files changed (53) hide show
  1. {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/PKG-INFO +1 -1
  2. {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/PyAlgoEngine.egg-info/PKG-INFO +1 -1
  3. {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/__init__.py +1 -1
  4. {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/apps/bokeh_server.py +6 -6
  5. {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/engine/__init__.py +3 -3
  6. {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/engine/algo_engine.py +3 -5
  7. {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/LICENSE +0 -0
  8. {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/PyAlgoEngine.egg-info/SOURCES.txt +0 -0
  9. {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/PyAlgoEngine.egg-info/dependency_links.txt +0 -0
  10. {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/PyAlgoEngine.egg-info/requires.txt +0 -0
  11. {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/PyAlgoEngine.egg-info/top_level.txt +0 -0
  12. {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/README.md +0 -0
  13. {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/apps/__init__.py +0 -0
  14. {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/apps/backtest/__init__.py +0 -0
  15. {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/apps/backtest/doc_server.py +0 -0
  16. {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/apps/backtest/tester.py +0 -0
  17. {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/apps/backtest/web_app.py +0 -0
  18. {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/apps/demo/__init__.py +0 -0
  19. {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/apps/demo/test.py +0 -0
  20. {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/apps/sim_input/__init__.py +0 -0
  21. {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/apps/sim_input/client.py +0 -0
  22. {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/apps/sim_input/sim_keyboard.py +0 -0
  23. {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/apps/sim_input/sim_mouse.py +0 -0
  24. {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/apps/sim_input/window.py +0 -0
  25. {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/backtest/__init__.py +0 -0
  26. {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/backtest/__main__.py +0 -0
  27. {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/backtest/metrics.py +0 -0
  28. {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/backtest/replay.py +0 -0
  29. {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/backtest/sim_match.py +0 -0
  30. {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/base/__init__.py +0 -0
  31. {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/base/console_utils.py +0 -0
  32. {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/base/finance_decimal.py +0 -0
  33. {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/base/market_buffer.py +0 -0
  34. {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/base/market_utils.py +0 -0
  35. {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/base/market_utils_nt.py +0 -0
  36. {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/base/market_utils_posix.py +0 -0
  37. {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/base/technical_analysis.py +0 -0
  38. {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/base/telemetrics.py +0 -0
  39. {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/base/trade_utils.py +0 -0
  40. {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/engine/event_engine.py +0 -0
  41. {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/engine/market_engine.py +0 -0
  42. {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/engine/trade_engine.py +0 -0
  43. {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/monitor/__init__.py +0 -0
  44. {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/monitor/advanced_data_interface.py +0 -0
  45. {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/profile/__init__.py +0 -0
  46. {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/profile/cn.py +0 -0
  47. {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/strategy/__init__.py +0 -0
  48. {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/strategy/strategy_engine.py +0 -0
  49. {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/utils/__init__.py +0 -0
  50. {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/utils/commit_regularizer.py +0 -0
  51. {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/utils/data_utils.py +0 -0
  52. {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/setup.cfg +0 -0
  53. {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: PyAlgoEngine
3
- Version: 0.7.6.post5
3
+ Version: 0.7.6.post7
4
4
  Summary: Basic algo engine
5
5
  Home-page: https://github.com/BolunHan/PyAlgoEngine
6
6
  Author: Bolun.Han
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: PyAlgoEngine
3
- Version: 0.7.6.post5
3
+ Version: 0.7.6.post7
4
4
  Summary: Basic algo engine
5
5
  Home-page: https://github.com/BolunHan/PyAlgoEngine
6
6
  Author: Bolun.Han
@@ -1,4 +1,4 @@
1
- __version__ = "0.7.6.post5"
1
+ __version__ = "0.7.6.post7"
2
2
 
3
3
  import logging
4
4
  import os
@@ -183,17 +183,17 @@ class DocManager(object):
183
183
  websocket_origin.append(f"{addr.address}:{self.port}")
184
184
  websocket_origin.append(f"{addr.address}:{self.bokeh_port}")
185
185
 
186
- if _ := f'localhost:{self.port}' not in websocket_origin:
186
+ if (_ := f'localhost:{self.port}') not in websocket_origin:
187
187
  websocket_origin.append(_)
188
- if _ := f'127.0.0.1:{self.port}' not in websocket_origin:
188
+ if (_ := f'127.0.0.1:{self.port}') not in websocket_origin:
189
189
  websocket_origin.append(_)
190
- if _ := f'localhost:{self.bokeh_port}' not in websocket_origin:
190
+ if (_ := f'localhost:{self.bokeh_port}') not in websocket_origin:
191
191
  websocket_origin.append(_)
192
- if _ := f'127.0.0.1:{self.bokeh_port}' not in websocket_origin:
192
+ if (_ := f'127.0.0.1:{self.bokeh_port}') not in websocket_origin:
193
193
  websocket_origin.append(_)
194
- if _ := f'{self.bokeh_host}:{self.port}' not in websocket_origin:
194
+ if (_ := f'{self.bokeh_host}:{self.port}') not in websocket_origin:
195
195
  websocket_origin.append(_)
196
- if _ := f'{self.bokeh_host}:{self.bokeh_port}' not in websocket_origin:
196
+ if (_ := f'{self.bokeh_host}:{self.bokeh_port}') not in websocket_origin:
197
197
  websocket_origin.append(_)
198
198
 
199
199
  self.bokeh_server = Server(
@@ -17,12 +17,12 @@ def set_logger(logger: logging.Logger):
17
17
  trade_engine.LOGGER = logger.getChild('TradeEngine')
18
18
 
19
19
 
20
- from .algo_engine import AlgoTemplate, ALGO_ENGINE, ALGO_REGISTRY
21
20
  from .event_engine import EVENT_ENGINE, TOPIC
22
- from .market_engine import MDS, MarketDataService, MarketDataMonitor, MonitorManager
21
+ from .market_engine import MDS, MarketDataService, MarketDataMonitor, MonitorManager, Singleton
22
+ from .algo_engine import AlgoTemplate, ALGO_ENGINE, ALGO_REGISTRY
23
23
  from .trade_engine import DirectMarketAccess, Balance, PositionManagementService, Inventory, RiskProfile
24
24
 
25
25
  __all__ = ['EVENT_ENGINE', 'TOPIC',
26
26
  'AlgoTemplate', 'ALGO_ENGINE', 'ALGO_REGISTRY',
27
- 'MDS', 'MarketDataService', 'MarketDataMonitor', 'MonitorManager',
27
+ 'MDS', 'MarketDataService', 'MarketDataMonitor', 'MonitorManager', 'Singleton',
28
28
  'DirectMarketAccess', 'Balance', 'PositionManagementService', 'Inventory', 'RiskProfile']
@@ -10,7 +10,7 @@ from typing import Type, TYPE_CHECKING
10
10
  import numpy as np
11
11
 
12
12
  from . import LOGGER
13
- from .market_engine import MDS
13
+ from .market_engine import MDS, Singleton
14
14
  from ..base import TransactionSide, TradeInstruction, MarketData, TradeReport, OrderState, OrderType
15
15
 
16
16
  LOGGER = LOGGER.getChild('AlgoEngine')
@@ -712,7 +712,7 @@ class AggressiveTimeout(PassiveTimeout, Aggressive):
712
712
  return Aggressive._canceled(self=self, order=order, **kwargs)
713
713
 
714
714
 
715
- class AlgoEngine(object):
715
+ class AlgoEngine(object, metaclass=Singleton):
716
716
  def __init__(self, mds=None, registry=None):
717
717
  self.mds = mds if mds is not None else MDS
718
718
  self.registry = registry if registry is not None else ALGO_REGISTRY
@@ -837,7 +837,7 @@ class AlgoEngine(object):
837
837
  return algo
838
838
 
839
839
 
840
- class AlgoRegistry(object):
840
+ class AlgoRegistry(object, metaclass=Singleton):
841
841
  """
842
842
  registry for trade algos
843
843
 
@@ -847,8 +847,6 @@ class AlgoRegistry(object):
847
847
  """
848
848
 
849
849
  def __init__(self):
850
- super().__init__()
851
-
852
850
  self.alias = {}
853
851
  self.registry = {}
854
852