polars-ta 0.5.2__tar.gz → 0.5.3__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.
- {polars_ta-0.5.2 → polars_ta-0.5.3}/PKG-INFO +1 -1
- polars_ta-0.5.3/polars_ta/_version.py +1 -0
- {polars_ta-0.5.2 → polars_ta-0.5.3}/polars_ta/wq/arithmetic.py +98 -1
- {polars_ta-0.5.2 → polars_ta-0.5.3}/polars_ta.egg-info/PKG-INFO +1 -1
- polars_ta-0.5.2/polars_ta/_version.py +0 -1
- {polars_ta-0.5.2 → polars_ta-0.5.3}/LICENSE +0 -0
- {polars_ta-0.5.2 → polars_ta-0.5.3}/README.md +0 -0
- {polars_ta-0.5.2 → polars_ta-0.5.3}/polars_ta/__init__.py +0 -0
- {polars_ta-0.5.2 → polars_ta-0.5.3}/polars_ta/candles/__init__.py +0 -0
- {polars_ta-0.5.2 → polars_ta-0.5.3}/polars_ta/candles/cdl1.py +0 -0
- {polars_ta-0.5.2 → polars_ta-0.5.3}/polars_ta/candles/cdl1_limit.py +0 -0
- {polars_ta-0.5.2 → polars_ta-0.5.3}/polars_ta/candles/cdl2.py +0 -0
- {polars_ta-0.5.2 → polars_ta-0.5.3}/polars_ta/noise.py +0 -0
- {polars_ta-0.5.2 → polars_ta-0.5.3}/polars_ta/performance/__init__.py +0 -0
- {polars_ta-0.5.2 → polars_ta-0.5.3}/polars_ta/performance/drawdown.py +0 -0
- {polars_ta-0.5.2 → polars_ta-0.5.3}/polars_ta/performance/returns.py +0 -0
- {polars_ta-0.5.2 → polars_ta-0.5.3}/polars_ta/prefix/__init__.py +0 -0
- {polars_ta-0.5.2 → polars_ta-0.5.3}/polars_ta/prefix/cdl.py +0 -0
- {polars_ta-0.5.2 → polars_ta-0.5.3}/polars_ta/prefix/reports.py +0 -0
- {polars_ta-0.5.2 → polars_ta-0.5.3}/polars_ta/prefix/ta.py +0 -0
- {polars_ta-0.5.2 → polars_ta-0.5.3}/polars_ta/prefix/talib.py +0 -0
- {polars_ta-0.5.2 → polars_ta-0.5.3}/polars_ta/prefix/tdx.py +0 -0
- {polars_ta-0.5.2 → polars_ta-0.5.3}/polars_ta/prefix/wq.py +0 -0
- {polars_ta-0.5.2 → polars_ta-0.5.3}/polars_ta/reports/__init__.py +0 -0
- {polars_ta-0.5.2 → polars_ta-0.5.3}/polars_ta/reports/cicc.py +0 -0
- {polars_ta-0.5.2 → polars_ta-0.5.3}/polars_ta/ta/__init__.py +0 -0
- {polars_ta-0.5.2 → polars_ta-0.5.3}/polars_ta/ta/momentum.py +0 -0
- {polars_ta-0.5.2 → polars_ta-0.5.3}/polars_ta/ta/operators.py +0 -0
- {polars_ta-0.5.2 → polars_ta-0.5.3}/polars_ta/ta/overlap.py +0 -0
- {polars_ta-0.5.2 → polars_ta-0.5.3}/polars_ta/ta/price.py +0 -0
- {polars_ta-0.5.2 → polars_ta-0.5.3}/polars_ta/ta/statistic.py +0 -0
- {polars_ta-0.5.2 → polars_ta-0.5.3}/polars_ta/ta/transform.py +0 -0
- {polars_ta-0.5.2 → polars_ta-0.5.3}/polars_ta/ta/volatility.py +0 -0
- {polars_ta-0.5.2 → polars_ta-0.5.3}/polars_ta/ta/volume.py +0 -0
- {polars_ta-0.5.2 → polars_ta-0.5.3}/polars_ta/talib/__init__.py +0 -0
- {polars_ta-0.5.2 → polars_ta-0.5.3}/polars_ta/tdx/__init__.py +0 -0
- {polars_ta-0.5.2 → polars_ta-0.5.3}/polars_ta/tdx/_chip.py +0 -0
- {polars_ta-0.5.2 → polars_ta-0.5.3}/polars_ta/tdx/_nb.py +0 -0
- {polars_ta-0.5.2 → polars_ta-0.5.3}/polars_ta/tdx/_slow.py +0 -0
- {polars_ta-0.5.2 → polars_ta-0.5.3}/polars_ta/tdx/arithmetic.py +0 -0
- {polars_ta-0.5.2 → polars_ta-0.5.3}/polars_ta/tdx/choice.py +0 -0
- {polars_ta-0.5.2 → polars_ta-0.5.3}/polars_ta/tdx/energy.py +0 -0
- {polars_ta-0.5.2 → polars_ta-0.5.3}/polars_ta/tdx/logical.py +0 -0
- {polars_ta-0.5.2 → polars_ta-0.5.3}/polars_ta/tdx/moving_average.py +0 -0
- {polars_ta-0.5.2 → polars_ta-0.5.3}/polars_ta/tdx/over_bought_over_sold.py +0 -0
- {polars_ta-0.5.2 → polars_ta-0.5.3}/polars_ta/tdx/pattern.py +0 -0
- {polars_ta-0.5.2 → polars_ta-0.5.3}/polars_ta/tdx/pattern_feature.py +0 -0
- {polars_ta-0.5.2 → polars_ta-0.5.3}/polars_ta/tdx/pressure_support.py +0 -0
- {polars_ta-0.5.2 → polars_ta-0.5.3}/polars_ta/tdx/reference.py +0 -0
- {polars_ta-0.5.2 → polars_ta-0.5.3}/polars_ta/tdx/statistic.py +0 -0
- {polars_ta-0.5.2 → polars_ta-0.5.3}/polars_ta/tdx/trend.py +0 -0
- {polars_ta-0.5.2 → polars_ta-0.5.3}/polars_ta/tdx/trend_feature.py +0 -0
- {polars_ta-0.5.2 → polars_ta-0.5.3}/polars_ta/tdx/volume.py +0 -0
- {polars_ta-0.5.2 → polars_ta-0.5.3}/polars_ta/utils/__init__.py +0 -0
- {polars_ta-0.5.2 → polars_ta-0.5.3}/polars_ta/utils/helper.py +0 -0
- {polars_ta-0.5.2 → polars_ta-0.5.3}/polars_ta/utils/numba_.py +0 -0
- {polars_ta-0.5.2 → polars_ta-0.5.3}/polars_ta/utils/pandas_.py +0 -0
- {polars_ta-0.5.2 → polars_ta-0.5.3}/polars_ta/utils/pit.py +0 -0
- {polars_ta-0.5.2 → polars_ta-0.5.3}/polars_ta/utils/wrapper.py +0 -0
- {polars_ta-0.5.2 → polars_ta-0.5.3}/polars_ta/wq/__init__.py +0 -0
- {polars_ta-0.5.2 → polars_ta-0.5.3}/polars_ta/wq/_nb.py +0 -0
- {polars_ta-0.5.2 → polars_ta-0.5.3}/polars_ta/wq/_slow.py +0 -0
- {polars_ta-0.5.2 → polars_ta-0.5.3}/polars_ta/wq/cross_sectional.py +0 -0
- {polars_ta-0.5.2 → polars_ta-0.5.3}/polars_ta/wq/logical.py +0 -0
- {polars_ta-0.5.2 → polars_ta-0.5.3}/polars_ta/wq/preprocess.py +0 -0
- {polars_ta-0.5.2 → polars_ta-0.5.3}/polars_ta/wq/time_series.py +0 -0
- {polars_ta-0.5.2 → polars_ta-0.5.3}/polars_ta/wq/transformational.py +0 -0
- {polars_ta-0.5.2 → polars_ta-0.5.3}/polars_ta/wq/vector.py +0 -0
- {polars_ta-0.5.2 → polars_ta-0.5.3}/polars_ta.egg-info/SOURCES.txt +0 -0
- {polars_ta-0.5.2 → polars_ta-0.5.3}/polars_ta.egg-info/dependency_links.txt +0 -0
- {polars_ta-0.5.2 → polars_ta-0.5.3}/polars_ta.egg-info/requires.txt +0 -0
- {polars_ta-0.5.2 → polars_ta-0.5.3}/polars_ta.egg-info/top_level.txt +0 -0
- {polars_ta-0.5.2 → polars_ta-0.5.3}/pyproject.toml +0 -0
- {polars_ta-0.5.2 → polars_ta-0.5.3}/setup.cfg +0 -0
- {polars_ta-0.5.2 → polars_ta-0.5.3}/setup.py +0 -0
@@ -0,0 +1 @@
|
|
1
|
+
__version__ = "0.5.3"
|
@@ -1,5 +1,6 @@
|
|
1
1
|
import numpy as np
|
2
|
-
from polars import Expr, Series, fold, any_horizontal, Float64
|
2
|
+
from polars import Expr, Series, fold, any_horizontal, Float64, Int64
|
3
|
+
from polars import arctan2 as _arctan2
|
3
4
|
from polars import max_horizontal, sum_horizontal, min_horizontal, mean_horizontal
|
4
5
|
|
5
6
|
|
@@ -92,6 +93,16 @@ def arc_tan(x: Expr) -> Expr:
|
|
92
93
|
return x.arctan()
|
93
94
|
|
94
95
|
|
96
|
+
def arc_tan2(y: Expr, x: Expr) -> Expr:
|
97
|
+
"""反正切二值函数"""
|
98
|
+
return _arctan2(y, x)
|
99
|
+
|
100
|
+
|
101
|
+
def cbrt(x: Expr) -> Expr:
|
102
|
+
"""立方根"""
|
103
|
+
return x.cbrt()
|
104
|
+
|
105
|
+
|
95
106
|
def ceiling(x: Expr) -> Expr:
|
96
107
|
"""向上取整"""
|
97
108
|
return x.ceil()
|
@@ -107,10 +118,57 @@ def cosh(x: Expr) -> Expr:
|
|
107
118
|
return x.cosh()
|
108
119
|
|
109
120
|
|
121
|
+
def cot(x: Expr) -> Expr:
|
122
|
+
"""余切"""
|
123
|
+
return x.cot()
|
124
|
+
|
125
|
+
|
126
|
+
def cube(x: Expr) -> Expr:
|
127
|
+
"""立方"""
|
128
|
+
return x.pow(3)
|
129
|
+
|
130
|
+
|
131
|
+
def degrees(x: Expr) -> Expr:
|
132
|
+
"""弧度转角度"""
|
133
|
+
return x.degrees()
|
134
|
+
|
135
|
+
|
110
136
|
def densify(x: Expr) -> Expr:
|
111
137
|
raise
|
112
138
|
|
113
139
|
|
140
|
+
def div(x: Expr, y: Expr) -> Expr:
|
141
|
+
"""x/y的整数部分
|
142
|
+
|
143
|
+
Examples
|
144
|
+
--------
|
145
|
+
```python
|
146
|
+
df = pl.DataFrame({
|
147
|
+
'a': [None, -1.5, 0., 1.5, 2.5],
|
148
|
+
'b': [None, -1, 0, 1, 2],
|
149
|
+
}).with_columns(
|
150
|
+
out1=div(pl.col('a'), 0),
|
151
|
+
out2=div(pl.col('a'), 1),
|
152
|
+
out3=div(pl.col('a'), pl.col('b')),
|
153
|
+
)
|
154
|
+
shape: (5, 5)
|
155
|
+
┌──────┬──────┬──────┬──────┬──────┐
|
156
|
+
│ a ┆ b ┆ out1 ┆ out2 ┆ out3 │
|
157
|
+
│ --- ┆ --- ┆ --- ┆ --- ┆ --- │
|
158
|
+
│ f64 ┆ i64 ┆ i64 ┆ i64 ┆ i64 │
|
159
|
+
╞══════╪══════╪══════╪══════╪══════╡
|
160
|
+
│ null ┆ null ┆ null ┆ null ┆ null │
|
161
|
+
│ -1.5 ┆ -1 ┆ null ┆ -2 ┆ 1 │
|
162
|
+
│ 0.0 ┆ 0 ┆ null ┆ 0 ┆ null │
|
163
|
+
│ 1.5 ┆ 1 ┆ null ┆ 1 ┆ 1 │
|
164
|
+
│ 2.5 ┆ 2 ┆ null ┆ 2 ┆ 1 │
|
165
|
+
└──────┴──────┴──────┴──────┴──────┘
|
166
|
+
```
|
167
|
+
|
168
|
+
"""
|
169
|
+
return x.floordiv(y).cast(Int64, strict=False)
|
170
|
+
|
171
|
+
|
114
172
|
def divide(x: Expr, y: Expr) -> Expr:
|
115
173
|
"""x/y
|
116
174
|
|
@@ -368,6 +426,35 @@ def log1p(x: Expr) -> Expr:
|
|
368
426
|
return x.log1p()
|
369
427
|
|
370
428
|
|
429
|
+
def log2(x: Expr) -> Expr:
|
430
|
+
"""2为底的对数
|
431
|
+
|
432
|
+
Examples
|
433
|
+
--------
|
434
|
+
```python
|
435
|
+
df = pl.DataFrame({
|
436
|
+
'a': [None, -1, 0, 1, 2],
|
437
|
+
}).with_columns(
|
438
|
+
out1=log2(pl.col('a')),
|
439
|
+
)
|
440
|
+
shape: (5, 2)
|
441
|
+
┌──────┬──────┐
|
442
|
+
│ a ┆ out1 │
|
443
|
+
│ --- ┆ --- │
|
444
|
+
│ i64 ┆ f64 │
|
445
|
+
╞══════╪══════╡
|
446
|
+
│ null ┆ null │
|
447
|
+
│ -1 ┆ NaN │
|
448
|
+
│ 0 ┆ -inf │
|
449
|
+
│ 1 ┆ 0.0 │
|
450
|
+
│ 2 ┆ 1.0 │
|
451
|
+
└──────┴──────┘
|
452
|
+
```
|
453
|
+
|
454
|
+
"""
|
455
|
+
return x.log(2)
|
456
|
+
|
457
|
+
|
371
458
|
def max_(a: Expr, b: Expr, *args) -> Expr:
|
372
459
|
"""水平多列最大值 Maximum value of all inputs. At least 2 inputs are required."""
|
373
460
|
return max_horizontal(a, b, *args)
|
@@ -515,6 +602,11 @@ def power(x: Expr, y: Expr) -> Expr:
|
|
515
602
|
return x.pow(y.cast(Float64))
|
516
603
|
|
517
604
|
|
605
|
+
def radians(x: Expr) -> Expr:
|
606
|
+
"""角度转弧度"""
|
607
|
+
return x.radians()
|
608
|
+
|
609
|
+
|
518
610
|
def reverse(x: Expr) -> Expr:
|
519
611
|
"""-x"""
|
520
612
|
return -x
|
@@ -735,6 +827,11 @@ def sqrt(x: Expr) -> Expr:
|
|
735
827
|
return x.sqrt()
|
736
828
|
|
737
829
|
|
830
|
+
def square(x: Expr) -> Expr:
|
831
|
+
"""平方"""
|
832
|
+
return x.pow(2)
|
833
|
+
|
834
|
+
|
738
835
|
def subtract(x: Expr, y: Expr) -> Expr:
|
739
836
|
"""x-y"""
|
740
837
|
return x - y
|
@@ -1 +0,0 @@
|
|
1
|
-
__version__ = "0.5.2"
|
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
|
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
|
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
|
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
|
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
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|