Технический анализ PANDAS ( Pandas TA ) - это простая в использовании библиотеку, которая использует пакет Pandas с более чем 130 показателями и коммунальными функциями и более чем 60 моделями Lib Candlestick. Многие часто используемые индикаторы, такие как: паттерн свечей ( CDL_PATTERN ), простое скользящее среднее дивергенция скольжения средней средней ( SMA ) ( MACD ), экспоненциальное скользящее среднее ( HMA ), полосы Боллингера ( BBANDS ), объем баланса ( ОВС ), Aroon & aroon gscillator ( Aroon ), Squeeze ( Squeeze ) и многие другие .
Примечание: TA LIB должен быть установлен для использования всех моделей свечей. pip install TA-Lib
. Если TA LIB не установлен, то будут доступны только застройки свечи.
talib=False
.ta.stdev(df["close"], length=30, talib=False)
.import_dir
в разделе /pandas_ta/custom.py
.ta.tsignals
Pandas Ta.lookahead=False
чтобы отключить.Pandas TA проверяет, есть ли у пользователя некоторые общие торговые пакеты, в том числе, помимо прочего: TA Lib , Vector Bt , Yfinance ... большая часть которых экспериментально и может сломаться, пока он не стабилизируется больше.
help(ta.ticker)
и help(ta.yf)
и примеры ниже. Версия pip
является последним стабильным выпуском. Версия: 0.3.14b
$ pip install pandas_ta
Лучший выбор! Версия: 0.3.14b
$ pip install -U git+https://github.com/twopirllc/pandas-ta
Это версия разработки , которая может иметь ошибки и другие нежелательные побочные эффекты. Используйте на свой риск!
$ pip install -U git+https://github.com/twopirllc/pandas-ta.git@development
import pandas as pd
import pandas_ta as ta
df = pd . DataFrame () # Empty DataFrame
# Load data
df = pd . read_csv ( "path/to/symbol.csv" , sep = "," )
# OR if you have yfinance installed
df = df . ta . ticker ( "aapl" )
# VWAP requires the DataFrame index to be a DatetimeIndex.
# Replace "datetime" with the appropriate column from your DataFrame
df . set_index ( pd . DatetimeIndex ( df [ "datetime" ]), inplace = True )
# Calculate Returns and append to the df DataFrame
df . ta . log_return ( cumulative = True , append = True )
df . ta . percent_return ( cumulative = True , append = True )
# New Columns with results
df . columns
# Take a peek
df . tail ()
# vv Continue Post Processing vv
Некоторые аргументы индикатора были переупорядочены для последовательности. Используйте help(ta.indicator_name)
для получения дополнительной информации или сделайте запрос на привлечение для улучшения документации.
import pandas as pd
import pandas_ta as ta
# Create a DataFrame so 'ta' can be used.
df = pd . DataFrame ()
# Help about this, 'ta', extension
help ( df . ta )
# List of all indicators
df . ta . indicators ()
# Help about an indicator such as bbands
help ( ta . bbands )
Спасибо, что использовали Pandas TA !
$ pip install -U git+https://github.com/twopirllc/pandas-ta
Спасибо за ваш вклад!
Pandas TA имеет три основных «стиля» обработки технических индикаторов для вашего случая использования и/или требований. Это стандартные , расширение DataFrame и стратегия Pandas TA . Каждый с увеличением уровня абстракции для простоты использования. Когда вы становитесь более знакомым с Pandas TA , простота и скорость использования стратегии Pandas TA могут стать более очевидной. Кроме того, вы можете создавать свои собственные индикаторы посредством цепочки или композиции. Наконец, каждый индикатор либо возвращает серию , либо данные о данных в формате подчеркивания, независимо от стиля.
Вы явно определяете входные столбцы и заботитесь о выходе.
sma10 = ta.sma(df["Close"], length=10)
SMA_10
donchiandf = ta.donchian(df["HIGH"], df["low"], lower_length=10, upper_length=15)
DC_10_15
и имена столбцов: DCL_10_15, DCM_10_15, DCU_10_15
ema10_ohlc4 = ta.ema(ta.ohlc4(df["Open"], df["High"], df["Low"], df["Close"]), length=10)
EMA_10
. При необходимости вам может потребоваться однозначно назвать это. Вызов df.ta
автоматически строчит OHLCVA к OHLCVA : OPEN, HIGH, LOW, CLOUD, GOLMAT , ADJ_CLOSE . По умолчанию df.ta
будет использовать OHLCVA для аргументов индикатора, удаляя необходимость непосредственно указать входные столбцы.
sma10 = df.ta.sma(length=10)
SMA_10
ema10_ohlc4 = df.ta.ema(close=df.ta.ohlc4(), length=10, suffix="OHLC4")
EMA_10_OHLC4
close=df.ta.ohlc4()
.donchiandf = df.ta.donchian(lower_length=10, upper_length=15)
DC_10_15
и имена столбцов: DCL_10_15, DCM_10_15, DCU_10_15
То же, что и последние три примера, но добавление результатов непосредственно к DataFrame df
.
df.ta.sma(length=10, append=True)
df
: SMA_10
.df.ta.ema(close=df.ta.ohlc4(append=True), length=10, suffix="OHLC4", append=True)
close=df.ta.ohlc4()
.df.ta.donchian(lower_length=10, upper_length=15, append=True)
df
с именами столбцов: DCL_10_15, DCM_10_15, DCU_10_15
. Стратегия Pandas TA - это названная группа показателей, которые будут управлять методом стратегии . Все стратегии используют MulitProcessing, за исключением случаев использования параметра col_names
(см. Ниже). В следующем разделе перечислены различные типы стратегий .
# (1) Create the Strategy
MyStrategy = ta . Strategy (
name = "DCSMA10" ,
ta = [
{ "kind" : "ohlc4" },
{ "kind" : "sma" , "length" : 10 },
{ "kind" : "donchian" , "lower_length" : 10 , "upper_length" : 15 },
{ "kind" : "ema" , "close" : "OHLC4" , "length" : 10 , "suffix" : "OHLC4" },
]
)
# (2) Run the Strategy
df . ta . strategy ( MyStrategy , ** kwargs )
Стратегический класс - это простой способ назвать и группировать ваши любимые индикаторы TA с помощью класса данных . Pandas TA поставляется с двумя предварительно построенными основными стратегиями, которые помогут вам начать работу: Allstrategy и Commonstrategy . Стратегия может быть такой же простой, как и Commonstrategy или такая сложная по мере необходимости, используя композицию/цепочку.
df
.См. Примеры стратегии Pandas TA. Для примеров, включая композицию/цепочку индикатора .
{"kind": "indicator name"}
. Не забудьте проверить ваше правописание. # Running the Builtin CommonStrategy as mentioned above
df . ta . strategy ( ta . CommonStrategy )
# The Default Strategy is the ta.AllStrategy. The following are equivalent:
df . ta . strategy ()
df . ta . strategy ( "All" )
df . ta . strategy ( ta . AllStrategy )
# List of indicator categories
df . ta . categories
# Running a Categorical Strategy only requires the Category name
df . ta . strategy ( "Momentum" ) # Default values for all Momentum indicators
df . ta . strategy ( "overlap" , length = 42 ) # Override all Overlap 'length' attributes
# Create your own Custom Strategy
CustomStrategy = ta . Strategy (
name = "Momo and Volatility" ,
description = "SMA 50,200, BBANDS, RSI, MACD and Volume SMA 20" ,
ta = [
{ "kind" : "sma" , "length" : 50 },
{ "kind" : "sma" , "length" : 200 },
{ "kind" : "bbands" , "length" : 20 },
{ "kind" : "rsi" },
{ "kind" : "macd" , "fast" : 8 , "slow" : 21 },
{ "kind" : "sma" , "close" : "volume" , "length" : 20 , "prefix" : "VOLUME" },
]
)
# To run your "Custom Strategy"
df . ta . strategy ( CustomStrategy )
Метод стратегии Pandas TA использует многопроцессорную обработку индикатора всех типов стратегии, за одним исключением! При использовании параметра col_names
для переименования столбцов (ы) результирующих (ы) индикаторы в массиве ta
будут выполнены в порядке.
# VWAP requires the DataFrame index to be a DatetimeIndex.
# * Replace "datetime" with the appropriate column from your DataFrame
df . set_index ( pd . DatetimeIndex ( df [ "datetime" ]), inplace = True )
# Runs and appends all indicators to the current DataFrame by default
# The resultant DataFrame will be large.
df . ta . strategy ()
# Or the string "all"
df . ta . strategy ( "all" )
# Or the ta.AllStrategy
df . ta . strategy ( ta . AllStrategy )
# Use verbose if you want to make sure it is running.
df . ta . strategy ( verbose = True )
# Use timed if you want to see how long it takes to run.
df . ta . strategy ( timed = True )
# Choose the number of cores to use. Default is all available cores.
# For no multiprocessing, set this value to 0.
df . ta . cores = 4
# Maybe you do not want certain indicators.
# Just exclude (a list of) them.
df . ta . strategy ( exclude = [ "bop" , "mom" , "percent_return" , "wcp" , "pvi" ], verbose = True )
# Perhaps you want to use different values for indicators.
# This will run ALL indicators that have fast or slow as parameters.
# Check your results and exclude as necessary.
df . ta . strategy ( fast = 10 , slow = 50 , verbose = True )
# Sanity check. Make sure all the columns are there
df . columns
Помните, что они не будут использовать многопроцесс
NonMPStrategy = ta . Strategy (
name = "EMAs, BBs, and MACD" ,
description = "Non Multiprocessing Strategy by rename Columns" ,
ta = [
{ "kind" : "ema" , "length" : 8 },
{ "kind" : "ema" , "length" : 21 },
{ "kind" : "bbands" , "length" : 20 , "col_names" : ( "BBL" , "BBM" , "BBU" )},
{ "kind" : "macd" , "fast" : 8 , "slow" : 21 , "col_names" : ( "MACD" , "MACD_H" , "MACD_S" )}
]
)
# Run it
df . ta . strategy ( NonMPStrategy )
# Set ta to default to an adjusted column, 'adj_close', overriding default 'close'.
df . ta . adjusted = "adj_close"
df . ta . sma ( length = 10 , append = True )
# To reset back to 'close', set adjusted back to None.
df . ta . adjusted = None
# List of Pandas TA categories.
df . ta . categories
# Set the number of cores to use for strategy multiprocessing
# Defaults to the number of cpus you have.
df . ta . cores = 4
# Set the number of cores to 0 for no multiprocessing.
df . ta . cores = 0
# Returns the number of cores you set or your default number of cpus.
df . ta . cores
# The 'datetime_ordered' property returns True if the DataFrame
# index is of Pandas datetime64 and df.index[0] < df.index[-1].
# Otherwise it returns False.
df . ta . datetime_ordered
# Sets the Exchange to use when calculating the last_run property. Default: "NYSE"
df . ta . exchange
# Set the Exchange to use.
# Available Exchanges: "ASX", "BMF", "DIFX", "FWB", "HKE", "JSE", "LSE", "NSE", "NYSE", "NZSX", "RTS", "SGX", "SSE", "TSE", "TSX"
df . ta . exchange = "LSE"
# Returns the time Pandas TA was last run as a string.
df . ta . last_run
# The 'reverse' is a helper property that returns the DataFrame
# in reverse order.
df . ta . reverse
# Applying a prefix to the name of an indicator.
prehl2 = df . ta . hl2 ( prefix = "pre" )
print ( prehl2 . name ) # "pre_HL2"
# Applying a suffix to the name of an indicator.
endhl2 = df . ta . hl2 ( suffix = "post" )
print ( endhl2 . name ) # "HL2_post"
# Applying a prefix and suffix to the name of an indicator.
bothhl2 = df . ta . hl2 ( prefix = "pre" , suffix = "post" )
print ( bothhl2 . name ) # "pre_HL2_post"
# Returns the time range of the DataFrame as a float.
# By default, it returns the time in "years"
df . ta . time_range
# Available time_ranges include: "years", "months", "weeks", "days", "hours", "minutes". "seconds"
df . ta . time_range = "days"
df . ta . time_range # prints DataFrame time in "days" as float
# Sets the DataFrame index to UTC format.
df . ta . to_utc
import numpy as np
# Add constant '1' to the DataFrame
df . ta . constants ( True , [ 1 ])
# Remove constant '1' to the DataFrame
df . ta . constants ( False , [ 1 ])
# Adding constants for charting
import numpy as np
chart_lines = np . append ( np . arange ( - 4 , 5 , 1 ), np . arange ( - 100 , 110 , 10 ))
df . ta . constants ( True , chart_lines )
# Removing some constants from the DataFrame
df . ta . constants ( False , np . array ([ - 60 , - 40 , 40 , 60 ]))
# Prints the indicators and utility functions
df . ta . indicators ()
# Returns a list of indicators and utility functions
ind_list = df . ta . indicators ( as_list = True )
# Prints the indicators and utility functions that are not in the excluded list
df . ta . indicators ( exclude = [ "cg" , "pgo" , "ui" ])
# Returns a list of the indicators and utility functions that are not in the excluded list
smaller_list = df . ta . indicators ( exclude = [ "cg" , "pgo" , "ui" ], as_list = True )
# Download Chart history using yfinance. (pip install yfinance) https://github.com/ranaroussi/yfinance
# It uses the same keyword arguments as yfinance (excluding start and end)
df = df . ta . ticker ( "aapl" ) # Default ticker is "SPY"
# Period is used instead of start/end
# Valid periods: 1d,5d,1mo,3mo,6mo,1y,2y,5y,10y,ytd,max
# Default: "max"
df = df . ta . ticker ( "aapl" , period = "1y" ) # Gets this past year
# History by Interval by interval (including intraday if period < 60 days)
# Valid intervals: 1m,2m,5m,15m,30m,60m,90m,1h,1d,5d,1wk,1mo,3mo
# Default: "1d"
df = df . ta . ticker ( "aapl" , period = "1y" , interval = "1wk" ) # Gets this past year in weeks
df = df . ta . ticker ( "aapl" , period = "1mo" , interval = "1h" ) # Gets this past month in hours
# BUT WAIT!! THERE'S MORE!!
help ( ta . yf )
Шаблоны, которые не смелые , требуют установки TA-LIB: pip install TA-Lib
# Get all candle patterns (This is the default behaviour)
df = df . ta . cdl_pattern ( name = "all" )
# Get only one pattern
df = df . ta . cdl_pattern ( name = "doji" )
# Get some patterns
df = df . ta . cdl_pattern ( name = [ "doji" , "inside" ])
ta.linreg(series, r=True)
lazybear=True
df.ta.strategy()
.Дивергенция конвергенции скользящего среднего (MACD) |
---|
![]() |
help(ta.ichimoku)
.lookahead=False
выпивает столбец SPAN Chikou, чтобы предотвратить потенциальную утечку данных.Простые со средним перемещением (SMA) и Bollinger Bands (BANDS) |
---|
![]() |
Используйте параметр: кумулятивный = true для кумулятивных результатов.
Процент доходности (кумулятивный) с простой скользящей средней (SMA) |
---|
![]() |
Z. |
---|
![]() |
lookahead=False
чтобы отключить центрирование и удалить потенциальную утечку данных.Средний индекс направленного движения (ADX) |
---|
![]() |
Средний истинный диапазон (ATR) |
---|
![]() |
Объем на баланс (OV) |
---|
![]() |
Метрики производительности являются новым дополнением к пакету, и, следовательно, являются ненадежными. Используйте свой собственный риск. Эти метрики возвращают поплавок и не являются частью расширения DataFrame . Они называются стандартным способом. Например:
import pandas_ta as ta
result = ta . cagr ( df . close )
Для более легкой интеграции с портфелем Vectorbt от метода from_signals
метод ta.trend_return
был заменен методом ta.tsignals
для упрощения генерации торговых сигналов. Для получения комплексного примера см. Пример ноутбука Jupyter Vectorbt Backtest с Pandas TA в каталоге примеров.
import pandas as pd
import pandas_ta as ta
import vectorbt as vbt
df = pd . DataFrame (). ta . ticker ( "AAPL" ) # requires 'yfinance' installed
# Create the "Golden Cross"
df [ "GC" ] = df . ta . sma ( 50 , append = True ) > df . ta . sma ( 200 , append = True )
# Create boolean Signals(TS_Entries, TS_Exits) for vectorbt
golden = df . ta . tsignals ( df . GC , asbool = True , append = True )
# Sanity Check (Ensure data exists)
print ( df )
# Create the Signals Portfolio
pf = vbt . Portfolio . from_signals ( df . close , entries = golden . TS_Entries , exits = golden . TS_Exits , freq = "D" , init_cash = 100_000 , fees = 0.0025 , slippage = 0.0025 )
# Print Portfolio Stats and Return Stats
print ( pf . stats ())
print ( pf . returns_stats ())
mamode
Kwarg с большим количеством скользящих средних вариантов с функцией утилиты скользящей средней ta.ma()
. Для простоты все варианты являются средними для перемещения с одним источником. В первую очередь это внутренняя утилита, используемая индикаторами, которые имеют mamode
Kwarg . Это включает в себя индикаторы: акценты , AMAT , AOBV , ATR , BANDS , BIAS , EFI , HILO , KC , NATR , QQE , RVI и THERMO ; Параметры mamode
по умолчанию не изменились. Тем не менее, ta.ma()
может использоваться и пользователем, если это необходимо. Для получения дополнительной информации: help(ta.ma)
to_utc
, для преобразования индекса DataFrame в UTC. См.: help(ta.to_utc)
теперь как свойство Pandas TA DataFrame, чтобы легко преобразовать индекс данных DataFrame в UTC. close > sma(close, 50)
она возвращает тенденцию, торговые записи и торговые выходы этой тенденции, чтобы сделать ее совместимым с Vectorbt, установив asbool=True
чтобы получить логические торговые записи и выходы. Смотрите help(ta.tsignals)
help(ta.alma)
Торговый счет или фонд. См. help(ta.drawdown)
help(ta.cdl_pattern)
help(ta.cdl_z)
help(ta.cti)
help(ta.xsignals)
help(ta.dm)
help(ta.ebsw)
help(ta.jma)
help(ta.kvo)
help(ta.stc)
help(ta.squeeze_pro)
df.ta.strategy()
по соображениям производительности. Смотрите help(ta.td_seq)
help(ta.tos_stdevall)
help(ta.vhf)
mamode
переименован в mode
. См help(ta.accbands)
.mamode
с по умолчанию « RMA » и с теми же параметрами mamode
что и TradingView. Новый аргумент lensig
, так что он ведет себя как индикатор TradingView's Builtin ADX. Смотрите help(ta.adx)
.drift
и более описательные имена столбцов.mamode
по умолчанию теперь является « RMA » и с теми же параметрами mamode
что и TradingView. Смотрите help(ta.atr)
.ddoff
, чтобы контролировать степени свободы. Также включал BB процент (BBP) в качестве окончательного столбца. По умолчанию 0. См. help(ta.bbands)
.ln
для использования естественного логарифма (true) вместо стандартного логарифма (false). По умолчанию ложь. Смотрите help(ta.chop)
.tvmode
с по умолчанию True
. Когда tvmode=False
, CKSP реализует «новый технический трейдер» со значениями по умолчанию. Смотрите help(ta.cksp)
.talib
будет использовать версию TA LIB, и если будет установлен TA LIB. По умолчанию верно. Смотрите help(ta.cmo)
.strict
проверяет, если серия непрерывно уменьшается в течение length
периода с более быстрым расчетом. По умолчанию: False
. percent
аргумент также был добавлен с дефолтом. См help(ta.decreasing)
.strict
проверяет, если серия постоянно увеличивается в течение length
периода с более быстрым расчетом. По умолчанию: False
. percent
аргумент также был добавлен с дефолтом. См help(ta.increasing)
.help(ta.kvo)
.as_strided
или более новый метод sliding_window_view
. Это должно решить проблемы с Google Colab и задерживаемыми обновлениями зависимостей, а также зависимости Tensorflow, как обсуждалось в выпусках № 285 и № 329.asmode
включает в себя версию MACD. По умолчанию ложь. Смотрите help(ta.macd)
.sar
. Новый аргумент af0
для инициализации коэффициента ускорения. См help(ta.psar)
.mamode
в качестве опции. По умолчанию SMA соответствует TA Lib. Смотрите help(ta.ppo)
.signal
с по умолчанию 13
и режим сигнала MA mamode
с AMA по умолчанию в качестве аргументов. Смотрите help(ta.tsi)
.help(ta.vp)
.help(ta.vwma)
.anchor
. По умолчанию: «D» для «ежедневной». См. Times Stories смещенные псевдонимы для дополнительных вариантов. Требуется, чтобы индекс DataFrame был DateTimeIndex. См help(ta.vwap)
.help(ta.vwma)
.Z_length
на ZS_length
. Смотрите help(ta.zscore)
.Оригинал TA-LIB | TradingView | Сьерра -диаграмма | MQL5 | FM Labs | Pro Real Code | Пользователь 42
Чувствуете себя щедрым, как пакет или хотите, чтобы он стал более зрелым упаковкой?