polars-ta 0.4.4__py3-none-any.whl → 0.4.5__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.
- polars_ta/_version.py +1 -1
- polars_ta/prefix/tdx.py +13 -0
- polars_ta/tdx/__init__.py +1 -0
- polars_ta/tdx/_chip.py +121 -0
- polars_ta/tdx/logical.py +15 -12
- polars_ta/tdx/pattern.py +49 -0
- polars_ta/tdx/reference.py +6 -1
- {polars_ta-0.4.4.dist-info → polars_ta-0.4.5.dist-info}/METADATA +1 -1
- {polars_ta-0.4.4.dist-info → polars_ta-0.4.5.dist-info}/RECORD +12 -10
- {polars_ta-0.4.4.dist-info → polars_ta-0.4.5.dist-info}/LICENSE +0 -0
- {polars_ta-0.4.4.dist-info → polars_ta-0.4.5.dist-info}/WHEEL +0 -0
- {polars_ta-0.4.4.dist-info → polars_ta-0.4.5.dist-info}/top_level.txt +0 -0
polars_ta/_version.py
CHANGED
@@ -1 +1 @@
|
|
1
|
-
__version__ = "0.4.
|
1
|
+
__version__ = "0.4.5"
|
polars_ta/prefix/tdx.py
CHANGED
@@ -56,28 +56,41 @@ from polars_ta.tdx.over_bought_over_sold import MFI as ts_MFI # noqa
|
|
56
56
|
from polars_ta.tdx.over_bought_over_sold import MTM as ts_MTM # noqa
|
57
57
|
from polars_ta.tdx.over_bought_over_sold import RSI as ts_RSI # noqa
|
58
58
|
from polars_ta.tdx.over_bought_over_sold import RSV as ts_RSV # noqa
|
59
|
+
from polars_ta.tdx.pattern import ts_WINNER_COST # noqa
|
59
60
|
from polars_ta.tdx.pressure_support import BOLL as ts_BOLL # noqa
|
60
61
|
from polars_ta.tdx.pressure_support import BOLL_M as ts_BOLL_M # noqa
|
61
62
|
from polars_ta.tdx.reference import BARSLAST as ts_BARSLAST # noqa
|
62
63
|
from polars_ta.tdx.reference import BARSLASTCOUNT as ts_BARSLASTCOUNT # noqa
|
63
64
|
from polars_ta.tdx.reference import BARSSINCE as ts_BARSSINCE # noqa
|
64
65
|
from polars_ta.tdx.reference import BARSSINCEN as ts_BARSSINCEN # noqa
|
66
|
+
from polars_ta.tdx.reference import COUNT as ts_COUNT # noqa
|
65
67
|
from polars_ta.tdx.reference import CUMSUM as ts_CUMSUM # noqa
|
68
|
+
from polars_ta.tdx.reference import DIFF as ts_DIFF # noqa
|
66
69
|
from polars_ta.tdx.reference import DMA as ts_DMA # noqa
|
67
70
|
from polars_ta.tdx.reference import EMA as ts_EMA # noqa
|
68
71
|
from polars_ta.tdx.reference import EXPMA as ts_EXPMA # noqa
|
69
72
|
from polars_ta.tdx.reference import EXPMEMA as ts_EXPMEMA # noqa
|
70
73
|
from polars_ta.tdx.reference import FILTER as ts_FILTER # noqa
|
74
|
+
from polars_ta.tdx.reference import HHV as ts_HHV # noqa
|
75
|
+
from polars_ta.tdx.reference import HHVBARS as ts_HHVBARS # noqa
|
71
76
|
from polars_ta.tdx.reference import HOD as ts_HOD # noqa
|
77
|
+
from polars_ta.tdx.reference import LLV as ts_LLV # noqa
|
78
|
+
from polars_ta.tdx.reference import LLVBARS as ts_LLVBARS # noqa
|
72
79
|
from polars_ta.tdx.reference import LOD as ts_LOD # noqa
|
80
|
+
from polars_ta.tdx.reference import MA as ts_MA # noqa
|
73
81
|
from polars_ta.tdx.reference import MAX # noqa
|
74
82
|
from polars_ta.tdx.reference import MEMA as ts_MEMA # noqa
|
75
83
|
from polars_ta.tdx.reference import MIN # noqa
|
84
|
+
from polars_ta.tdx.reference import MULAR as ts_MULAR # noqa
|
76
85
|
from polars_ta.tdx.reference import RANGE # noqa
|
86
|
+
from polars_ta.tdx.reference import REF as ts_REF # noqa
|
87
|
+
from polars_ta.tdx.reference import REFX as ts_REFX # noqa
|
77
88
|
from polars_ta.tdx.reference import SMA_CN as ts_SMA_CN # noqa
|
89
|
+
from polars_ta.tdx.reference import SUM as ts_SUM # noqa
|
78
90
|
from polars_ta.tdx.reference import SUMIF as ts_SUMIF # noqa
|
79
91
|
from polars_ta.tdx.reference import TMA as ts_TMA # noqa
|
80
92
|
from polars_ta.tdx.reference import TR as ts_TR # noqa
|
93
|
+
from polars_ta.tdx.reference import WMA as ts_WMA # noqa
|
81
94
|
from polars_ta.tdx.statistic import AVEDEV as ts_AVEDEV # noqa
|
82
95
|
from polars_ta.tdx.statistic import COVAR as ts_COVAR # noqa
|
83
96
|
from polars_ta.tdx.statistic import DEVSQ as ts_DEVSQ # noqa
|
polars_ta/tdx/__init__.py
CHANGED
@@ -4,6 +4,7 @@ from polars_ta.tdx.energy import * # noqa
|
|
4
4
|
from polars_ta.tdx.logical import * # noqa
|
5
5
|
from polars_ta.tdx.moving_average import * # noqa
|
6
6
|
from polars_ta.tdx.over_bought_over_sold import * # noqa
|
7
|
+
from polars_ta.tdx.pattern import * # noqa
|
7
8
|
from polars_ta.tdx.pressure_support import * # noqa
|
8
9
|
from polars_ta.tdx.reference import * # noqa
|
9
10
|
from polars_ta.tdx.statistic import * # noqa
|
polars_ta/tdx/_chip.py
ADDED
@@ -0,0 +1,121 @@
|
|
1
|
+
import numba
|
2
|
+
import numpy as np
|
3
|
+
|
4
|
+
|
5
|
+
@numba.jit(nopython=True, nogil=True, fastmath=True, cache=True)
|
6
|
+
def nb_chip(high, low, avg, turnover,
|
7
|
+
start=None, stop=None, step=0.2):
|
8
|
+
"""筹码分布,可用于WINNER或COST指标
|
9
|
+
|
10
|
+
不可能完全还原真实的筹码分布,只能接近。所以做了一下特别处理
|
11
|
+
|
12
|
+
1. 三角分布,比平均分布更接近
|
13
|
+
2. 步长。没有必要每个价格都统计,特别是复权后价格也无法正好是0.01间隔
|
14
|
+
高价股建议步长设大些,低价股步长需设小些
|
15
|
+
|
16
|
+
Parameters
|
17
|
+
----------
|
18
|
+
high
|
19
|
+
low
|
20
|
+
avg
|
21
|
+
一维序列
|
22
|
+
turnover:
|
23
|
+
换手率,需要在外转成0~1范围内
|
24
|
+
start
|
25
|
+
开始价格
|
26
|
+
stop
|
27
|
+
结束价格
|
28
|
+
step
|
29
|
+
步长。一字涨停时,三角分布的底为1,高为2。但无法当成梯形计算面积,所以从中用半步长切开计算
|
30
|
+
|
31
|
+
Returns
|
32
|
+
-------
|
33
|
+
out
|
34
|
+
筹码分布
|
35
|
+
columns
|
36
|
+
价格表头
|
37
|
+
|
38
|
+
"""
|
39
|
+
# 网格范围
|
40
|
+
if start is None:
|
41
|
+
start = np.min(low)
|
42
|
+
if stop is None:
|
43
|
+
stop = np.max(high)
|
44
|
+
|
45
|
+
left = round(start / step) * 2 - 1
|
46
|
+
right = round(stop / step) * 2 + 1
|
47
|
+
|
48
|
+
# 最小最大值左右要留半格,range是左闭右开,长度必须为2n+1
|
49
|
+
columns = np.arange(left, right + 1)
|
50
|
+
grid_shape = (len(turnover), len(columns))
|
51
|
+
|
52
|
+
# numba中round写法特殊
|
53
|
+
_high = np.empty_like(high)
|
54
|
+
_low = np.empty_like(low)
|
55
|
+
_avg = np.empty_like(avg)
|
56
|
+
|
57
|
+
# high和low必须落到边缘上
|
58
|
+
_high = np.round(high / step, 0, _high) * 2 + 1
|
59
|
+
_low = np.round(low / step, 0, _low) * 2 - 1
|
60
|
+
# avg必须落在实体上
|
61
|
+
_avg = np.round(avg / step, 0, _avg) * 2
|
62
|
+
tri_height = 2 / ((_high - _low) // 2) # 三角形高度
|
63
|
+
|
64
|
+
# 得到三组值在网格中的位置
|
65
|
+
high_arg = np.argwhere(columns == _high.reshape(-1, 1))[:, 1]
|
66
|
+
avg_arg = np.argwhere(columns == _avg.reshape(-1, 1))[:, 1]
|
67
|
+
low_arg = np.argwhere(columns == _low.reshape(-1, 1))[:, 1]
|
68
|
+
|
69
|
+
# 高度表
|
70
|
+
height = np.zeros(grid_shape)
|
71
|
+
for i in range(len(height)):
|
72
|
+
la = low_arg[i]
|
73
|
+
aa = avg_arg[i]
|
74
|
+
ha = high_arg[i]
|
75
|
+
th = tri_height[i]
|
76
|
+
height[i, la:aa + 1] = np.linspace(0, th, aa - la + 1)
|
77
|
+
height[i, aa:ha + 1] = np.linspace(th, 0, ha - aa + 1)
|
78
|
+
|
79
|
+
# 计算半块面积, 三角形的高变成了梯形的上下底,梯形高固定为0.5,*0.5/2=/4
|
80
|
+
# 宽度-1,例如,原长度为5,-1后为4
|
81
|
+
area = (height[:, :-1] + height[:, 1:]) / 4
|
82
|
+
# 合成一块。宽度/2,例如原长度为4,/2后为2
|
83
|
+
weight = area[:, ::2] + area[:, 1::2]
|
84
|
+
|
85
|
+
# 输出
|
86
|
+
out = np.zeros_like(weight)
|
87
|
+
# 剩余换手率
|
88
|
+
turnover2 = 1 - turnover
|
89
|
+
# 第一天其实应当用上市发行价,过于麻烦,还是将第一天等权
|
90
|
+
# 取巧方法,利用-1的特性,可减少if判断,
|
91
|
+
out[-1] = weight[0]
|
92
|
+
# 这里现在用的numpy, 还要快可考虑numba
|
93
|
+
for i in range(len(turnover)):
|
94
|
+
out[i] = out[i - 1] * turnover2[i] + weight[i] * turnover[i]
|
95
|
+
|
96
|
+
# print(out.sum(axis=1))
|
97
|
+
return out, (step / 2) * columns[1::2]
|
98
|
+
|
99
|
+
|
100
|
+
@numba.jit(nopython=True, nogil=True, fastmath=True, cache=True)
|
101
|
+
def _WINNER_COST(high, low, avg, turnover, close, cost, step):
|
102
|
+
out, columns = nb_chip(high, low, avg, turnover, step=step)
|
103
|
+
|
104
|
+
# WINNER
|
105
|
+
cheap = np.where(columns <= close.reshape(-1, 1), out, 0)
|
106
|
+
sum_cheap = np.sum(cheap, axis=1)
|
107
|
+
|
108
|
+
# COST
|
109
|
+
# cum = np.cumsum(out, axis=1)
|
110
|
+
cum = np.copy(out)
|
111
|
+
for i in range(0, out.shape[0]):
|
112
|
+
cum[i, :] = np.cumsum(out[i, :])
|
113
|
+
|
114
|
+
prices = np.where(cum <= cost.reshape(-1, 1), columns, 0)
|
115
|
+
|
116
|
+
# np.max(prices, axis=1)
|
117
|
+
max_price = prices[:, 0]
|
118
|
+
for i in range(0, out.shape[0]):
|
119
|
+
max_price[i] = np.max(prices[i, :])
|
120
|
+
|
121
|
+
return sum_cheap, max_price
|
polars_ta/tdx/logical.py
CHANGED
@@ -15,22 +15,25 @@ def CROSS(a: Expr, b: Expr) -> Expr:
|
|
15
15
|
'a': [None, -1, 1, 1, 2],
|
16
16
|
'b': [None, -1, 0, 1, 2],
|
17
17
|
'c': [None, 0, 0, 0, 0],
|
18
|
+
'd': [None, False, False, True, True],
|
18
19
|
}).with_columns(
|
19
20
|
out1=CROSS(pl.col('a'), pl.col('c')),
|
20
21
|
out2=CROSS(pl.col('b'), pl.col('c')),
|
22
|
+
out3=CROSS(0, pl.col('b')),
|
23
|
+
out4=CROSS(pl.col('d'), 0.5),
|
21
24
|
)
|
22
|
-
shape: (5,
|
23
|
-
|
24
|
-
│ a ┆ b ┆ c ┆ out1 ┆ out2 │
|
25
|
-
│ --- ┆ --- ┆ --- ┆ --- ┆ --- │
|
26
|
-
│ i64 ┆ i64 ┆ i64 ┆ bool ┆ bool │
|
27
|
-
|
28
|
-
│ null ┆ null ┆ null ┆ null ┆ null │
|
29
|
-
│ -1 ┆ -1 ┆ 0 ┆ false ┆ false │
|
30
|
-
│ 1 ┆ 0 ┆ 0 ┆ true ┆ false │
|
31
|
-
│ 1 ┆ 1 ┆ 0 ┆ false ┆ true │
|
32
|
-
│ 2 ┆ 2 ┆ 0 ┆ false ┆ false │
|
33
|
-
|
25
|
+
shape: (5, 8)
|
26
|
+
┌──────┬──────┬──────┬───────┬───────┬───────┬───────┬───────┐
|
27
|
+
│ a ┆ b ┆ c ┆ d ┆ out1 ┆ out2 ┆ out3 ┆ out4 │
|
28
|
+
│ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- │
|
29
|
+
│ i64 ┆ i64 ┆ i64 ┆ bool ┆ bool ┆ bool ┆ bool ┆ bool │
|
30
|
+
╞══════╪══════╪══════╪═══════╪═══════╪═══════╪═══════╪═══════╡
|
31
|
+
│ null ┆ null ┆ null ┆ null ┆ null ┆ null ┆ null ┆ null │
|
32
|
+
│ -1 ┆ -1 ┆ 0 ┆ false ┆ false ┆ false ┆ null ┆ false │
|
33
|
+
│ 1 ┆ 0 ┆ 0 ┆ false ┆ true ┆ false ┆ false ┆ false │
|
34
|
+
│ 1 ┆ 1 ┆ 0 ┆ true ┆ false ┆ true ┆ false ┆ true │
|
35
|
+
│ 2 ┆ 2 ┆ 0 ┆ true ┆ false ┆ false ┆ false ┆ false │
|
36
|
+
└──────┴──────┴──────┴───────┴───────┴───────┴───────┴───────┘
|
34
37
|
```
|
35
38
|
|
36
39
|
"""
|
polars_ta/tdx/pattern.py
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
from polars import Expr, Struct, Field, Float64, struct
|
2
|
+
|
3
|
+
from polars_ta.tdx._chip import _WINNER_COST
|
4
|
+
from polars_ta.utils.numba_ import batches_i2_o2
|
5
|
+
|
6
|
+
|
7
|
+
def ts_WINNER_COST(high: Expr, low: Expr, avg: Expr, turnover: Expr, close: Expr, cost: Expr = 0.5, step: float = 0.1) -> Expr:
|
8
|
+
"""
|
9
|
+
获利盘比例
|
10
|
+
WINNER(CLOSE),表示以当前收市价卖出的获利盘比例,例如返回0.1表示10%获利盘;WINNER(10.5)表示10.5元价格的获利盘比例
|
11
|
+
|
12
|
+
成本分布价
|
13
|
+
COST(10),表示10%获利盘的价格是多少,即有10%的持仓量在该价格以下,其余90%在该价格以上,为套牢盘
|
14
|
+
|
15
|
+
Parameters
|
16
|
+
----------
|
17
|
+
high
|
18
|
+
最高价
|
19
|
+
low
|
20
|
+
最低价
|
21
|
+
avg
|
22
|
+
平均价。可以用vwap
|
23
|
+
turnover:
|
24
|
+
换手率。需要在外转成0~1范围内
|
25
|
+
close
|
26
|
+
判断获利比例的价格,可以用收盘价,也可以用均价
|
27
|
+
cost
|
28
|
+
成本比例,0~1
|
29
|
+
step
|
30
|
+
步长。一字涨停时,三角分布的底为1,高为2。但无法当成梯形计算面积,所以从中用半步长切开计算
|
31
|
+
|
32
|
+
Returns
|
33
|
+
-------
|
34
|
+
winner
|
35
|
+
获利盘比例
|
36
|
+
cost
|
37
|
+
成本分布价
|
38
|
+
|
39
|
+
Examples
|
40
|
+
--------
|
41
|
+
>>> WINNER_COST = ts_WINNER_COST(HIGH, LOW, VWAP, turnover_ratio / 100, CLOSE, 0.5)
|
42
|
+
|
43
|
+
Notes
|
44
|
+
-----
|
45
|
+
该函数仅对日线分析周期有效
|
46
|
+
|
47
|
+
"""
|
48
|
+
dtype = Struct([Field(f"column_{i}", Float64) for i in range(2)])
|
49
|
+
return struct([high, low, avg, turnover, close, cost]).map_batches(lambda xx: batches_i2_o2([xx.struct[i].to_numpy().astype(float) for i in range(6)], _WINNER_COST, step), return_dtype=dtype)
|
polars_ta/tdx/reference.py
CHANGED
@@ -154,7 +154,7 @@ def SMA_CN(X: Expr, N: int, M: int) -> Expr:
|
|
154
154
|
|
155
155
|
|
156
156
|
def SUMIF(condition: Expr, close: Expr, N: int = 30) -> Expr:
|
157
|
-
return SUM(condition.cast(Int32) * close, N)
|
157
|
+
return SUM(condition.cast(Boolean).cast(Int32) * close, N)
|
158
158
|
|
159
159
|
|
160
160
|
def TMA(close: Expr, N: int = 30) -> Expr:
|
@@ -164,3 +164,8 @@ def TMA(close: Expr, N: int = 30) -> Expr:
|
|
164
164
|
|
165
165
|
def FILTER(close: Expr, N: int = 30) -> Expr:
|
166
166
|
raise
|
167
|
+
|
168
|
+
|
169
|
+
def REFX(close: Expr, N: int = 30) -> Expr:
|
170
|
+
"""属于未来函数,引用若干周期后的数据"""
|
171
|
+
return REF(close, -N)
|
@@ -1,5 +1,5 @@
|
|
1
1
|
polars_ta/__init__.py,sha256=UfRKvBoFTFhGlL9fNsarlPs0_FV6kxM1vfWvJD5YBe8,53
|
2
|
-
polars_ta/_version.py,sha256=
|
2
|
+
polars_ta/_version.py,sha256=ErkLkI2TDBX1OIqi2GGa20CPeu4ZculEi-XffRbLU6M,22
|
3
3
|
polars_ta/noise.py,sha256=LJHubBqnWlU3Bz84z07N1JB-b-hAMW2rgBF1BT4m0FE,1471
|
4
4
|
polars_ta/candles/__init__.py,sha256=AW68IuFC0gD4_OyjwLP3p22WSzSIYqlSrsS9fW_15xw,141
|
5
5
|
polars_ta/candles/cdl1.py,sha256=RnRu1QzpqEt5y0-1hlfZRUvza1no-Gj4x_dx2QWxr5A,3130
|
@@ -13,7 +13,7 @@ polars_ta/prefix/cdl.py,sha256=DS5GACM3biJmzunlUCkiQrZy-ltzQP0vFmCKkfGxS5E,40
|
|
13
13
|
polars_ta/prefix/reports.py,sha256=B2QgdfX6RbZu9ytgaINv3Aq-ZAh_m3cr2pgbpFyL35A,40
|
14
14
|
polars_ta/prefix/ta.py,sha256=qIb3oRmexNZ6LTQ35V194QTLqj8UgzjaYl5ASwqN5pc,4167
|
15
15
|
polars_ta/prefix/talib.py,sha256=6JsrkgDIUsR2bIA7jVywxgWwxiiFuzsCPvbDeAt4qBA,9392
|
16
|
-
polars_ta/prefix/tdx.py,sha256
|
16
|
+
polars_ta/prefix/tdx.py,sha256=-6NwhSqffFNAv-1q7-PTv6ahzIpfEo2Hz1maHh2H2Jo,6570
|
17
17
|
polars_ta/prefix/wq.py,sha256=PpSLQQ3vD0Mf3Tiz_AFSi--q8p7CkLg9CHh_ayMfoYo,35
|
18
18
|
polars_ta/reports/__init__.py,sha256=KEATtWxhdaO6XScHYN2XE4WkYbYpQvDOEyXgyc2z22g,45
|
19
19
|
polars_ta/reports/cicc.py,sha256=ZpNzHo5h855Xo9IeKeOzlUjjwE5tR8opb11UoJVxGkg,707
|
@@ -27,17 +27,19 @@ polars_ta/ta/transform.py,sha256=c4s5l6khVqIer50g6oScdZ1EEPWYANeKm64AkBkPrtY,178
|
|
27
27
|
polars_ta/ta/volatility.py,sha256=yQDKLxos521y3RzywOcE0hTj3qIG_2mfqpARpdxQ1KU,836
|
28
28
|
polars_ta/ta/volume.py,sha256=fPd9Po30kFu-cSmYoRQP4_Ypi9oSWROj650-mjwlfwM,739
|
29
29
|
polars_ta/talib/__init__.py,sha256=bdNWsIrLlaOU2DVZWiFVBoQEBWtz-BJ1_4hAR5fa1H0,71818
|
30
|
-
polars_ta/tdx/__init__.py,sha256=
|
30
|
+
polars_ta/tdx/__init__.py,sha256=uZM4mpwMLWKvMXlpfUSk7XCeYy95UTqe9MeqsL-oA_w,560
|
31
|
+
polars_ta/tdx/_chip.py,sha256=2eCe-y_0DcBivVjQHXlFwAiY410-hH-KKPrsUcRJcyk,3832
|
31
32
|
polars_ta/tdx/_nb.py,sha256=IV3XrgSYPoR4jnOOT8p7jJWGtnoRrHLw5-fnIOfmMvA,2192
|
32
33
|
polars_ta/tdx/_slow.py,sha256=N3ePWFLhzFeB3k-nJ15TUAdIy9Ixq3WsULgW-zWe18Q,413
|
33
34
|
polars_ta/tdx/arithmetic.py,sha256=lSa0rQ7J4VVE7GxZOxOSsO3wRg8eaWES99uhSbDJDG0,3443
|
34
35
|
polars_ta/tdx/choice.py,sha256=Dc2REvvRlC3B77HP7laO5YWBdgxUbFkUFULk86u4sXw,720
|
35
36
|
polars_ta/tdx/energy.py,sha256=ya5HCB7I93DSovchB7U9LgfBzbREX7z5iMvurOIyqFI,1726
|
36
|
-
polars_ta/tdx/logical.py,sha256=
|
37
|
+
polars_ta/tdx/logical.py,sha256=gLs670q0zXy4M3Lm197ucZcDdnKcxfouaP7iOs4B2d0,3394
|
37
38
|
polars_ta/tdx/moving_average.py,sha256=Btx3i0BLs5GuN38xA4XJBNg1FCCu5a7Sk2q4BP4vhX4,352
|
38
39
|
polars_ta/tdx/over_bought_over_sold.py,sha256=zB5W10TZBpKrMdzZlH9jmiVqLhrkcXdNI0OdUOjSTiQ,2305
|
40
|
+
polars_ta/tdx/pattern.py,sha256=jB0a5Ro0SQ25R5B_mkQWl9Hz7aB9n-DUns1OSxPeHxI,1636
|
39
41
|
polars_ta/tdx/pressure_support.py,sha256=Lk_6nXImyWLuloP4rBwarp5LEVZjgr6_5ekxIksZPr8,1085
|
40
|
-
polars_ta/tdx/reference.py,sha256=
|
42
|
+
polars_ta/tdx/reference.py,sha256=szqYZVcpOChjffdM6cJeCJWkiIsDS08ytYwKLbUZkfU,6135
|
41
43
|
polars_ta/tdx/statistic.py,sha256=jdNLx3nV-uN4LrHRGxUUMhNOnlu8MOozjIHvshgMNPg,2588
|
42
44
|
polars_ta/tdx/trend.py,sha256=n5HDHhb1Qak39DJjMFx27hFTYSttbNFeXJD7saRiTMo,3008
|
43
45
|
polars_ta/tdx/volume.py,sha256=juYM4Qlx2BX5okRCSwuf-6kRUETqDF7MVWUbYIzc4ww,901
|
@@ -57,8 +59,8 @@ polars_ta/wq/preprocess.py,sha256=xbESoAtsbQgXJMhnLzg4r5o2H9uwPyHfySg5skk_DUg,41
|
|
57
59
|
polars_ta/wq/time_series.py,sha256=tiX4suz8_QSvcJHwX6vhIC-SKmJqCWm5OXznPsDLLj0,26039
|
58
60
|
polars_ta/wq/transformational.py,sha256=ktluqo-lcxWysFL3huNypId0EFR1wn1PmyBGO180UQo,7194
|
59
61
|
polars_ta/wq/vector.py,sha256=Qs-mHC2YsiWXoyMuXZZPzd5W5w_HL1ZgDCj9wRAnqmQ,1902
|
60
|
-
polars_ta-0.4.
|
61
|
-
polars_ta-0.4.
|
62
|
-
polars_ta-0.4.
|
63
|
-
polars_ta-0.4.
|
64
|
-
polars_ta-0.4.
|
62
|
+
polars_ta-0.4.5.dist-info/LICENSE,sha256=nREFtfwxWCCYD-ZA1jMzhhxMyTz-wGWFlnkpgg0DCtQ,1062
|
63
|
+
polars_ta-0.4.5.dist-info/METADATA,sha256=gA1CqnIcZaQallzS8RvAUSAQifE_fyT3QgEwFP74MEg,10711
|
64
|
+
polars_ta-0.4.5.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
|
65
|
+
polars_ta-0.4.5.dist-info/top_level.txt,sha256=eat2IhP79-dIGA4DAFOz1o-95--UDqfjeIgmU9TBsDQ,10
|
66
|
+
polars_ta-0.4.5.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|