Como Uma Estratégia de Negociação Algorítmica Aumentou +10.891% Com Python

Backtesting de uma Estratégia Básica de Negociação de Breakdown Com Python

As estratégias tradicionais de negociação algorítmica, como o cruzamento da SMA e o breakout do limite de RSI, tornaram-se cada vez mais ineficazes devido à sua simplicidade e ao número de traders que as utilizam. Como resultado, essas estratégias geralmente falham em fornecer uma vantagem competitiva nos mercados de hoje.

Em vez de depender dessas abordagens ultrapassadas, é hora de explorar algo inovador. Neste artigo, utilizaremos Python e as APIs da Benzinga para desenvolver e testar uma nova estratégia de negociação com o objetivo de superar o mercado. Vamos lá!

Visão Geral da Estratégia de Negociação

O foco desta estratégia de negociação está nos sinais de breakout, permitindo que os traders aproveitem movimentos significativos nos preços.

Condição de Entrada

Você entrará no mercado quando a alta atual da ação exceder sua alta de 50 semanas. Essa condição permite identificar o momento de alta e aproveitar potenciais aumentos de preço.

Condição de Saída

Pelo contrário, você sairá do mercado quando a baixa atual da ação cair abaixo de sua baixa de 40 semanas. Essa estratégia de saída ajuda a proteger seu capital, garantindo que você se retire de posições perdedoras antes que novas quedas de preço ocorram.

Essa estratégia de negociação se baseia no indicador Donchian Channel para monitorar os níveis relevantes de alta de 50 semanas e baixa de 40 semanas. Como esta é uma estratégia de negociação semanal, todos os testes de retrocesso serão realizados usando intervalos de tempo semanais.

Configurando Seu Ambiente

Antes de mergulharmos na implementação da estratégia, é crucial configurar seu ambiente de codificação. Abaixo estão os pacotes necessários que você precisará para esta análise:

  • pandas – para manipulação de dados.
  • requests – para buscar dados históricos por meio de APIs.
  • pandas_ta – para cálculos de análise técnica.
  • matplotlib – para visualização de dados.
  • termcolor (opcional) – para saídas em cores no terminal.
  • math (opcional) – para operações matemáticas.

Instalando Pacotes

Certifique-se de que todos os pacotes necessários estão instalados em seu ambiente Python. Você pode facilmente fazer isso usando o comando `pip` em seu terminal:

pip install pandas requests pandas_ta matplotlib termcolor

Importando os Pacotes Necessários

Uma vez que você tenha os pacotes instalados, você pode importá-los para seu script Python. Aqui está o código:

import pandas as pd
import requests
import pandas_ta as ta
import matplotlib.pyplot as plt
from termcolor import colored as cl
import math

# Configurar parâmetros do gráfico
plt.rcParams[‘figure.figsize’] = (40, 20)
plt.style.use(‘fivethirtyeight’)

Processamento de Dados

Para nossos fins de backtesting, utilizaremos os dados da ação da Apple (AAPL) desde 1993. Para alcançar isso, acessaremos os dados históricos das ações por meio da API de Dados Históricos da Benzinga. Abaixo está o trecho de código que busca esses dados.

Função de Busca de Dados Históricos

def get_historical_data(symbol, start_date, interval):
    url = "https://api.benzinga.com/api/v2/bars"
    querystring = {
        "token": "SUA_CHAVE_API",  # Substitua pela sua chave de API
        "symbols": f"{symbol}",
        "from": f"{start_date}",
        "interval": f"{interval}"
    }
    
    hist_json = requests.get(url, params=querystring).json()
    df = pd.DataFrame(hist_json[0]['candles'])  # Extrai os dados das velas para o DataFrame
    return df

Recuperando os Dados da Ação da Apple

Agora, vamos utilizar a função que acabamos de definir para buscar os dados históricos da ação da AAPL:

aapl = get_historical_data('AAPL', '1993-01-01', '1W')
aapl.tail() # Exibe as últimas linhas do DataFrame

Explicação do Código

1. Definição da Função: A função get_historical_data leva três parâmetros: o símbolo da ação (neste caso, ‘AAPL’), uma data de início (começando em 1º de janeiro de 1993) e um intervalo (definido como ‘1W’ para dados semanais).

2. Configuração da API: Dentro da função, a URL da API e os parâmetros de consulta necessários são definidos. Uma solicitação da API é feita para buscar dados históricos de candlestick com base nos parâmetros definidos.

3. Criação do DataFrame: A resposta JSON é convertida em um DataFrame do Pandas, facilitando a análise posterior.

4. Execução da Função: Chamar essa função recupera os dados históricos da ação da Apple em uma base semanal a partir da data de início especificada, permitindo que você analise padrões e movimentos de preços de longo prazo.

0*1ldoxlnmzWj2ttfB Como Uma Estratégia de Negociação Algorítmica Aumentou +10.891% Com Python

