A Análise Técnica dos Pandas ( Pandas TA ) é uma biblioteca fácil de usar que aproveita o pacote Pandas com mais de 130 indicadores e funções de utilidade e mais de 60 padrões de castiçais. Muitos indicadores comumente usados estão incluídos, como: padrão de vela ( cdl_pattern ), média de convergência média móvel simples ( SMA ) divergência de convergência ( MACD ), média móvel exponencial do casco ( HMA ), bandas de Bollinger ( BBands ), volume no balance ( obv) ), O oscilador Aroon & Aroon ( Aroon ), Squeeze ( Squeeze ) e muito mais .
NOTA: O TA LIB deve ser instalado para usar todos os padrões de velas. pip install TA-Lib
. Se o TA LIB não estiver instalado, apenas os padrões de castiçadeira incorporados estarão disponíveis.
talib=False
.ta.stdev(df["close"], length=30, talib=False)
.import_dir
em /pandas_ta/custom.py
.ta.tsignals
do Pandas TA.lookahead=False
para desativar.O Pandas TA verifica se o usuário possui alguns pacotes de negociação comuns instalados, incluindo, entre outros, TA Lib , Vector Bt , Yfinance ... muito dos quais é experimental e provavelmente quebrará até que estabilize mais.
help(ta.ticker)
e help(ta.yf)
e exemplos abaixo. A versão pip
é a última versão estável. Versão: 0.3.14b
$ pip install pandas_ta
Melhor escolha! Versão: 0.3.14b
$ pip install -U git+https://github.com/twopirllc/pandas-ta
Esta é a versão de desenvolvimento que pode ter erros e outros efeitos colaterais indesejáveis. Use por risco!
$ 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
Alguns argumentos indicadores foram reordenados para consistência. Use help(ta.indicator_name)
para obter mais informações ou faça uma solicitação de tração para melhorar a documentação.
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 )
Obrigado por usar os pandas TA !
$ pip install -U git+https://github.com/twopirllc/pandas-ta
Obrigado por suas contribuições!
O Pandas TA possui três "estilos" primários de processamento de indicadores técnicos para o seu caso de uso e/ou requisitos. São eles: padrão , extensão de quadro de dados e a estratégia de Pandas TA . Cada um com níveis crescentes de abstração para facilitar o uso. À medida que você se familiariza com os pandas TA , a simplicidade e a velocidade do uso de uma estratégia de Pandas TA podem se tornar mais aparentes. Além disso, você pode criar seus próprios indicadores por meio de encadeamento ou composição. Por fim, cada indicador retorna uma série ou um quadro de dados no formato sublinhado de minúsculas, independentemente do estilo.
Você define explicitamente as colunas de entrada e cuida da saída.
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
e nomes de colunas: 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
. Se necessário, pode ser necessário nomeá -lo exclusivo. Chamar df.ta
automaticamente minimizará o OHLCVA para ohlcva : aberto, alto, baixo, fechado, volume , adj_close . Por padrão, df.ta
usará o OHLCVA para os argumentos indicadores que removem a necessidade de especificar diretamente as colunas de entrada.
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
e nomes de colunas: DCL_10_15, DCM_10_15, DCU_10_15
O mesmo que os três últimos exemplos, mas anexando os resultados diretamente ao 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
com nomes de colunas: DCL_10_15, DCM_10_15, DCU_10_15
. Uma estratégia de Pandas TA é um grupo nomeado de indicadores a ser administrado pelo método de estratégia . Todas as estratégias usam o MulitProcessing, exceto ao usar o parâmetro col_names
(veja abaixo). Existem diferentes tipos de estratégias listadas na seção a seguir.
# (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 )
A classe de estratégia é uma maneira simples de nomear e agrupar seus indicadores AT favoritos usando uma classe de dados . O Pandas TA vem com duas estratégias básicas pré -construídas para ajudá -lo a começar: AllStrategy e Commonstrategy . Uma estratégia pode ser tão simples quanto a estratégia de comércio ou tão complexa quanto necessário usando composição/encadeamento.
df
.Consulte o caderno de estratégia Pandas TA para exemplos, incluindo composição/encadeamento indicadores .
{"kind": "indicator name"}
. Lembre -se de verificar sua ortografia. # 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 )
O método de estratégia Pandas TA utiliza multiprocessamento para processamento de indicadores em massa de todos os tipos de estratégia com uma exceção! Ao usar o parâmetro col_names
para renomear colunas resultantes, os indicadores na matriz ta
serão executados em ordem.
# 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
Lembre -se disso não estará utilizando multiprocessamento
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 )
Padrões que não são ousados , exigem a instalação do 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()
.Divergência de convergência média móvel (MACD) |
---|
![]() |
help(ta.ichimoku)
.lookahead=False
cai a coluna Span Chikou para evitar vazamentos potenciais de dados.Médias móveis simples (SMA) e Bollinger Bands (BBands) |
---|
![]() |
Use o parâmetro: cumulativo = true para resultados cumulativos.
Porcentagem de retorno (cumulativo) com média móvel simples (SMA) |
---|
![]() |
Z pontuação |
---|
![]() |
lookahead=False
para desativar a centralização e remover o vazamento potencial de dados.Índice médio de movimento direcional (ADX) |
---|
![]() |
Faixa verdadeira média (ATR) |
---|
![]() |
Volume de equilíbrio (obv) |
---|
![]() |
As métricas de desempenho são uma nova adição ao pacote e, consequentemente, não são confiáveis. Use por sua conta e risco. Essas métricas retornam um flutuador e não fazem parte da extensão do quadro de dados . Eles são chamados de maneira padrão. Por exemplo:
import pandas_ta as ta
result = ta . cagr ( df . close )
Para uma integração mais fácil com o portfólio do Vectorbt do método do from_signals
, o método ta.trend_return
foi substituído pelo método ta.tsignals
para simplificar a geração de sinais de negociação. Para um exemplo abrangente, consulte o exemplo do Jupyter Notebook Vectorbt Backtest com o Pandas TA no diretório Exemplos.
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 atualizado com mais opções de média móvel com a função de utilidade média móvel ta.ma()
. Por simplicidade, todas as opções são médias móveis de fonte única. Esta é principalmente uma utilidade interna usada por indicadores que possuem um mamode
Kwarg . Isso inclui indicadores: accbands , AMAT , AOBV , ATR , BBANDS , viés , EFI , HILO , KC , NATR , QQE , RVI e Thermo ; Os parâmetros padrão mamode
não foram alterados. No entanto, ta.ma()
também pode ser usado pelo usuário, se necessário. Para mais informações: help(ta.ma)
to_utc
, para converter o índice de dados de dados no UTC. Consulte: help(ta.to_utc)
agora como uma propriedade Pandas TA DataFrame para converter facilmente o índice DataFrame em UTC. close > sma(close, 50)
, retorna a tendência, entradas comerciais e saídas comerciais dessa tendência de torná -lo compatível com o Vectorbt, definindo asbool=True
para obter entradas e saídas de comércio booleano. Veja help(ta.tsignals)
help(ta.alma)
Conta de negociação ou fundo. Veja 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()
por razões de desempenho. Veja help(ta.td_seq)
help(ta.tos_stdevall)
help(ta.vhf)
mamode
renomeado para mode
. Veja help(ta.accbands)
.mamode
com " RMA " padrão e com as mesmas opções mamode
que o TradingView. Novo lensig
de argumentos, para que se comporte como o indicador ADX incorporado da TradingView. Veja help(ta.adx)
.drift
e mais nomes de colunas descritivos.mamode
padrão agora é " RMA " e com as mesmas opções mamode
que o TradingView. Veja help(ta.atr)
.ddoff
para controlar os graus de liberdade. Também incluiu o BB porcentagem (BBP) como a coluna final. O padrão é 0. Consulte help(ta.bbands)
.ln
para usar o logaritmo natural (true) em vez do logaritmo padrão (false). O padrão é falso. Veja help(ta.chop)
.tvmode
com o padrão True
. Quando tvmode=False
, o CKSP implementa "o novo trader técnico" com valores padrão. Veja help(ta.cksp)
.talib
usará a versão do TA Lib e se o TA LIB estiver instalado. O padrão é verdadeiro. Veja help(ta.cmo)
.strict
se a série está diminuindo continuamente ao longo do length
do período com um cálculo mais rápido. Padrão: False
. O argumento percent
também foi adicionado com o padrão nenhum. Consulte help(ta.decreasing)
.strict
se a série está aumentando continuamente ao longo length
do período com um cálculo mais rápido. Padrão: False
. O argumento percent
também foi adicionado com o padrão nenhum. Consulte help(ta.increasing)
.help(ta.kvo)
.as_strided
ou o mais recente método sliding_window_view
. Isso deve resolver problemas com o Google Colab e as atualizações de dependência atrasadas, bem como as dependências do TensorFlow, conforme discutido nas questões 285 e 329.asmode
permite como versão do MACD. O padrão é falso. Veja help(ta.macd)
.sar
do TradingView. Novo argumento af0
para inicializar o fator de aceleração. Veja help(ta.psar)
.mamode
como uma opção. O padrão é SMA para combinar com TA Lib. Veja help(ta.ppo)
.signal
com o padrão 13
e o modo Sinal mamode
com EMA padrão como argumentos. Veja help(ta.tsi)
.help(ta.vp)
.help(ta.vwma)
.anchor
. Padrão: "D" para "Daily". Consulte os TimeSeries compensam os aliases para opções adicionais. Requer que o índice de dados de dados seja um DateTimeIndex. Veja help(ta.vwap)
.help(ta.vwma)
.Z_length
para ZS_length
. Veja help(ta.zscore)
.Ta-Lib original | TradingView | Gráfico da Sierra | MQL5 | FM Labs | Código real Pro Real | Usuário 42
Sentindo -se generoso, como o pacote ou deseja vê -lo se tornar mais um pacote maduro?