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.
- {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/PKG-INFO +1 -1
- {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/PyAlgoEngine.egg-info/PKG-INFO +1 -1
- {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/__init__.py +1 -1
- {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/apps/bokeh_server.py +6 -6
- {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/engine/__init__.py +3 -3
- {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/engine/algo_engine.py +3 -5
- {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/LICENSE +0 -0
- {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/PyAlgoEngine.egg-info/SOURCES.txt +0 -0
- {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/PyAlgoEngine.egg-info/dependency_links.txt +0 -0
- {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/PyAlgoEngine.egg-info/requires.txt +0 -0
- {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/PyAlgoEngine.egg-info/top_level.txt +0 -0
- {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/README.md +0 -0
- {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/apps/__init__.py +0 -0
- {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/apps/backtest/__init__.py +0 -0
- {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/apps/backtest/doc_server.py +0 -0
- {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/apps/backtest/tester.py +0 -0
- {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/apps/backtest/web_app.py +0 -0
- {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/apps/demo/__init__.py +0 -0
- {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/apps/demo/test.py +0 -0
- {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/apps/sim_input/__init__.py +0 -0
- {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/apps/sim_input/client.py +0 -0
- {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/apps/sim_input/sim_keyboard.py +0 -0
- {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/apps/sim_input/sim_mouse.py +0 -0
- {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/apps/sim_input/window.py +0 -0
- {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/backtest/__init__.py +0 -0
- {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/backtest/__main__.py +0 -0
- {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/backtest/metrics.py +0 -0
- {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/backtest/replay.py +0 -0
- {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/backtest/sim_match.py +0 -0
- {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/base/__init__.py +0 -0
- {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/base/console_utils.py +0 -0
- {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/base/finance_decimal.py +0 -0
- {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/base/market_buffer.py +0 -0
- {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/base/market_utils.py +0 -0
- {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/base/market_utils_nt.py +0 -0
- {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/base/market_utils_posix.py +0 -0
- {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/base/technical_analysis.py +0 -0
- {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/base/telemetrics.py +0 -0
- {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/base/trade_utils.py +0 -0
- {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/engine/event_engine.py +0 -0
- {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/engine/market_engine.py +0 -0
- {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/engine/trade_engine.py +0 -0
- {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/monitor/__init__.py +0 -0
- {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/monitor/advanced_data_interface.py +0 -0
- {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/profile/__init__.py +0 -0
- {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/profile/cn.py +0 -0
- {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/strategy/__init__.py +0 -0
- {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/strategy/strategy_engine.py +0 -0
- {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/utils/__init__.py +0 -0
- {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/utils/commit_regularizer.py +0 -0
- {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/utils/data_utils.py +0 -0
- {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/setup.cfg +0 -0
- {pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/setup.py +0 -0
|
@@ -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
|
|
|
File without changes
|
|
File without changes
|
{pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/PyAlgoEngine.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/apps/backtest/doc_server.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/apps/sim_input/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/apps/sim_input/sim_keyboard.py
RENAMED
|
File without changes
|
{pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/apps/sim_input/sim_mouse.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/base/market_utils_posix.py
RENAMED
|
File without changes
|
{pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/base/technical_analysis.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/monitor/advanced_data_interface.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/strategy/strategy_engine.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyalgoengine-0.7.6.post5 → pyalgoengine-0.7.6.post7}/algo_engine/utils/commit_regularizer.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|