PyAlgoEngine 0.8.0a1__tar.gz → 0.8.0a3__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.8.0a1 → pyalgoengine-0.8.0a3}/PKG-INFO +1 -1
- {pyalgoengine-0.8.0a1 → pyalgoengine-0.8.0a3}/PyAlgoEngine.egg-info/PKG-INFO +1 -1
- {pyalgoengine-0.8.0a1 → pyalgoengine-0.8.0a3}/PyAlgoEngine.egg-info/SOURCES.txt +0 -3
- {pyalgoengine-0.8.0a1 → pyalgoengine-0.8.0a3}/algo_engine/__init__.py +1 -1
- pyalgoengine-0.8.0a3/algo_engine/base/__init__.py +61 -0
- {pyalgoengine-0.8.0a1 → pyalgoengine-0.8.0a3}/setup.py +35 -3
- pyalgoengine-0.8.0a1/algo_engine/base/__init__.py +0 -44
- pyalgoengine-0.8.0a1/algo_engine/base/market_buffer.py +0 -571
- pyalgoengine-0.8.0a1/algo_engine/base/market_data_wrapper.py +0 -547
- pyalgoengine-0.8.0a1/algo_engine/base/market_utils.py +0 -3092
- {pyalgoengine-0.8.0a1 → pyalgoengine-0.8.0a3}/LICENSE +0 -0
- {pyalgoengine-0.8.0a1 → pyalgoengine-0.8.0a3}/PyAlgoEngine.egg-info/dependency_links.txt +0 -0
- {pyalgoengine-0.8.0a1 → pyalgoengine-0.8.0a3}/PyAlgoEngine.egg-info/requires.txt +0 -0
- {pyalgoengine-0.8.0a1 → pyalgoengine-0.8.0a3}/PyAlgoEngine.egg-info/top_level.txt +0 -0
- {pyalgoengine-0.8.0a1 → pyalgoengine-0.8.0a3}/README.md +0 -0
- {pyalgoengine-0.8.0a1 → pyalgoengine-0.8.0a3}/algo_engine/apps/__init__.py +0 -0
- {pyalgoengine-0.8.0a1 → pyalgoengine-0.8.0a3}/algo_engine/apps/backtest/__init__.py +0 -0
- {pyalgoengine-0.8.0a1 → pyalgoengine-0.8.0a3}/algo_engine/apps/backtest/doc_server.py +0 -0
- {pyalgoengine-0.8.0a1 → pyalgoengine-0.8.0a3}/algo_engine/apps/backtest/tester.py +0 -0
- {pyalgoengine-0.8.0a1 → pyalgoengine-0.8.0a3}/algo_engine/apps/backtest/web_app.py +0 -0
- {pyalgoengine-0.8.0a1 → pyalgoengine-0.8.0a3}/algo_engine/apps/bokeh_server.py +0 -0
- {pyalgoengine-0.8.0a1 → pyalgoengine-0.8.0a3}/algo_engine/apps/demo/__init__.py +0 -0
- {pyalgoengine-0.8.0a1 → pyalgoengine-0.8.0a3}/algo_engine/apps/demo/test.py +0 -0
- {pyalgoengine-0.8.0a1 → pyalgoengine-0.8.0a3}/algo_engine/apps/sim_input/__init__.py +0 -0
- {pyalgoengine-0.8.0a1 → pyalgoengine-0.8.0a3}/algo_engine/apps/sim_input/client.py +0 -0
- {pyalgoengine-0.8.0a1 → pyalgoengine-0.8.0a3}/algo_engine/apps/sim_input/sim_keyboard.py +0 -0
- {pyalgoengine-0.8.0a1 → pyalgoengine-0.8.0a3}/algo_engine/apps/sim_input/sim_mouse.py +0 -0
- {pyalgoengine-0.8.0a1 → pyalgoengine-0.8.0a3}/algo_engine/apps/sim_input/window.py +0 -0
- {pyalgoengine-0.8.0a1 → pyalgoengine-0.8.0a3}/algo_engine/backtest/__init__.py +0 -0
- {pyalgoengine-0.8.0a1 → pyalgoengine-0.8.0a3}/algo_engine/backtest/__main__.py +0 -0
- {pyalgoengine-0.8.0a1 → pyalgoengine-0.8.0a3}/algo_engine/backtest/metrics.py +0 -0
- {pyalgoengine-0.8.0a1 → pyalgoengine-0.8.0a3}/algo_engine/backtest/replay.py +0 -0
- {pyalgoengine-0.8.0a1 → pyalgoengine-0.8.0a3}/algo_engine/backtest/sim_match.py +0 -0
- {pyalgoengine-0.8.0a1 → pyalgoengine-0.8.0a3}/algo_engine/base/console_utils.py +0 -0
- {pyalgoengine-0.8.0a1 → pyalgoengine-0.8.0a3}/algo_engine/base/finance_decimal.py +0 -0
- {pyalgoengine-0.8.0a1 → pyalgoengine-0.8.0a3}/algo_engine/base/market_utils_nt.py +0 -0
- {pyalgoengine-0.8.0a1 → pyalgoengine-0.8.0a3}/algo_engine/base/market_utils_posix.py +0 -0
- {pyalgoengine-0.8.0a1 → pyalgoengine-0.8.0a3}/algo_engine/base/technical_analysis.py +0 -0
- {pyalgoengine-0.8.0a1 → pyalgoengine-0.8.0a3}/algo_engine/base/telemetrics.py +0 -0
- {pyalgoengine-0.8.0a1 → pyalgoengine-0.8.0a3}/algo_engine/base/trade_utils.py +0 -0
- {pyalgoengine-0.8.0a1 → pyalgoengine-0.8.0a3}/algo_engine/engine/__init__.py +0 -0
- {pyalgoengine-0.8.0a1 → pyalgoengine-0.8.0a3}/algo_engine/engine/algo_engine.py +0 -0
- {pyalgoengine-0.8.0a1 → pyalgoengine-0.8.0a3}/algo_engine/engine/event_engine.py +0 -0
- {pyalgoengine-0.8.0a1 → pyalgoengine-0.8.0a3}/algo_engine/engine/market_engine.py +0 -0
- {pyalgoengine-0.8.0a1 → pyalgoengine-0.8.0a3}/algo_engine/engine/trade_engine.py +0 -0
- {pyalgoengine-0.8.0a1 → pyalgoengine-0.8.0a3}/algo_engine/monitor/__init__.py +0 -0
- {pyalgoengine-0.8.0a1 → pyalgoengine-0.8.0a3}/algo_engine/monitor/advanced_data_interface.py +0 -0
- {pyalgoengine-0.8.0a1 → pyalgoengine-0.8.0a3}/algo_engine/profile/__init__.py +0 -0
- {pyalgoengine-0.8.0a1 → pyalgoengine-0.8.0a3}/algo_engine/profile/cn.py +0 -0
- {pyalgoengine-0.8.0a1 → pyalgoengine-0.8.0a3}/algo_engine/strategy/__init__.py +0 -0
- {pyalgoengine-0.8.0a1 → pyalgoengine-0.8.0a3}/algo_engine/strategy/strategy_engine.py +0 -0
- {pyalgoengine-0.8.0a1 → pyalgoengine-0.8.0a3}/algo_engine/utils/__init__.py +0 -0
- {pyalgoengine-0.8.0a1 → pyalgoengine-0.8.0a3}/algo_engine/utils/commit_regularizer.py +0 -0
- {pyalgoengine-0.8.0a1 → pyalgoengine-0.8.0a3}/algo_engine/utils/data_utils.py +0 -0
- {pyalgoengine-0.8.0a1 → pyalgoengine-0.8.0a3}/setup.cfg +0 -0
|
@@ -28,9 +28,6 @@ algo_engine/backtest/sim_match.py
|
|
|
28
28
|
algo_engine/base/__init__.py
|
|
29
29
|
algo_engine/base/console_utils.py
|
|
30
30
|
algo_engine/base/finance_decimal.py
|
|
31
|
-
algo_engine/base/market_buffer.py
|
|
32
|
-
algo_engine/base/market_data_wrapper.py
|
|
33
|
-
algo_engine/base/market_utils.py
|
|
34
31
|
algo_engine/base/market_utils_nt.py
|
|
35
32
|
algo_engine/base/market_utils_posix.py
|
|
36
33
|
algo_engine/base/technical_analysis.py
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import logging
|
|
2
|
+
import os
|
|
3
|
+
import pathlib
|
|
4
|
+
|
|
5
|
+
from .telemetrics import LOGGER
|
|
6
|
+
from ..profile import PROFILE
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def set_logger(logger: logging.Logger):
|
|
10
|
+
global LOGGER
|
|
11
|
+
LOGGER = logger
|
|
12
|
+
|
|
13
|
+
if os.name == 'nt':
|
|
14
|
+
market_utils_nt.LOGGER = logger.getChild('MarketUtils')
|
|
15
|
+
else:
|
|
16
|
+
market_utils_posix.LOGGER = logger.getChild('MarketUtils')
|
|
17
|
+
|
|
18
|
+
trade_utils.LOGGER = logger.getChild('TradeUtils')
|
|
19
|
+
technical_analysis.LOGGER = logger.getChild('TA')
|
|
20
|
+
console_utils.LOGGER = logger.getChild('Console')
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def check_cython_module() -> bool:
|
|
24
|
+
for name in ['market_data', 'transaction', 'tick', 'candlestick']:
|
|
25
|
+
cython_ext = '.pyd' if os.name == 'nt' else '.so'
|
|
26
|
+
for file in pathlib.Path(__file__).parent.glob(f'*{cython_ext}'):
|
|
27
|
+
if file.name.startswith(name):
|
|
28
|
+
break
|
|
29
|
+
else:
|
|
30
|
+
LOGGER.warning(f'Cython module {name} not found!')
|
|
31
|
+
return False
|
|
32
|
+
|
|
33
|
+
return True
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
from .finance_decimal import FinancialDecimal
|
|
37
|
+
|
|
38
|
+
if check_cython_module():
|
|
39
|
+
from .market_data import MarketData
|
|
40
|
+
from .transaction import TransactionDirection, TransactionOffset, TransactionSide, OrderType, TransactionData, TradeData, OrderData
|
|
41
|
+
from .tick import TickDataLite, TickData
|
|
42
|
+
from .candlestick import BarData, DailyBar
|
|
43
|
+
elif os.name == 'nt':
|
|
44
|
+
from .market_utils_nt import TransactionSide, OrderType, MarketData, OrderBook, BarData, DailyBar, CandleStick, TickData, TransactionData, TradeData, OrderData, MarketDataBuffer, MarketDataRingBuffer
|
|
45
|
+
else:
|
|
46
|
+
from .market_utils_posix import TransactionSide, OrderType, MarketData, OrderBook, BarData, DailyBar, CandleStick, TickData, TransactionData, TradeData, OrderData, MarketDataBuffer, MarketDataRingBuffer
|
|
47
|
+
|
|
48
|
+
from .technical_analysis import TechnicalAnalysis
|
|
49
|
+
from .trade_utils import OrderState, TradeInstruction, TradeReport
|
|
50
|
+
from .console_utils import Progress, GetInput, GetArgs, count_ordinal, TerminalStyle, InteractiveShell, ShellTransfer
|
|
51
|
+
|
|
52
|
+
__all__ = [
|
|
53
|
+
'PROFILE',
|
|
54
|
+
'FinancialDecimal',
|
|
55
|
+
'TransactionSide', 'OrderType', 'MarketData', 'BarData', 'DailyBar', 'TickDataLite', 'TickData', 'TransactionData', 'TradeData', 'OrderData',
|
|
56
|
+
# 'MarketDataMemoryBuffer', 'OrderBookBuffer', 'BarDataBuffer', 'TickDataBuffer', 'TransactionDataBuffer',
|
|
57
|
+
# 'MarketDataPointer', 'OrderBookPointer', 'BarDataPointer', 'TickDataPointer', 'TransactionDataPointer',
|
|
58
|
+
'TechnicalAnalysis',
|
|
59
|
+
'OrderState', 'TradeInstruction', 'TradeReport',
|
|
60
|
+
'Progress', 'GetInput', 'GetArgs', 'count_ordinal', 'TerminalStyle', 'InteractiveShell', 'ShellTransfer'
|
|
61
|
+
]
|
|
@@ -41,13 +41,45 @@ if os.getenv('GITHUB_ACTIONS') == 'true':
|
|
|
41
41
|
ext_modules = []
|
|
42
42
|
else:
|
|
43
43
|
# Define Cython extension (use the .pyx file)
|
|
44
|
-
|
|
44
|
+
from Cython.Build import cythonize
|
|
45
|
+
|
|
46
|
+
cython_ext = [
|
|
47
|
+
Extension(
|
|
48
|
+
name="algo_engine.base.market_data",
|
|
49
|
+
sources=["algo_engine/base/market_data.pyx"],
|
|
50
|
+
extra_compile_args=['-O3', '-flto'],
|
|
51
|
+
extra_link_args=['-flto', '-s']
|
|
52
|
+
),
|
|
53
|
+
Extension(
|
|
54
|
+
name="algo_engine.base.transaction",
|
|
55
|
+
sources=["algo_engine/base/transaction.pyx"],
|
|
56
|
+
extra_compile_args=['-O3', '-flto'],
|
|
57
|
+
extra_link_args=['-flto', '-s']
|
|
58
|
+
),
|
|
59
|
+
Extension(
|
|
60
|
+
name="algo_engine.base.candlestick",
|
|
61
|
+
sources=["algo_engine/base/candlestick.pyx"],
|
|
62
|
+
extra_compile_args=['-O3', '-flto'],
|
|
63
|
+
extra_link_args=['-flto', '-s']
|
|
64
|
+
),
|
|
45
65
|
Extension(
|
|
46
|
-
"algo_engine.base.
|
|
47
|
-
["algo_engine/base/
|
|
66
|
+
name="algo_engine.base.tick",
|
|
67
|
+
sources=["algo_engine/base/tick.pyx"],
|
|
68
|
+
extra_compile_args=['-O3', '-flto'],
|
|
69
|
+
extra_link_args=['-flto', '-s']
|
|
48
70
|
)
|
|
49
71
|
]
|
|
50
72
|
|
|
73
|
+
ext_modules = cythonize(
|
|
74
|
+
cython_ext,
|
|
75
|
+
compiler_directives={
|
|
76
|
+
'language_level': "3",
|
|
77
|
+
'optimize.use_switch': True,
|
|
78
|
+
'optimize.unpack_method_calls': True,
|
|
79
|
+
'binding': False
|
|
80
|
+
},
|
|
81
|
+
annotate=False
|
|
82
|
+
)
|
|
51
83
|
|
|
52
84
|
long_description = read("README.md")
|
|
53
85
|
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import logging
|
|
2
|
-
import os
|
|
3
|
-
|
|
4
|
-
from .telemetrics import LOGGER
|
|
5
|
-
from ..profile import PROFILE
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
def set_logger(logger: logging.Logger):
|
|
9
|
-
global LOGGER
|
|
10
|
-
LOGGER = logger
|
|
11
|
-
|
|
12
|
-
if os.name == 'nt':
|
|
13
|
-
market_utils_nt.LOGGER = logger.getChild('MarketUtils')
|
|
14
|
-
else:
|
|
15
|
-
market_utils_posix.LOGGER = logger.getChild('MarketUtils')
|
|
16
|
-
|
|
17
|
-
trade_utils.LOGGER = logger.getChild('TradeUtils')
|
|
18
|
-
technical_analysis.LOGGER = logger.getChild('TA')
|
|
19
|
-
console_utils.LOGGER = logger.getChild('Console')
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
from .finance_decimal import FinancialDecimal
|
|
23
|
-
|
|
24
|
-
if os.name == 'nt':
|
|
25
|
-
from .market_utils_nt import TransactionSide, OrderType, MarketData, OrderBook, BarData, DailyBar, CandleStick, TickData, TransactionData, TradeData, OrderData, MarketDataBuffer, MarketDataRingBuffer
|
|
26
|
-
else:
|
|
27
|
-
from .market_utils_posix import TransactionSide, OrderType, MarketData, OrderBook, BarData, DailyBar, CandleStick, TickData, TransactionData, TradeData, OrderData, MarketDataBuffer, MarketDataRingBuffer
|
|
28
|
-
|
|
29
|
-
# from .market_utils_posix import OrderType
|
|
30
|
-
# from .market_utils import TransactionSide, MarketData, OrderBook, BarData, DailyBar, CandleStick, TickData, TransactionData, TradeData
|
|
31
|
-
# from .market_buffer import MarketDataPointer, MarketDataMemoryBuffer, OrderBookPointer, OrderBookBuffer, BarDataPointer, BarDataBuffer, TickDataPointer, TickDataBuffer, TransactionDataPointer, TransactionDataBuffer
|
|
32
|
-
|
|
33
|
-
from .technical_analysis import TechnicalAnalysis
|
|
34
|
-
from .trade_utils import OrderState, TradeInstruction, TradeReport
|
|
35
|
-
from .console_utils import Progress, GetInput, GetArgs, count_ordinal, TerminalStyle, InteractiveShell, ShellTransfer
|
|
36
|
-
|
|
37
|
-
__all__ = ['PROFILE',
|
|
38
|
-
'FinancialDecimal',
|
|
39
|
-
'TransactionSide', 'OrderType', 'MarketData', 'OrderBook', 'BarData', 'DailyBar', 'CandleStick', 'TickData', 'TransactionData', 'TradeData', 'OrderData', 'MarketDataBuffer', 'MarketDataRingBuffer',
|
|
40
|
-
# 'MarketDataMemoryBuffer', 'OrderBookBuffer', 'BarDataBuffer', 'TickDataBuffer', 'TransactionDataBuffer',
|
|
41
|
-
# 'MarketDataPointer', 'OrderBookPointer', 'BarDataPointer', 'TickDataPointer', 'TransactionDataPointer',
|
|
42
|
-
'TechnicalAnalysis',
|
|
43
|
-
'OrderState', 'TradeInstruction', 'TradeReport',
|
|
44
|
-
'Progress', 'GetInput', 'GetArgs', 'count_ordinal', 'TerminalStyle', 'InteractiveShell', 'ShellTransfer']
|