Repository navigation
Expand file tree
/
Copy pathCHANGELOG
More file actions
536 lines (336 loc) · 13.7 KB
/
Copy pathCHANGELOG
File metadata and controls
536 lines (336 loc) · 13.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
0.8.4
=====
- [NEW]: Improve performance when using pandas by reducing float array copies.
0.8.3
=====
- [NEW]: Update to TA-Lib C 0.8.3.
- [NEW]: This includes new TA functions: ALMA, ASI, BBW, CG, CHOP, CHOPTR,
CKSP, CRSI, CTI, DOSC, EMV, FISHER, FRAMA, IBS, ICHIMOKU, KST, KSTEXT,
KURTOSIS, KVO, MCGD, MEDIAN, PERCENTB, PSO, ROGERSSATCHELL, RVIR, SI, SQZMOM,
STC, SWAK_2PHP, SWAK_BP, SWAK_BUTTER, SWAK_GAUSS, SWAK_HP, VIDYA, WAVETREND,
ZIGZAG
- [NEW]: Additional moving average types ``MA_Type.VIDYA`` and
``MA_Type.ALMA``.
- [NEW]: Source builds download and verify TA-Lib C 0.8.3, build it as a
static library and link it into the extension. A compiler, CMake and network
access are required; a separate TA-Lib C installation is no longer needed.
Generated C files remain included in source distributions.
- [CHANGE]: Setting ``TA_INCLUDE_PATH`` or ``TA_LIBRARY_PATH`` uses an existing
TA-Lib C installation instead, without downloading or building the C library.
If only one is set, the other uses the standard search paths.
- [CHANGE]: Wheels statically link TA-Lib C through the same build process.
0.8.2
=====
- [NEW]: Support free-threaded CPython without enabling the GIL on import.
0.8.1
=====
- [CHANGE]: Native indicator calculations and stream operations release the
GIL on regular CPython too. Independent calls can run concurrently;
operations on a shared stream handle are protected by a per-handle mutex.
Python argument conversion, array allocation and result construction still
require Python thread state. Input arrays must not be modified or resized
during a call. Short calls can incur additional GIL handoff overhead.
- [CHANGE]: Changing process-wide unstable periods, compatibility or candle
settings while a call is active or any stream is alive now raises
``RuntimeError``. Settings cannot change between lookback calculation and
computation. Explicit shutdown also rejects active calls or streams.
- [FIX]: ``tools/threads_talib.py`` now benchmarks a fixed number of calls,
propagates worker failures and reports median throughput across thread
counts, replacing its racy shared counter.
- [CHANGE]: ``talib.stream`` is now the real streaming API of TA-Lib C 0.8.1:
``stream.SMA(close)`` returns a handle, not a value. ``handle.value`` is the
value at the last history bar, ``handle.update(bar)`` costs O(1) and returns
that bar's value, ``handle.peek(bar)`` evaluates a forming bar without
committing it, and ``handle.copy()`` forks it. ``stream.SMA.open_and_fill()``
returns the handle and the Function API's series in one pass. A multi-output
function answers with the same tuple the Function API returns. The old
last-value functions -- ``talib.stream.SMA``, ``talib.stream_SMA``, and their
``_ta_lib.pyi`` stubs -- are gone; ``talib/stream.pyi`` types the handles
instead.
Migrating is ``stream.X(...)`` -> ``stream.X(...).value``, and the compiler
cannot find the sites for you: ``if stream.CDLDOJI(o, h, l, c):`` used to test
the pattern and now tests a handle, which is always true.
- [NEW]: ``talib.InsufficientHistory``, raised when a stream is opened with
too little history. It is the library's one recoverable error, so it is
catchable on its own rather than as a bare ``Exception``.
- [FIX]: ``help(talib.SUPERTREND)`` and the ``abstract`` stub named the outputs
``real`` and ``integer``; they are ``supertrend`` and ``trend``, the names
``abstract.Function('SUPERTREND').output_names`` already reported.
- [FIX]: An empty array given to a function whose lookback is zero, such as
``talib.ACOS`` or ``talib.MA(x, timeperiod=1)``, made TA-Lib read and write
one element outside the buffers, which could crash the interpreter later or
corrupt memory silently. An empty input now returns empty outputs without
calling TA-Lib, whatever the function and its parameters. The bug dates from
0.4.27.
0.8.0
=====
- [NEW]: Support TA-Lib C 0.8.1, which is now the minimum required version.
- [NEW]: The 40 functions TA-Lib C added since 0.7.1: AC, ADR, AO, CMF, CMOU,
COPPOCK, CUMSUM, CVI, DONCHIAN, DPO, EFI, ER, ERI, FOSC, FRACTAL, HA, HMA,
KC, KDJ, MARKETFI, MASSI, NVI, PERCENTILE, PERCENTRANK, PVI, PVO, PVT,
QSTICK, RMA, RVI, RVOL, SMI, SUPERTREND, TSI, VHF, VORTEX, VWAP, VWMA, WAD,
ZLEMA.
- [NEW]: New moving averages: ``MA_Type.HMA``, ``MA_Type.DISABLED``,
``MA_Type.DEFAULT``, ``MA_Type.ZLEMA`` and ``MA_Type.RMA``.
- [NEW]: ``set_unstable_period()`` and ``get_unstable_period()`` accept
``'RMA'``, ``'HA'`` and ``'RVI'``.
- [FIX]: ``abstract`` raised ``KeyError`` on function and output flags added
after this wrapper was written; unknown flag bits are now ignored.
- [FIX]: A moving-average parameter not spelled exactly ``matype`` -- ``KDJ``'s
``slowk_matype`` -- defaulted to SMA rather than to the function's own
documented default.
- [FIX]: An ``integer`` output is documented as the candlestick -100/0/100
convention only for candlestick functions; ``SUPERTREND``'s is a trend
direction.
- [CHANGE]: ``APO`` and ``PPO`` now default ``matype`` to EMA, and ``BBANDS``
defaults ``timeperiod`` to 20, following TA-Lib C 0.8.1.
- [FIX]: ``set_unstable_period()`` targeted the wrong function for every id
after ``IMI`` (e.g. ``'RSI'`` set ``PLUS_DM``); ids now come from the C
header. ``'ADXR'``, ``'MFI'`` and ``'STOCHRSI'`` are no-ops that emit a
``DeprecationWarning``.
- [CHANGE]: Remove the unnecessary ``build`` runtime dependency and ``wheel``
build dependency.
- [NEW]: Upgrade to Cython 3.3.0
0.7.1
=====
- [FIX]: Fix wheels to build with TA-Lib C 0.7.1 properly.
0.7.0
=====
- [NEW]: Upgrade to Cython 3.2.8
- [FIX]: Adding ACCBANDS, AVGDEV, IMI to get_func_groups()
- [FIX]: Adding ACCBANDS, AVGDEV, IMI to docs pages
- [NEW]: Adding an ``abstract.pyi`` for typing
0.6.8
=====
- [FIX]: Remove accidental cython dependency.
- [NEW]: Upgrade to Cython 3.1.5
- [NEW]: Release binaries for Python 3.14
0.6.7
=====
- [NEW]: Upgrade to Cython 3.1.3
- [FIX]: Include .pxd files in the source .tar.gz
- [FIX]: Don't require pip, it's not needed
- [FIX]: Add back some import compat for backtrader
0.6.6
=====
- [FIX]: Silence project.license warnings when building.
- [FIX]: Fix regression in abstract function parameters not coercing integers
0.6.5
=====
- [FIX]: Support PEP-517 style installation
- [NEW]: Upgrade to Cython 3.1.2
- [NEW]: Build binary wheels for Windows, macOS, and Linux.
0.6.4
=====
- [FIX]: Adding typed for ACCBANDS, AVGDEV, IMI, and stream_* functions
- [FIX]: Fix for numpy 2.3.0, which removed the npy_1_7_deprecated_api
0.6.3
=====
- [FIX]: Fix issue building against numpy2
0.6.2
=====
- [NEW]: Adding indicators ACCBANDS, AVGDEV, IMI
0.6.1
=====
- [FIX]: Build properly against TA-Lib 0.6.2 and newer on Windows.
0.6.0
=====
- [FIX]: Make sure this wrapper works with TA-Lib 0.6.1 and newer releases.
0.5.5
=====
- [FIX]: Fix for numpy 2.3.0, which removed the npy_1_7_deprecated_api
0.5.4
=====
- [FIX]: Fix lib name on windows.
0.5.3
=====
- [BUG]: Make this release only support TA-Lib 0.4.0.
0.5.2
=====
- [NEW]: Provide py typed information for C wrapper
- [FIX]: Make sure this wrapper works with TA-Lib 0.6.1
0.5.1
=====
- [FIX]: include cython *.pxi files in the source tar.gz
0.5.0
=====
- [NEW]: Upgrade to Numpy 2.0
0.4.38
======
- [FIX]: Fix lib name on windows.
0.4.37
======
- [FIX]: Make sure to pin numpy<2 in the setup.py.
0.4.36
======
- [BUG]: Make this release only support TA-Lib 0.4.0
0.4.35
======
- [FIX]: Make sure this wrapper works with TA-Lib 0.6.1
0.4.34
=====
- [FIX]: include cython *.pxi files in the source tar.gz
0.4.33
======
- [NEW]: Upgrade to Cython 3.0.11
- [FIX]: Fix import of ``pandas`` and ``polars`` to throw underlying import errors
0.4.32
======
- [FIX]: Make sure numpy<2 is in the requirements.txt
0.4.31
======
- [FIX]: Fix build issue with numpy2 released by requiring numpy<2.0.0 for now
0.4.30
======
- [FIX]: Fix the C library imports to work again on Windows, oops.
0.4.29
======
- [NEW]: Upgrade to Cython 3.0.10
- [FIX]: Make TA_INCLUDE_PATH and TA_LIBRARY_PATH override default search list
- [FIX]: Silent some compiler warnings about const pointers
0.4.28
======
- [NEW]: Upgrade to Cython 3.0.0
- [FIX]: Use embedsignature to enable code completions?
0.4.27
======
- [NEW]: Upgrade to Cython 0.29.36
- [FIX]: Fix abstract info to keep values doubles when they are (e.g., nbdevup, nvdevdn)
- [FIX]: Don't throw exceptions when inputs are all NaN
0.4.26
======
- [NEW]: Upgrade to Cython 0.29.34
- [NEW]: Moved to https://github.com/ta-lib/ta-lib-python
- [FIX]: Fix deprecation warning for polars.DataFrame(columns=[...])
0.4.25
======
- [NEW]: Upgrade to Cython 0.29.32
- [FIX]: Allow Abstract API to be safely used with multithreading
0.4.24
======
- [FIX]: runtime_lib_dirs preventing install on Windows
0.4.23
======
- [NEW]: Upgrade to Cython 0.29.25
- [NEW]: Allow TA_INCLUDE_PATH and TA_LIBRARY_PATH to work on Windows.
- [FIX]: Remove pyproject.toml which was preventing some installs.
0.4.22
======
- [NEW]: Upgrade to Cython 0.29.24
- [NEW]: Support polars.Series in Function API
- [NEW]: Support polars.Series in Streaming API
- [NEW]: Support polars.DataFrame in Abstract API
- [NEW]: Switch tests to pytest from nose (no longer supported).
0.4.21
======
- [FIX]: Fixed {MIN/MAX/MINMAX}INDEX functions to return correct indices.
0.4.20
======
- [NEW]: Upgrade to Cython 0.29.23
- [FIX]: Fix Homebrew directory on Apple M1 devices
0.4.19
======
- [NEW]: Upgrade to Cython 0.29.20
- [NEW]: from talib import * (imports all func and stream)
- [FIX]: missing method signatures in PyCharm
0.4.18
======
- [NEW]: Upgrade to Cython 0.29.17
- [NEW]: Support TA_SetCompatibility
- [NEW]: Reduce size of generated C file and memory requirements to compile it.
- [FIX]: Fixed caching input price series in Abstract API
- [NEW]: Support pandas.Series in Streaming API
0.4.17
======
- [NEW]: Support pandas.Series in Function API
0.4.16
======
- [FIX]: Fix incorrect C header include on Windows.
0.4.15
======
- [FIX]: Import TA_FUNC_FLAGS, TA_INPUT_FLAGS, TA_OUTPUT_FLAGS into
talib.abstract to support backwards compatibility for backtrader
0.4.14
======
- [NEW]: Upgrade to Cython 0.27.3
- [NEW]: Add support for set/restore candle settings
- [DOC]: Note Function API only supports numpy.ndarray (not pandas.Series)
- [NEW]: Continuous integration using Travis on Python 2.7, 3.4, 3.5, 3.6
- [NEW]: Merge common, func, abstract, stream as pxi to _ta_lib.pyx
- [DOC]: Update documentation to warn about unstable functions
0.4.10
======
- [NEW]: Upgrade to Cython 0.23.4.
- [NEW]: Adding an experimental Streaming API (talib.stream).
- [NEW]: Support for "sunos"
- [FIX]: Fix issue initializing library for use with candlestick functions.
- [NEW]: Support for TA_SetUnstablePeriod and TA_GetUnstablePeriod
0.4.9
=====
- [NEW]: Support for python 2.6 and earlier for ordereddict.
- [FIX]: Add lib64 paths to setup.py.
- [NEW]: Upgrade to Cython 0.22.
- [FIX]: Allow running setup.py without numpy or cython
- [NEW]: Allow TA_LIBRARY_PATH and TA_INCLUDE_PATH environment variables.
0.4.8
=====
- [NEW]: Support pandas.Series and pandas.Dataframe inputs.
- [FIX]: Simple check to warn if ta-lib library is not installed
- [FIX]: Fix missing key error when inputs are not default names.
- [NEW]: Upgrade to Cython 0.20.
- [FIX]: Check all input array lengths are same.
- [FIX]: Check all input arrays for NaN elements.
0.4.7
=====
- [NEW]: Upgrade to Cython 0.19.1.
- [FIX]: Fix "periods" input arrays in abstract interface.
- [FIX]: Only require necessary input arrays in abstract interface.
0.4.6
=====
- [NEW]: Support for function_flags and output_flags properties in Functions
0.4.5
=====
- [NEW]: Better test coverage of abstract interface.
- [NEW]: Support for Python 3.
0.4.4
=====
- [FIX]: Make installation on Windows easier.
0.4.3
=====
- [NEW]: Upgrade to Cython 0.18.
- [FIX]: Improve docstrings for indicators in talib.func.
- [FIX]: Initialize and shutdown underlying TA-Lib only once each process.
This should give slight speedups when using many indicators (<5%).
- [DEPRECATED]: The old moving average types that were in talib.func are now
deprecated. See the next bullet item for the replacement, or you can
continue using them with "from talib import deprecated" for the time being.
- [NEW]: The new moving average types are in talib.MA_Type. It's a class with SMA,
EMA, DEMA, etc attribute variables you should now use. Human-readable lookups
are also possible by using MA_Type as a dict e.g.:
MA_Type[MA_Type.SMA] # returns "Simple Moving Average"
- [NEW]: In addition to the existing func interface, we now provide an
enhanced abstract interface too. Functions in "import talib" use the
original interface, or you can use "from talib import abstract" for
the full abstract interface. See the README, tools/example.py and
tests/abstract_test.py for more information. The full (commented)
source code is mostly located in talib/abstract.pyx. The basic usage is very
similar:
input_arrays = { 'open': np.random.random(100),
'high': np.random.random(100),
'low': np.random.random(100),
'close': np.random.random(100),
'volume': np.random.random(100) }
ema_20 = abstract.Function('ema', input_arrays, 20).outputs # function names not case-sensitive
slowd, slowk = abstract.Function('STOCH')(input_arrays, 15, 3, 0, 3, 0)
upper, middle, lower = abstract.Function('bbands')(input_arrays, timeperiod=20)
0.4.2
=====
- Move the functions into ``talib.func``, to prepare for ``talib.abstract``
in a future release.
0.4.1
=====
- Support for MacPorts.
- Fix for FreeBSD.
0.4.0
=====
First version.