Ótimo, agora vamos passar para o cálculo do indicador Donchian Channel para os dados históricos extraídos da Apple.

Um Guia Abrangente para o Indicador Donchian Channel

O Indicador Donchian Channel é uma ferramenta poderosa para traders que buscam identificar pontos de breakout em movimentos de preços das ações. Este indicador técnico mostra a maior alta e a menor baixa de uma ação ao longo de um período de tempo específico, fornecendo insights cruciais sobre as tendências do mercado. Neste artigo, exploraremos os aspectos essenciais do Donchian Channel, como calculá-lo usando Python e visualizar seu significado em estratégias de negociação.

O que é o Indicador Donchian Channel?

O Donchian Channel foi desenvolvido por Richard Donchian, frequentemente referido como o pai dos sistemas de seguimento de tendência. O indicador ajuda os traders a identificar níveis de breakout potenciais ao destacar pontos de preço-chave dentro de um período designado. Visualizando esses pontos, os traders podem tomar decisões informadas sobre estratégias de entrada e saída.

Componentes Principais do Donchian Channel

O Donchian Channel consiste em três componentes principais:

  1. Banda Superior (Dcu): Isso representa o maior preço da ação em um período específico, indicando níveis de resistência potenciais. Quando os preços se aproximam ou superam esse nível, sinaliza força na tendência de alta.
  2. Banda Inferior (Dcl): Isso reflete o menor preço durante o mesmo período, atuando como um potencial nível de suporte. Uma queda abaixo desta banda pode indicar uma tendência em enfraquecimento ou uma provável reversão de mercado.
  3. Banda Media (Dcm): Esta é a média das bandas superior e inferior, fornecendo uma linha de base para a análise de tendências. Serve como um ponto de referência para avaliar movimentos de preços em relação à tendência geral.

Calculando o Donchian Channel Usando Python

Para implementar o Donchian Channel em sua estratégia de negociação, você pode aproveitar a biblioteca Python pandas_ta. Abaixo está um guia passo a passo sobre como calcular o Donchian Channel:

Passo 1: Configuração e Configuração

Primeiro, certifique-se de ter as bibliotecas necessárias instaladas. Você precisará importar pandas e pandas_ta para manipulação de dados e análise técnica.

import pandas as pd
import pandas_ta as ta
import matplotlib.pyplot as plt

# Supondo que aapl seja seu DataFrame contendo dados da ação da Apple

Passo 2: Calculando o Donchian Channel

Use a função donchian do pandas_ta para calcular as bandas superior e inferior, especificando lower_length e upper_length de acordo com as necessidades de sua estratégia.

# Calcular Donchian Channel
aapl[['dcl', 'dcm', 'dcu']] = aapl.ta.donchian(lower_length=40, upper_length=50)

# Limpar e formatar os dados
aapl = aapl.dropna().drop(‘time’, axis=1).rename(columns={‘dateTime’: ‘date’})
aapl = aapl.set_index(‘date’)
aapl.index = pd.to_datetime(aapl.index)

No código, configuramos o Donchian Channel com uma baixa de 40 semanas e uma alta de 50 semanas, alinhado com as práticas comuns de negociação para estratégias de médio prazo.

Visualizando o Donchian Channel

Uma vez que você tenha calculado o Donchian Channel, é crucial visualizar os dados para tomar decisões de negociação acionáveis. Aqui está como plotar os valores calculados usando matplotlib:

# Plotando Donchian Channel
plt.figure(figsize=(12, 6))
plt.plot(aapl[-300:].close, label='CLOSE', color='blue')
plt.plot(aapl[-300:].dcl, color='black', linestyle='--', alpha=0.5, label='DCL (40-semanas Baixa)')
plt.plot(aapl[-300:].dcm, color='orange', label='DCM (Média)')
plt.plot(aapl[-300:].dcu, color='black', linestyle='--', alpha=0.5, label='DCU (50-semanas Alta)')
plt.legend()
plt.title('Canais Donchian de AAPL (50 Semanas)')
plt.xlabel('Data')
plt.ylabel('Preço')
plt.grid()
plt.show()

Interpretando o Donchian Channel

O gráfico plotado fornece uma representação visual dos preços das ações da Apple Inc. (AAPL), mostrando as bandas superior e inferior junto com a banda média. Aqui está o que observar:

  • Breakouts: Quando o preço cruza acima da banda superior (Dcu), geralmente indica uma tendência de alta, sugerindo uma oportunidade de compra. Por outro lado, cruzar abaixo da banda inferior (Dcl) pode sinalizar uma tendência de baixa, indicando um ponto de venda potencial.
  • Direção da Tendência: A posição do preço em relação à banda média (Dcm) ajuda a avaliar a tendência geral. Se o preço permanecer consistentemente acima dela, o mercado provavelmente estará em uma tendência de alta; se ficar abaixo, a implicação é uma tendência de baixa.

