Я пытаюсь применить индикаторы технических финансов к данным, которые я получу из Yahoo Finance. Я нашел библиотеку PANDAS_TA , которая, казалось, соответствовала моим потребностям, однако применение стратегии дает мне ошибки. В частности, я хочу использовать AllStrategy (стратегия по умолчанию), которая применяет все показатели к данным. был связан, однако, после установки исходного пакета TA-Lab и создания его вручную, я все еще столкнулся с теми же ошибками. предназначен для применения с помощью справки (df.ta.strategy) -command. При применении их отдельно, кажется, что индикаторы «перекрытия» вызывают эту конкретную проблему. Кроме того, применение выходов индикаторов «тренда» [x] не доступная стратегия. .
Из того, что я могу найти. был устарел, но есть ли способ обойти это? Я нашел сообщение (и получил ответ здесь), в котором говорилось, что он может быть временно исправлен с использованием pd.series.append = pd.series._append , но я получаю ту же ошибку с этой строкой и без нее.
Кроме того, довольно pandas_ta < /code> -picifice, но почему индикаторы «утилита» не являются доступной стратегией? Вы могли бы указать мне в направлении библиотеки, которая делает что -то подобное, я был бы очень благодарен! < /p>
import pandas as pd
import yfinance as yf
import pandas_ta as ta
pd.Series.append = pd.Series._append # Same error with and without this line
def fetch_and_analyze(ticker, interval='1d'):
# Fetching historical data
data = yf.download(ticker, period=period, interval=interval)
# Check if data is empty
if data.empty:
print("No data fetched for ticker:", ticker)
return pd.DataFrame()
# Applying a simpler strategy from pandas_ta to ensure it works
# data.ta.strategy('candles', timed=True)
# data.ta.strategy('cycles', timed=True)
# data.ta.strategy('momentum', timed=True)
# data.ta.strategy('overlap', timed=True)
---------------------------------------------------------------------------
RemoteTraceback Traceback (most recent call last)
RemoteTraceback:
"""
Traceback (most recent call last):
File "C:\Python311\Lib\multiprocessing\pool.py", line 125, in worker
result = (True, func(*args, **kwds))
^^^^^^^^^^^^^^^^^^^
File "C:\Python311\Lib\multiprocessing\pool.py", line 48, in mapstar
return list(map(*args))
^^^^^^^^^^^^^^^^
File "c:\Users\x\stock-analysis\Lib\site-packages\pandas_ta\core.py", line 467, in _mp_worker
return getattr(self, method)(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "c:\Users\x\stock-analysis\Lib\site-packages\pandas_ta\core.py", line 1225, in mcgd
result = mcgd(close=close, length=length, offset=offset, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "c:\Users\x\stock-analysis\Lib\site-packages\pandas_ta\overlap\mcgd.py", line 24, in mcgd
mcg_ds = close[:1].append(mcg_cell[1:])
^^^^^^^^^^^^^^^^
File "c:\Users\x\stock-analysis\Lib\site-packages\pandas\core\generic.py", line 6204, in __getattr__
return object.__getattribute__(self, name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'Series' object has no attribute 'append'
"""
The above exception was the direct cause of the following exception:
AttributeError Traceback (most recent call last)
Cell In[124], line 1
----> 1 data_with_indicators = fetch_and_analyze(ticker)
Cell In[123], line 20
8 return pd.DataFrame()
10 # Applying a simpler strategy from pandas_ta to ensure it works
11 # data.ta.strategy('candles', timed=True)
12 # data.ta.strategy('cycles', timed=True)
(...)
18 # data.ta.strategy('volatility', timed=True)
19 # data.ta.strategy('volume', timed=True)
---> 20 data.ta.strategy('all', timed=True)
22 return data
File c:\Users\x\stock-analysis\Lib\site-packages\pandas_ta\core.py:792, in AnalysisIndicators.strategy(self, *args, **kwargs)
789 self._last_run = get_time(self.exchange, to_string=True)
791 # Apply prefixes/suffixes and appends indicator results to the DataFrame
--> 792 [self._post_process(r, **kwargs) for r in results]
794 if verbose:
795 print(f" Total indicators: {len(ta)}")
File c:\Users\x\stock-analysis\Lib\site-packages\pandas_ta\core.py:792, in (.0)
789 self._last_run = get_time(self.exchange, to_string=True)
791 # Apply prefixes/suffixes and appends indicator results to the DataFrame
--> 792 [self._post_process(r, **kwargs) for r in results]
794 if verbose:
795 print(f" Total indicators: {len(ta)}")
File C:\Python311\Lib\multiprocessing\pool.py:423, in (.0)
415 result = IMapIterator(self)
416 self._taskqueue.put(
417 (
418 self._guarded_task_generation(result._job,
(...)
421 result._set_length
422 ))
--> 423 return (item for chunk in result for item in chunk)
File C:\Python311\Lib\multiprocessing\pool.py:873, in IMapIterator.next(self, timeout)
871 if success:
872 return value
--> 873 raise value
AttributeError: 'Series' object has no attribute 'append'
Подробнее здесь: https://stackoverflow.com/questions/779 ... ta-library