PyAlgoEngine 0.4.0.post2__tar.gz → 0.4.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.
- {pyalgoengine-0.4.0.post2 → PyAlgoEngine-0.4.2}/PKG-INFO +1 -6
- {pyalgoengine-0.4.0.post2 → PyAlgoEngine-0.4.2}/PyAlgoEngine.egg-info/PKG-INFO +1 -6
- {pyalgoengine-0.4.0.post2 → PyAlgoEngine-0.4.2}/PyAlgoEngine.egg-info/SOURCES.txt +9 -2
- {pyalgoengine-0.4.0.post2 → PyAlgoEngine-0.4.2}/PyAlgoEngine.egg-info/requires.txt +0 -1
- PyAlgoEngine-0.4.2/algo_engine/__init__.py +39 -0
- {pyalgoengine-0.4.0.post2 → PyAlgoEngine-0.4.2}/algo_engine/back_test/__init__.py +11 -0
- {pyalgoengine-0.4.0.post2 → PyAlgoEngine-0.4.2}/algo_engine/back_test/__main__.py +4 -4
- {pyalgoengine-0.4.0.post2 → PyAlgoEngine-0.4.2}/algo_engine/back_test/replay.py +3 -2
- {pyalgoengine-0.4.0.post2 → PyAlgoEngine-0.4.2}/algo_engine/back_test/sim_match.py +5 -3
- PyAlgoEngine-0.4.2/algo_engine/base/__init__.py +28 -0
- PyAlgoEngine-0.4.2/algo_engine/base/console_utils.py +1070 -0
- PyAlgoEngine-0.4.2/algo_engine/base/finance_decimal.py +258 -0
- PyAlgoEngine-0.4.2/algo_engine/base/market_utils.py +1522 -0
- PyAlgoEngine-0.4.2/algo_engine/base/technical_analysis.py +406 -0
- PyAlgoEngine-0.4.2/algo_engine/base/telemetrics.py +78 -0
- PyAlgoEngine-0.4.2/algo_engine/base/trade_utils.py +709 -0
- {pyalgoengine-0.4.0.post2 → PyAlgoEngine-0.4.2}/algo_engine/engine/__init__.py +13 -0
- {pyalgoengine-0.4.0.post2 → PyAlgoEngine-0.4.2}/algo_engine/engine/algo_engine.py +82 -46
- {pyalgoengine-0.4.0.post2 → PyAlgoEngine-0.4.2}/algo_engine/engine/event_engine.py +1 -1
- {pyalgoengine-0.4.0.post2 → PyAlgoEngine-0.4.2}/algo_engine/engine/market_engine.py +8 -10
- {pyalgoengine-0.4.0.post2 → PyAlgoEngine-0.4.2}/algo_engine/engine/trade_engine.py +2 -1
- {pyalgoengine-0.4.0.post2 → PyAlgoEngine-0.4.2}/algo_engine/monitor/advanced_data_interface.py +1 -2
- {pyalgoengine-0.4.0.post2 → PyAlgoEngine-0.4.2}/algo_engine/profile/__init__.py +28 -10
- {pyalgoengine-0.4.0.post2 → PyAlgoEngine-0.4.2}/algo_engine/profile/cn.py +44 -31
- {pyalgoengine-0.4.0.post2/algo_engine/strategie → PyAlgoEngine-0.4.2/algo_engine/strategy}/__init__.py +10 -3
- {pyalgoengine-0.4.0.post2/algo_engine/strategie → PyAlgoEngine-0.4.2/algo_engine/strategy}/strategy_engine.py +3 -2
- {pyalgoengine-0.4.0.post2 → PyAlgoEngine-0.4.2}/setup.py +0 -1
- pyalgoengine-0.4.0.post2/algo_engine/__init__.py +0 -74
- {pyalgoengine-0.4.0.post2 → PyAlgoEngine-0.4.2}/LICENSE +0 -0
- {pyalgoengine-0.4.0.post2 → PyAlgoEngine-0.4.2}/PyAlgoEngine.egg-info/dependency_links.txt +0 -0
- {pyalgoengine-0.4.0.post2 → PyAlgoEngine-0.4.2}/PyAlgoEngine.egg-info/top_level.txt +0 -0
- {pyalgoengine-0.4.0.post2 → PyAlgoEngine-0.4.2}/README.md +0 -0
- {pyalgoengine-0.4.0.post2 → PyAlgoEngine-0.4.2}/algo_engine/monitor/__init__.py +0 -0
- {pyalgoengine-0.4.0.post2 → PyAlgoEngine-0.4.2}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: PyAlgoEngine
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.2
|
|
4
4
|
Summary: Basic algo engine
|
|
5
5
|
Home-page: https://github.com/BolunHan/PyAlgoEngine
|
|
6
6
|
Author: Bolun.Han
|
|
@@ -14,11 +14,6 @@ Classifier: Operating System :: OS Independent
|
|
|
14
14
|
Requires-Python: >=3.1
|
|
15
15
|
Description-Content-Type: text/markdown
|
|
16
16
|
License-File: LICENSE
|
|
17
|
-
Requires-Dist: numpy
|
|
18
|
-
Requires-Dist: pandas
|
|
19
|
-
Requires-Dist: exchange_calendars
|
|
20
|
-
Requires-Dist: PyQuantKit>=0.3.1
|
|
21
|
-
Requires-Dist: PyEventEngine>=0.3.0.post4
|
|
22
17
|
|
|
23
18
|
# PyAlgoEngine
|
|
24
19
|
python algo trading engine
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: PyAlgoEngine
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.2
|
|
4
4
|
Summary: Basic algo engine
|
|
5
5
|
Home-page: https://github.com/BolunHan/PyAlgoEngine
|
|
6
6
|
Author: Bolun.Han
|
|
@@ -14,11 +14,6 @@ Classifier: Operating System :: OS Independent
|
|
|
14
14
|
Requires-Python: >=3.1
|
|
15
15
|
Description-Content-Type: text/markdown
|
|
16
16
|
License-File: LICENSE
|
|
17
|
-
Requires-Dist: numpy
|
|
18
|
-
Requires-Dist: pandas
|
|
19
|
-
Requires-Dist: exchange_calendars
|
|
20
|
-
Requires-Dist: PyQuantKit>=0.3.1
|
|
21
|
-
Requires-Dist: PyEventEngine>=0.3.0.post4
|
|
22
17
|
|
|
23
18
|
# PyAlgoEngine
|
|
24
19
|
python algo trading engine
|
|
@@ -11,6 +11,13 @@ algo_engine/back_test/__init__.py
|
|
|
11
11
|
algo_engine/back_test/__main__.py
|
|
12
12
|
algo_engine/back_test/replay.py
|
|
13
13
|
algo_engine/back_test/sim_match.py
|
|
14
|
+
algo_engine/base/__init__.py
|
|
15
|
+
algo_engine/base/console_utils.py
|
|
16
|
+
algo_engine/base/finance_decimal.py
|
|
17
|
+
algo_engine/base/market_utils.py
|
|
18
|
+
algo_engine/base/technical_analysis.py
|
|
19
|
+
algo_engine/base/telemetrics.py
|
|
20
|
+
algo_engine/base/trade_utils.py
|
|
14
21
|
algo_engine/engine/__init__.py
|
|
15
22
|
algo_engine/engine/algo_engine.py
|
|
16
23
|
algo_engine/engine/event_engine.py
|
|
@@ -20,5 +27,5 @@ algo_engine/monitor/__init__.py
|
|
|
20
27
|
algo_engine/monitor/advanced_data_interface.py
|
|
21
28
|
algo_engine/profile/__init__.py
|
|
22
29
|
algo_engine/profile/cn.py
|
|
23
|
-
algo_engine/
|
|
24
|
-
algo_engine/
|
|
30
|
+
algo_engine/strategy/__init__.py
|
|
31
|
+
algo_engine/strategy/strategy_engine.py
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
__version__ = "0.4.2"
|
|
2
|
+
|
|
3
|
+
import logging
|
|
4
|
+
import os
|
|
5
|
+
import traceback
|
|
6
|
+
|
|
7
|
+
from . import profile
|
|
8
|
+
from .base.telemetrics import LOGGER
|
|
9
|
+
|
|
10
|
+
if 'ALGO_DIR' in os.environ:
|
|
11
|
+
WORKING_DIRECTORY = os.path.realpath(os.environ['ALGO_DIR'])
|
|
12
|
+
else:
|
|
13
|
+
WORKING_DIRECTORY = str(os.getcwd())
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def set_logger(logger: logging.Logger):
|
|
17
|
+
base.set_logger(logger=logger)
|
|
18
|
+
engine.set_logger(logger=logger.getChild('Engine'))
|
|
19
|
+
back_test.set_logger(logger=logger.getChild('BackTest'))
|
|
20
|
+
strategy.set_logger(logger=logger.getChild('Strategy'))
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
from . import base
|
|
24
|
+
from . import engine
|
|
25
|
+
from . import back_test
|
|
26
|
+
from . import strategy
|
|
27
|
+
|
|
28
|
+
engine.LOGGER.info(f'AlgoEngine version {__version__}')
|
|
29
|
+
|
|
30
|
+
# import addon module
|
|
31
|
+
try:
|
|
32
|
+
from . import algo_addon
|
|
33
|
+
|
|
34
|
+
engine.LOGGER.info(f'PyAlgoEngineAddons import successful, version {algo_addon.__version__}')
|
|
35
|
+
except ImportError:
|
|
36
|
+
algo_addon = None
|
|
37
|
+
engine.LOGGER.debug(f'Install PyAlgoEngineAddons to use additional trading algos module\n{traceback.format_exc()}')
|
|
38
|
+
|
|
39
|
+
__all__ = ['LOGGER', 'base', 'engine', 'back_test', 'strategy', 'algo_addon']
|
|
@@ -1,7 +1,18 @@
|
|
|
1
|
+
import logging
|
|
2
|
+
|
|
1
3
|
from .. import LOGGER
|
|
2
4
|
|
|
3
5
|
LOGGER = LOGGER.getChild('BackTest')
|
|
4
6
|
|
|
7
|
+
|
|
8
|
+
def set_logger(logger: logging.Logger):
|
|
9
|
+
global LOGGER
|
|
10
|
+
LOGGER = logger
|
|
11
|
+
|
|
12
|
+
replay.LOGGER = LOGGER.getChild('Replay')
|
|
13
|
+
sim_match.LOGGER = LOGGER.getChild('SimMatch')
|
|
14
|
+
|
|
15
|
+
|
|
5
16
|
from .replay import Replay, SimpleReplay, ProgressiveReplay
|
|
6
17
|
from .sim_match import SimMatch
|
|
7
18
|
|
|
@@ -3,12 +3,12 @@ __package__ = 'algo_engine.back_test'
|
|
|
3
3
|
import datetime
|
|
4
4
|
from typing import Callable
|
|
5
5
|
|
|
6
|
-
import
|
|
6
|
+
import event_engine
|
|
7
7
|
|
|
8
8
|
from ..engine import TOPIC, MarketDataService, Balance, RiskProfile, PositionManagementService
|
|
9
9
|
from ..engine.algo_engine import AlgoRegistry, AlgoEngine
|
|
10
|
-
from ..
|
|
11
|
-
from ..
|
|
10
|
+
from ..strategy import EventDMA
|
|
11
|
+
from ..strategy.strategy_engine import StrategyEngine
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
def test_stop(code=0):
|
|
@@ -29,7 +29,7 @@ def test_start(start_date: datetime.date, end_date: datetime.date, data_loader:
|
|
|
29
29
|
|
|
30
30
|
|
|
31
31
|
# in backtest, the global objects is newly inited to separate from production
|
|
32
|
-
EVENT_ENGINE =
|
|
32
|
+
EVENT_ENGINE = event_engine.EventEngine()
|
|
33
33
|
MDS = MarketDataService()
|
|
34
34
|
ALGO_REGISTRY = AlgoRegistry()
|
|
35
35
|
ALGO_ENGINE = AlgoEngine(mds=MDS, registry=ALGO_REGISTRY)
|
|
@@ -3,9 +3,10 @@ import datetime
|
|
|
3
3
|
import inspect
|
|
4
4
|
from typing import Iterable
|
|
5
5
|
|
|
6
|
-
from PyQuantKit import Progress, TickData, TransactionData, TradeData, OrderBook
|
|
7
|
-
|
|
8
6
|
from . import LOGGER
|
|
7
|
+
from ..base import Progress, TickData, TransactionData, TradeData, OrderBook
|
|
8
|
+
|
|
9
|
+
LOGGER = LOGGER.getChild('Replay')
|
|
9
10
|
|
|
10
11
|
|
|
11
12
|
class Replay(object, metaclass=abc.ABCMeta):
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import datetime
|
|
2
2
|
|
|
3
|
-
from PyQuantKit import OrderType, MarketData, BarData, TradeData, TickData, OrderState, OrderBook, TradeReport, TradeInstruction
|
|
4
|
-
|
|
5
3
|
from . import LOGGER
|
|
4
|
+
from ..base import OrderType, MarketData, BarData, TradeData, TickData, OrderState, OrderBook, TradeReport, TradeInstruction
|
|
6
5
|
from ..engine.event_engine import TOPIC, EVENT_ENGINE
|
|
6
|
+
from ..profile import PROFILE
|
|
7
|
+
|
|
8
|
+
LOGGER = LOGGER.getChild('SimMatch')
|
|
7
9
|
|
|
8
10
|
|
|
9
11
|
class SimMatch(object):
|
|
@@ -290,4 +292,4 @@ class SimMatch(object):
|
|
|
290
292
|
|
|
291
293
|
@property
|
|
292
294
|
def market_time(self) -> datetime.datetime:
|
|
293
|
-
return datetime.datetime.fromtimestamp(self.timestamp)
|
|
295
|
+
return datetime.datetime.fromtimestamp(self.timestamp, tz=PROFILE.time_zone)
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import logging
|
|
2
|
+
|
|
3
|
+
from .telemetrics import LOGGER
|
|
4
|
+
from ..profile import PROFILE
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
def set_logger(logger: logging.Logger):
|
|
8
|
+
global LOGGER
|
|
9
|
+
LOGGER = logger
|
|
10
|
+
|
|
11
|
+
market_utils.LOGGER = logger.getChild('MarketUtils')
|
|
12
|
+
trade_utils.LOGGER = logger.getChild('TradeUtils')
|
|
13
|
+
technical_analysis.LOGGER = logger.getChild('TA')
|
|
14
|
+
console_utils.LOGGER = logger.getChild('Console')
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
from .finance_decimal import FinancialDecimal
|
|
18
|
+
from .market_utils import TransactionSide, MarketData, OrderBook, BarData, TickData, TransactionData, TradeData, OrderBookBuffer, BarDataBuffer, TickDataBuffer, TransactionDataBuffer
|
|
19
|
+
from .technical_analysis import TechnicalAnalysis
|
|
20
|
+
from .trade_utils import OrderState, OrderType, TradeInstruction, TradeReport
|
|
21
|
+
from .console_utils import Progress, GetInput, GetArgs, count_ordinal, TerminalStyle, InteractiveShell, ShellTransfer
|
|
22
|
+
|
|
23
|
+
__all__ = ['PROFILE',
|
|
24
|
+
'FinancialDecimal',
|
|
25
|
+
'TransactionSide', 'MarketData', 'OrderBook', 'BarData', 'TickData', 'TransactionData', 'TradeData', 'OrderBookBuffer', 'BarDataBuffer', 'TickDataBuffer', 'TransactionDataBuffer',
|
|
26
|
+
'TechnicalAnalysis',
|
|
27
|
+
'OrderState', 'OrderType', 'TradeInstruction', 'TradeReport',
|
|
28
|
+
'Progress', 'GetInput', 'GetArgs', 'count_ordinal', 'TerminalStyle', 'InteractiveShell', 'ShellTransfer']
|