Benefícios do Uso do Donchian Channel em Estratégias de Negociação

  1. Simples: O Donchian Channel é fácil de interpretar, tornando-o acessível a traders de todos os níveis de experiência. Seus sinais claros simplificam a tomada de decisões.
  2. Seguir Tendência: Projetado para seguidores de tendências, o Donchian Channel ajuda traders a permanecer em negociações por mais tempo durante movimentos fortes, aumentando a rentabilidade.
  3. Gerenciamento de Risco: Os níveis de suporte e resistência fornecidos pelas bandas superior e inferior ajudam a definir ordens de stop-loss e a gerenciar riscos de forma mais eficaz.

0*XXnBbknGwPgFrRW5 Como Uma Estratégia de Negociação Algorítmica Aumentou +10.891% Com Python

Na busca por estratégias de negociação eficazes, o Indicador Donchian Channel se tornou uma ferramenta fundamental para investidores e traders. Este artigo explora os aspectos cruciais do Donchian Channel, seus componentes e a eficácia de uma estratégia de negociação de breakout apoiada por dados reais de análise. Seja você um trader experiente ou apenas começando, entender este indicador pode melhorar significativamente sua compreensão do mercado.

Testando sua Estratégia de Breakout

Um dos passos mais críticos para refinar qualquer estratégia de negociação é o backtesting. O backtesting envolve aplicar a estratégia a dados históricos para ver como ela teria performado, permitindo que traders avaliem sua eficácia antes de comprometer capital real.

Para ilustrar nosso processo, vamos analisar uma implementação simples em Python para testar uma estratégia de breakout utilizando dados da ação da Apple Inc. (AAPL).

Exemplo de Código de Backtesting

import math

def backtest_donchian_strategy(stock_data, initial_investment):
in_position = False
balance = initial_investment
for i in range(3, len(stock_data)):
# Sinal de Compra: preço atinge a banda superior (Banda Superior do Canal Donchian)
if stock_data[‘high’][i] == stock_data[‘dcu’][i] and not in_position:
shares_to_buy = math.floor(balance / stock_data.close[i])
balance -= shares_to_buy * stock_data.close[i]
in_position = True
print(f”COMPRA: {shares_to_buy} ações a ${stock_data.close[i]} em {str(stock_data.index[i])[:10]}”)

# Sinal de Venda: preço atinge a banda inferior (Banda Inferior do Canal Donchian)
elif stock_data[‘low’][i] == stock_data[‘dcl’][i] and in_position:
balance += shares_to_buy * stock_data.close[i]
in_position = False
print(f”VENDA: {shares_to_buy} ações a ${stock_data.close[i]} em {str(stock_data.index[i])[:10]}”)
if in_position:
balance += shares_to_buy * stock_data.close[i]
print(f”Fechando posição a ${stock_data.close[i]} em {str(stock_data.index[i])[:10]}”)
earnings = round(balance – initial_investment, 2)
roi = round((earnings / initial_investment) * 100, 2)
print(f”LUCRATOS: ${earnings} ; ROI: {roi}%”)
backtest_donchian_strategy(aapl_data, 100000)

Analisando os Resultados do Backtesting

Para avaliar o desempenho de nossa estratégia, executamos o código de backtesting para identificar oportunidades de negociação com base nas condições fornecidas pelo Donchian Channel. Os resultados indicaram um incrível Retorno sobre Investimento (ROI) de 8371%. Este número não apenas destaca o potencial da estratégia, mas também levanta a questão de como ele se compara ao mercado mais amplo.

Comparando com o Desempenho do ETF SPY

Para contextualizar nossas descobertas, é essencial comparar o desempenho de nossa estratégia com o do ETF SPY, um benchmark popular para o desempenho do mercado dos EUA. Ao analisar os retornos históricos do SPY, obtemos insights sobre como nossa estratégia se compara a um índice de mercado amplamente reconhecido.

Cálculo do Desempenho do SPY

spy_data = get_historical_data('SPY', '1993-01-01', '1W')
spy_return = round(((spy_data.close.iloc[-1] - spy_data.close.iloc[0]) / spy_data.close.iloc[0]) * 100)
print(f"Retorno de buy/hold do ETF SPY: {spy_return}%")

Após analisar os dados do ETF SPY, descobrimos que seu retorno de compra e manutenção média foi de aproximadamente 936% desde 1993. Embora esse retorno seja de fato impressionante, contrasta fortemente com o ROI extraordinário de nossa estratégia. Tal disparidade significativa enfatiza a eficácia da estratégia de breakout baseada no Donchian Channel.

Compartilhe

No Guia da Internet, simplificamos o que parece complicado! Compartilhamos conteúdos sobre tecnologia, finanças, criptomoedas e as tendências do momento de forma clara e objetiva. Seja para aprender sobre investimentos, explorar novas tecnologias ou descobrir curiosidades incríveis, aqui você sempre encontra informação confiável e acessível!

Publicar comentário