Python para negociação algorítmica - página 17

 

Indicador de interrupção do canal em Python



Indicador de interrupção do canal em Python

Oi! Hoje, vamos nos aprofundar nos exemplos de quebra de canal de preços gerados por um algoritmo. Mais tarde, mostrarei o código, que você pode baixar gratuitamente no link da descrição abaixo. Vamos começar entendendo o que é o rompimento do canal de preços.

O rompimento do canal de preços é uma ferramenta de análise técnica usada pelos traders para identificar possíveis rompimentos no preço. Funciona traçando um canal em torno da ação do preço, representando os pontos altos e baixos do preço em um período específico. Quando o preço sai desse canal, pode indicar uma possível mudança de tendência ou uma oportunidade de mercado.

A parte interessante é que podemos automatizar o processo de identificação de canais e possíveis fugas usando Python. Neste vídeo, guiarei você pelas etapas do algoritmo e fornecerei o código, permitindo que você o modifique e ajuste de acordo com suas preferências de negociação e o ativo em que o usará.

Vamos analisar os exemplos mostrados no gráfico. As estrelas pretas representam as fugas detectadas pelo algoritmo. As estrelas abaixo das velas sinalizam uma futura tendência de alta, enquanto as estrelas acima das velas indicam uma futura tendência de baixa. Essas fugas são baseadas em canais identificados pelo algoritmo.

Para explicar o algoritmo, vamos considerar o primeiro exemplo. Temos uma tendência de baixa, seguida de uma quebra abaixo de um determinado canal. A estrela abaixo da vela indica uma futura tendência de baixa. É importante notar que este canal específico é diferente daquele mostrado no gráfico. O algoritmo detecta canais com base nas velas anteriores.

Outro exemplo é uma quebra acima de um canal, sinalizando uma futura tendência de alta. Podemos observar essas fugas e sua relação com os canais detectados pelo algoritmo. O algoritmo usa três pontos de detecção: pontos de pivô, detecção de canal e detecção de rompimento.

Primeiro, ele detecta pontos de pivô, que são velas com valores altos em comparação com velas vizinhas ou valores baixos em comparação com velas vizinhas. O algoritmo verifica se há duas velas de cada lado como máximos ou mínimos do pivô. Esses pontos de pivô servem como pontos de referência para ajustar linhas para definir canais.

Em seguida, o algoritmo ajusta as linhas aos altos e baixos do pivô, criando o canal. Esta etapa identifica os limites superior e inferior do canal. O canal representa a faixa potencial de movimentação de preços.

A terceira fase é a detecção de rompimento. O algoritmo determina se ocorreu uma quebra comparando a vela atual com o canal. A condição de rompimento é definida com base na posição dos preços de abertura e fechamento em relação ao canal. Neste vídeo, consideramos fugas acima e abaixo do canal.

Em Python, você tem a flexibilidade de modificar as condições de rompimento e definir seus próprios padrões com base em suas preferências de negociação e no ativo que está negociando. O código fornecido no link servirá como ponto de partida para sua experimentação.

O algoritmo parece funcionar bem com base nos exemplos mostrados usando o período diário e os preços em euros/dólares americanos. No entanto, mais testes e análises são necessários. Agora, vamos mergulhar no código.

No arquivo Jupyter Notebook, importamos as bibliotecas necessárias: pandas, numpy, plotly e scipy.stats. Também importamos um arquivo de dados CSV contendo preços diários de velas em euros/dólares americanos de 2003 a 2023.

O código começa definindo uma função para detectar se uma vela é um ponto de pivô. Leva dois argumentos: o índice da vela a ser testada e o parâmetro da janela, que determina o número de velas vizinhas a serem consideradas. A função verifica se as máximas e mínimas da vela atual são maiores ou menores que as máximas e mínimas das velas vizinhas. Ele atribui rótulos (0, 1, 2 ou 3) com base no tipo de pivô (alto, baixo ou ambos).

Para detectar rompimentos de canal de preços em um gráfico de Candlestick, você pode seguir estas etapas:

  1. Defina o número de back candles que você deseja considerar para detecção de canal. Isso determina o comprimento dos canais.
  2. Iterar sobre as velas no gráfico.
  3. Para cada vela, colete os valores mínimo e máximo das velas posteriores anteriores.
  4. Use a regressão linear para calcular a inclinação e interceptação das linhas que conectam os pivôs baixos e pivôs altos.
  5. Verifique se os valores da inclinação não são NaN (não um número), indicando que um canal válido pode ser formado.
  6. Se um canal válido for detectado, plote as linhas do canal (linhas tracejadas) e os pontos de pivô (pontos azuis para mínimos, pontos vermelhos para máximos) no gráfico Candlestick.

A ideia geral é identificar as linhas de tendência que abrangem os movimentos de preço dentro do número especificado de back candles. Ao detectar fugas desses canais, você pode identificar movimentos de preços significativos e tomar decisões de negociação informadas.

É importante observar que o código fornecido anteriormente é um exemplo simplificado e, dependendo de seus requisitos comerciais específicos, pode ser necessário modificar e ajustar o código para atender às suas necessidades. Além disso, considere incorporar estratégias de gerenciamento de risco, outros indicadores e fatores relevantes para sua abordagem de negociação ao usar técnicas de rompimento de canal para fins comerciais reais.

Channel Break Out Indicator In Python
Channel Break Out Indicator In Python
  • 2023.02.23
  • www.youtube.com
In this video, you'll learn how to use Python to implement the Price Channel Breakout Indicator and how it can be used to identify profitable trading opportu...
 

Desafio de Estratégia de Negociação ChatGPT



Desafio de Estratégia de Negociação ChatGPT

Olá, seja bem-vindo ao nosso último experimento. Neste vídeo, mostrarei o poder da IA comparando-a com a experiência de um trader humano real. Vamos nos aprofundar na estratégia de rompimento do canal de preços e desafiar nosso modelo de IA, ChatGPT, para ver como ele funciona. Se descobrirmos algo interessante, escreverei meu próprio algoritmo no próximo vídeo e compararei os resultados de desempenho. Mais tarde, também compartilharei o código Python que usarei neste vídeo. Você pode baixá-lo no link da descrição abaixo se estiver curioso e disposto a experimentar e ampliar nossa estratégia. Então, sente-se, relaxe e vamos aproveitar isso.

Quando falamos sobre indicadores de rompimento de canal, geralmente consideramos padrões de gráfico de velas e pontos fractais. O rompimento normalmente ocorre quando o preço ultrapassa um canal e, após o rompimento, esperamos que a tendência continue na mesma direção, pelo menos por um tempo. Hoje, tentaremos fazer com que o ChatGPT gere o código para nós, especificamente para a estratégia de rompimento do canal de preços.

Antes de mergulharmos em nosso experimento com o ChatGPT, vou programar a mesma estratégia, a quebra do canal de preço, do meu jeito no próximo vídeo. Isso nos permitirá comparar os resultados e destacar o controle que temos sobre cada detalhe do nosso programa. Então, fique ligado e vamos começar.

Agora, vamos começar definindo a estratégia de quebra de preço. Essa abordagem de negociação envolve a identificação dos principais níveis de suporte e resistência usando ferramentas de análise técnica, como linhas de tendência e padrões gráficos. Preste muita atenção aos níveis que foram testados várias vezes no passado e observe a ação do preço nesses níveis. Depois de identificar os níveis-chave, podemos definir regras de entrada e saída.

Definir regras de entrada e saída é a parte mais desafiadora da estratégia. Envolve decidir em que nível de preço você entrará em uma negociação e quando sairá para obter lucros ou limitar possíveis perdas. Monitorar os movimentos de preço do ativo é crucial quando abrimos uma posição. Devemos usar ordens de stop loss para limitar possíveis perdas caso a negociação vá contra nós.

Depois de configurar as regras de entrada e gerenciar o comércio, precisamos monitorar os negócios abertos. Se o preço continuar se movendo na direção esperada, podemos considerar ajustar nossa estratégia de saída para obter lucros adicionais. Isso requer monitoramento e adaptação contínuos com base nas mudanças nas condições do mercado.

Aqui está um detalhamento da estratégia:

  1. Identifique os principais níveis de suporte e resistência: use ferramentas de análise técnica, como linhas de tendência e padrões gráficos, para identificar os níveis que foram testados várias vezes no passado. Esses níveis atuam como suporte ou resistência e formam os canais.

  2. Defina o nível de breakout: Depois de identificar os canais, determine o nível de breakout. Este é o nível de preço no qual o preço se move além dos limites do canal. Indica uma possível continuação da tendência.

  3. Definir regras de entrada e saída: determine os critérios para entrar em uma negociação quando ocorrer uma quebra. Isso pode ocorrer quando o preço fecha acima do limite superior do canal para um rompimento de alta ou abaixo do limite inferior do canal para um rompimento de baixa. Além disso, defina critérios para sair da negociação, como realizar lucros em um determinado nível-alvo ou usar um trailing stop loss para se proteger contra movimentos adversos de preços.

  4. Monitore as negociações abertas: depois que uma negociação for iniciada, monitore o movimento do preço de perto. Ajuste a estratégia de saída se o preço continuar a se mover favoravelmente. Isso pode envolver o stop loss para proteger os lucros ou definir um novo nível-alvo para capturar ganhos adicionais.

  5. Gerenciar riscos: Implemente técnicas de gerenciamento de riscos para limitar perdas potenciais. Isso pode incluir a definição de uma ordem de stop loss em um nível predeterminado para sair da negociação se o preço se mover contra a tendência esperada.

  6. Adaptação contínua: Adapte a estratégia com base nas mudanças nas condições do mercado. A estratégia de rompimento do canal de preços requer monitoramento e ajuste contínuos para capturar as melhores oportunidades de negociação.

Ao seguir essas etapas e aplicá-las ao mercado específico e ao período de tempo em que você está negociando, você pode implementar a estratégia de rompimento do canal de preços. Lembre-se de que a eficácia da estratégia pode variar dependendo de vários fatores, e é importante testar e validar a estratégia antes de aplicá-la na negociação em tempo real.

ChatGPT Trading Strategy Challenge
ChatGPT Trading Strategy Challenge
  • 2023.02.03
  • www.youtube.com
In this video, we will be exploring the use of ChatGPT in generating a profitable trading strategy. The goal of this strategy is to beat the performance of a...
 

Master FOREX Grid Trading com estratégia de cobertura automatizada usando Python


Master FOREX Grid Trading com estratégia de cobertura automatizada usando Python

No vídeo anterior, testamos o sistema de negociação em grade no mercado Forex e descobrimos que ele rendeu bons resultados com altos retornos e uma excelente relação nítida. No entanto, com base em seus comentários, percebemos que alguns detalhes precisavam ser corrigidos para realizar um backtest mais preciso. Como resultado, fizemos as alterações propostas em nosso algoritmo.

Se você ainda não assistiu ao vídeo anterior onde detalhamos a estratégia de grade, recomendo vê-lo primeiro, pois fornece uma compreensão mais profunda da estratégia. Você pode encontrar o link para esse vídeo na descrição abaixo. Além disso, você pode baixar a versão atualizada do código Python no link fornecido.

Depois de implementar as alterações de código, ainda temos um sistema potencialmente preferível, dependendo do conjunto de parâmetros usados. Observe que não gastei muito tempo otimizando os parâmetros, então você pode baixar o código e experimentar ajustá-los ao seu gosto. Isso permitirá que você ajuste o nível de risco de acordo com suas preferências. Você pode incluir mais risco à custa de diminuir a proporção acentuada ou diminuir o risco e os retornos enquanto aumenta a proporção acentuada.

Agora, vamos discutir as alterações específicas feitas na versão anterior do código. Em primeiro lugar, removemos um dos parâmetros relacionados ao índice take profit/stop loss. Percebemos que esse índice deveria ser modificado dentro da própria estratégia, então não precisa ser definido neste momento. As funções utilizadas na versão anterior permanecem as mesmas.

A primeira modificação significativa foi relacionada ao tamanho do lote. Na versão anterior, o tamanho do lote era definido para um valor abaixo de um, indicando uma porcentagem do patrimônio atual. No entanto, isso violou as regras da estratégia de grade porque estávamos negociando em ambas as direções com diferentes tamanhos de lote. Para corrigir isso, definimos o tamanho do lote como um valor fixo (50 neste exemplo).

A segunda modificação importante está relacionada à função backtest. Anteriormente, quando abríamos uma negociação e depois tentávamos abrir uma negociação oposta ou uma negociação na direção oposta, a função de backtesting fechava a negociação anterior. Isso significava que, se vendêssemos primeiro e depois comprássemos a mesma quantidade, a função de backtesting fecharia nossa posição de venda. Para permitir que o backtesting abra duas negociações independentemente em direções opostas, usamos o parâmetro de cobertura definido como verdadeiro. Isso permite posições na direção oposta no mesmo ativo ao mesmo tempo. Além disso, definimos o parâmetro de pedidos exclusivos como falso, o que significa que um pedido não cancelará o pedido anterior.

Para os valores de stop loss, nós os definimos em 1,5 vezes a distância da grade e o take profit é definido em 0,5 vezes a distância da grade. A proporção take profit/stop loss é definida como 0,5. Observe que esses são parâmetros aleatórios usados para o exemplo. Em um sistema real, é importante garantir que o stop loss seja maior do que o take profit, pois a estratégia depende da instabilidade do mercado para gerar lucros.

Usando esses parâmetros, uma conta de caixa de $ 500 e uma margem de 1 para 10, obtivemos os seguintes resultados ao longo de dois meses de dados: uma porcentagem de retorno de 13,49, uma taxa acentuada de 3,8 e uma taxa de ganho de 72%. A curva de patrimônio mostra uma inclinação crescente com algumas áreas de rebaixamento.

Para diminuir o risco e aumentar o índice acentuado, você pode considerar começar com dinheiro adicional ou ajustar a margem. Por exemplo, começando com $ 1.000 e mantendo uma margem de 1 a 10, o retorno caiu para 1,7% em dois meses, mas a taxa acentuada aumentou para 4,9. Isso indica que o risco diminuiu com essa mudança de parâmetro.

Tenha em mente que existem muitos parâmetros para trabalhar neste sistema, e encontrar o equilíbrio certo é crucial. Você pode experimentar alterar os índices de stop loss e take profit também.

É importante observar que nem todos os corretores permitem negociações de hedge, o que significa que eles podem não permitir que você abra posições opostas ao mesmo tempo no mesmo ativo. Isso pode depender do corretor e da sua localização. Alguns espectadores dos Estados Unidos mencionaram nos comentários que isso não é permitido em sua região. Portanto, é aconselhável discutir com seu corretor antes de implementar esta estratégia para garantir que ela esteja alinhada com suas políticas.

Por fim, lembre-se de que o backtesting é o primeiro passo para estudar um sistema, mas não é suficiente. É crucial testar a estratégia ao vivo no mercado usando uma conta de papel, pois isso incluirá o spread da moeda que está sendo negociada e poderá afetar os resultados esperados.

Master FOREX Grid Trading with Automated Hedging Strategy using Python
Master FOREX Grid Trading with Automated Hedging Strategy using Python
  • 2023.01.19
  • www.youtube.com
Learn how to enhance your FOREX grid trading with an Automated Hedging Strategy using Python!📈💻 In this video, we'll delve into the concept of grid trading...
 

Estratégia de cobertura para negociação em Python



Estratégia de cobertura para negociação em Python

Olá a todos, hoje vamos testar a estratégia de negociação em grade. Essa estratégia é conhecida por sua simplicidade e não requer nenhum indicador técnico para determinar a tendência. Isso significa que não precisamos adivinhar a tendência com antecedência. A negociação em grade envolve a negociação em direções longas e curtas simultaneamente, tornando-a adequada para negociação algorítmica.

Para avaliar essa estratégia, faremos um backtest usando a linguagem Python. Usaremos dados históricos de dois meses, com um período de tempo de cinco minutos. Os resultados do backtest mostram um aumento constante no patrimônio durante o período de teste, e a estratégia produz taxas de desempenho impressionantes. O índice de Sharpe, que mede retornos ajustados ao risco, pontua em torno de 5,7.

Se você estiver interessado na parte de codificação, poderá baixar o arquivo Jupyter Notebook no link fornecido na descrição abaixo. A estratégia tem um significado pessoal para o autor, pois eles se lembram de transformar uma pequena conta em uma quantia considerável usando esse sistema quando começaram a negociar como hobby.

O conceito por trás da estratégia de negociação em grade é criar uma grade de níveis de preços no gráfico. Sempre que o preço cruza essas linhas de grade, abrimos posições longas e curtas. O nível de lucro é definido na próxima linha de grade para cada posição. Conforme mostrado em um gráfico de exemplo, a estratégia envolve a abertura das posições longas e curtas iniciais, seguidas do fechamento da posição vencedora no próximo nível da grade. Em seguida, duas posições adicionais são abertas, uma longa e uma curta, toda vez que uma linha de grade é cruzada.

Um desafio dessa estratégia é gerenciar as negociações perdedoras que permanecem abertas nas bordas da grade. Algumas posições podem nunca atingir seus valores de take profit, criando uma dificuldade no sistema. Várias abordagens podem ser empregadas para lidar com essa situação. Alguns traders podem optar por fechar as negociações restantes no final do dia de negociação, enquanto outros podem calcular se estão em uma situação geral de lucro a cada poucas horas e fechar tudo para começar de novo com uma nova grade. A solução dependerá de parâmetros adicionais, como o período de tempo, o número máximo permitido de negociações paralelas e a distância da grade.

Na parte de codificação, o autor aplica um valor de stop loss para cada negociação usando o Average True Range (ATR). Esse valor de stop loss é calculado inicialmente com base na distância da grade, mas depois o ATR é usado para refiná-lo. O ATR leva em consideração a volatilidade do mercado no momento da colocação das negociações. O autor menciona que essa pode não ser a melhor abordagem e incentiva a experimentação com diferentes parâmetros para encontrar o cenário ideal para a estratégia.

A razão pela qual esse sistema pode funcionar em muitos casos é que ele tira proveito do ruído do mercado. Enquanto o mercado oscilar em torno da grade, a estratégia se beneficia das flutuações de preços e abre posições nas direções longa e curta. Espera-se que o sistema funcione melhor em time frames menores, onde há mais oscilação de preços e, portanto, lucros potencialmente maiores.

A estratégia oferece duas vantagens. Primeiro, elimina a necessidade de adivinhar a tendência, pois não segue nenhuma tendência específica. Em segundo lugar, simplifica o processo de negociação, concentrando-se no gerenciamento de negociações perdidas abertas. Existe apenas um parâmetro ajustável nesta estratégia, que é a distância da grade. No entanto, é crucial escolher o período de tempo apropriado e a distância da grade para o ativo específico que está sendo negociado.

O arquivo Jupyter Notebook fornecido demonstra a implementação da estratégia em Python. O código importa várias bibliotecas, incluindo yfinance para recuperação de dados, pandas e numpy para manipulação de dados e pandas_ta para funções de análise técnica, como calcular o ATR. Os dados para o par EUR/USD são baixados usando um período de tempo específico.

A distância da grade, taxa de take profit/stop loss e preço médio da grade são definidos como variáveis. O preço médio serve como o preço médio em torno do qual a grade é construída. A função generate_grid() é definida para gerar os níveis de grade com base no preço médio e na distância da grade. A função calcula os níveis superior e inferior da grade usando um loop.

Em seguida, a lógica da estratégia é implementada. O backtest começa inicializando variáveis como o saldo inicial, o tamanho da posição e o nível de stop loss. Um loop for é usado para percorrer cada barra nos dados históricos.

Dentro do loop, o preço atual é verificado para determinar se ele cruza algum dos níveis da grade. Se ocorrer um cruzamento, novas posições são abertas nas direções longa e curta. Os níveis de take profit e stop loss são definidos com base nos níveis da grade e na distância do stop loss.

O loop também verifica se alguma posição aberta atingiu seus níveis de take profit ou stop loss. Se uma posição atingir um dos níveis, ela é fechada e o lucro ou prejuízo correspondente é registrado.

Ao final do backtest, é plotada a curva patrimonial, mostrando o crescimento do saldo da conta ao longo do tempo. As métricas de desempenho, incluindo lucro total, número de negociações, taxa de ganhos e índice de Sharpe, são calculadas e exibidas.

É importante observar que, embora a estratégia de negociação em grade possa ter mostrado resultados promissores no backtest, é essencial avaliar e validar minuciosamente qualquer estratégia de negociação antes de implantá-la na negociação real. O backtesting ajuda a avaliar o desempenho histórico, mas não garante a lucratividade futura.

Para entender completamente os detalhes da implementação e explorar o código, recomendo que você baixe o arquivo Jupyter Notebook fornecido na descrição. O notebook contém o código completo com comentários detalhados para guiá-lo durante o processo.

Lembre-se de que negociar envolve riscos e é sempre recomendável consultar um consultor financeiro profissional antes de tomar qualquer decisão de investimento.

Hedging Strategy For Trading In Python
Hedging Strategy For Trading In Python
  • 2023.01.12
  • www.youtube.com
Welcome ! In this video we test the grid trading strategy, a simple approach that doesn't require any technical indicators. We use python to test and trade, ...
 

Como construir um bot de negociação em Python



Como construir um bot de negociação em Python

Olá, neste vídeo, mostrarei como você pode automatizar sua estratégia de negociação usando Python. Em outras palavras, vou guiá-lo através do processo de construção de seu próprio bot de negociação gratuito que pode executar negociações automaticamente em seu nome, seguindo uma estratégia específica. O código que usarei está disponível para download no link da descrição abaixo, então você pode acompanhar o vídeo e depois baixar o arquivo para usar como quiser.

O que vou demonstrar neste vídeo pode funcionar para qualquer estratégia de negociação que possa ser implementada como uma função Python. Pode ser uma excelente maneira de testar sua estratégia em dados de mercado ao vivo, em vez de simplesmente testá-la com base em dados anteriores. Se você deseja testar sua estratégia em dados futuros ou ao vivo, pode utilizar as técnicas apresentadas neste vídeo.

Vamos começar abrindo nosso arquivo Jupyter Notebook. Primeiro, vou baixar alguns dados históricos para fins de teste. É importante observar que não usaremos esses dados para negociação ao vivo; é principalmente para testar nossas funções de sinal. Para baixar os dados, estou usando o módulo YFinance e buscando os dados de câmbio de Euro para Dólar entre duas datas específicas, com um intervalo de tempo de 15 minutos.

Uma coisa a ter em mente é que, ao baixar dados para prazos baixos, como o intervalo de 15 minutos, o Yahoo Finance permite apenas o download dos últimos 60 dias de dados. Portanto, não podemos baixar mais de 60 dias de uma vez, e esses devem ser os últimos 60 dias a partir da data atual. Se você encontrar algum problema com o arquivo baixado, verifique novamente as datas de início e término especificadas.

Depois de baixar os dados, podemos testá-los verificando as linhas baixadas. Ao remover o '-1' do código, podemos visualizar todo o quadro de dados, que consiste em cerca de 3.973 linhas. O quadro de dados inclui colunas para data, hora, abertura, alta, baixa, fechamento e preços de fechamento ajustados. Neste vídeo, não usaremos dados de volume, mas sinta-se à vontade para incorporá-los à sua estratégia, se necessário.

O próximo passo é definir nosso gerador de sinal, que é uma função responsável por gerar os sinais de negociação. Esta função usa um quadro de dados como entrada porque quando estamos transmitindo dados ao vivo para nosso bot de negociação, vamos adquirir um quadro de dados e alimentá-lo nesta função. A função determinará se há um sinal presente, como um sinal de compra, sinal de venda ou nenhum padrão claro. Neste exemplo, vamos nos concentrar na detecção de padrões de velas envolventes, mas observe que esta não é uma estratégia de negociação completa. Ele serve ao propósito deste vídeo e você pode inserir sua própria estratégia de gerador de sinal dentro desta função.

A função do gerador de sinal lê os preços de abertura e fechamento da vela atual e da vela anterior usando o índice -1 e -2, respectivamente. Com base nas condições definidas na função, como a detecção de um padrão de engolfamento de baixa ou um padrão de engolfamento de alta, ele retorna um valor de sinal de 1 para venda, 2 para compra ou 0 para nenhum sinal. Para verificar se a função está funcionando corretamente, podemos testá-la usando algumas linhas de código. Ao percorrer as linhas do quadro de dados e verificar cada linha em busca de padrões abrangentes usando a função do gerador de sinal, podemos armazenar os sinais gerados em uma lista. Podemos então adicionar essa lista como uma coluna adicional no quadro de dados de teste. A impressão do quadro de dados mostra a coluna adicionada e, ao realizar uma contagem de valores, podemos ver o número de cada tipo de sinal presente no conjunto de dados.

Observe que este é um exemplo simplificado para a finalidade deste vídeo e é essencial desenvolver uma estratégia de negociação abrangente com base em suas necessidades específicas.

Agora que temos nossa função de gerador de sinal instalada, a próxima etapa é definir o bot de negociação. O bot de negociação é responsável por executar as negociações com base nos sinais gerados. Neste exemplo, criaremos um bot de negociação simples que compra quando recebe um valor de sinal de 2 (indicando um sinal de compra) e vende quando recebe um valor de sinal de 1 (indicando um sinal de venda). Novamente, este é apenas um exemplo básico e você pode modificar o bot de negociação de acordo com sua estratégia de negociação específica.

A função do bot de negociação leva o quadro de dados e os sinais gerados como entrada. Ele inicializa o saldo do portfólio e mantém um sinalizador de posição para acompanhar se temos uma posição aberta ou não. Em seguida, ele percorre cada linha do quadro de dados, verifica o valor do sinal e executa a ação de compra ou venda correspondente.

Quando um sinal de compra é recebido e não temos uma posição aberta, o bot de negociação compra o valor especificado do ativo e deduz o custo do saldo da carteira. Ele também define o sinalizador de posição para indicar que agora temos uma posição aberta. Quando um sinal de venda é recebido e temos uma posição aberta, o bot de negociação vende toda a posição e adiciona o valor da venda ao saldo da carteira. Em seguida, redefine o sinalizador de posição para indicar que não temos nenhuma posição aberta.

Para testar o bot de negociação, podemos chamar a função com o quadro de dados de teste e os sinais gerados. Também podemos especificar um saldo inicial da carteira e o valor do ativo para comprar ou vender. Depois de executar a função do bot de negociação, podemos imprimir o saldo final da carteira para ver o resultado.

Neste exemplo, não estamos considerando custos de transação, derrapagem ou outros fatores que possam afetar cenários reais de negociação. É importante levar esses fatores em consideração ao desenvolver sua própria estratégia e bot de negociação.

Finalmente, vamos discutir como você pode implementar este código para negociação ao vivo. O código que desenvolvemos até agora é adequado para backtesting e teste de sua estratégia em dados históricos. Para implementá-lo para negociação ao vivo, você precisa conectá-lo a um feed de dados em tempo real e a uma API de negociação fornecida por seu corretor ou bolsa. Isso envolve lidar com o streaming de dados e fazer ordens de negociação em tempo real com base nos sinais gerados pelo bot de negociação.

Existem várias bibliotecas e pacotes Python disponíveis que podem ajudá-lo a se conectar a feeds de dados em tempo real e APIs de negociação, como Alpaca, Binance ou Interactive Brokers API. Você precisaria pesquisar e escolher aquele que melhor atendesse às suas necessidades e se integrasse bem à sua bolsa ou corretora escolhida.

Lembre-se, a negociação ao vivo envolve dinheiro real, por isso é crucial testar completamente seu código e estratégia em um ambiente simulado antes de implantá-lo para negociação ao vivo. Comece com pequenas posições e aumente gradualmente sua exposição à medida que ganha confiança no desempenho do seu bot de negociação.

É isso para este vídeo! Espero que tenha achado útil para entender como automatizar sua estratégia de negociação usando Python. Lembre-se de baixar o código do link na descrição e modificá-lo de acordo com suas necessidades e estratégias específicas. Se você tiver alguma dúvida, sinta-se à vontade para deixá-la nos comentários abaixo. Obrigado por assistir e boas negociações!

How To Build A Trading Bot In Python
How To Build A Trading Bot In Python
  • 2022.12.08
  • www.youtube.com
This video shows how to use APIs in python to build a live trading bot. The market is scanned by the bot and the prices are downloaded for analysis. A simple...
 

Python Backtest: Estratégia de Scalping Lucrativa com VWAP, Bandas de Bollinger e Indicadores RSI



Python Backtest: Estratégia de Scalping Lucrativa com VWAP, Bandas de Bollinger e Indicadores RSI

Olá pessoal! Hoje, tenho o prazer de anunciar que temos um vencedor. Neste vídeo, compartilharei uma estratégia de scalping usando V-WAP (Volume Weighted Average Price) Bollinger Bands e RSI (Relative Strength Index) para confirmação. Antes de compartilhar essa estratégia, eu a testei completamente para garantir sua eficácia.

Em primeiro lugar, quero mencionar que esta é a primeira estratégia de escalpelamento que estamos apresentando neste canal. O escalpelamento pode ser um desafio para os algoritmos devido aos dados ruidosos em prazos mais baixos. No entanto, acredito que essa estratégia supera esses desafios.

Se você é novo neste canal, pode baixar o código Python no link da descrição. Não se esqueça de nos apoiar se inscrevendo e deixando um comentário com suas ideias para serem compartilhadas. Seu feedback é valioso.

Após três anos de backtesting, o retorno total dessa estratégia é de aproximadamente 300%. O que eu particularmente gosto nessa estratégia é a duração média da negociação, que é de cerca de 51 minutos. Isso a torna a estratégia de fechamento comercial mais rápida que demonstramos até agora. O benefício do fechamento rápido do comércio é a redução das taxas noturnas e menos estresse, pois você pode ver imediatamente os resultados de seus negócios executados.

Na seção de comentários, alguém perguntou sobre o índice de Sharpe. Incluí-o nesta estratégia e é aproximadamente 1,65. No entanto, observe que esse valor pode mudar com modificações nos parâmetros do código Python. Você pode maximizar a proporção de Sharpe experimentando diferentes valores de parâmetros.

Vamos mergulhar nos detalhes da estratégia. Estou usando o período de tempo de 5 minutos e a curva V-WAP. Para determinar a tendência, procuro que 15 velas estejam consistentemente acima ou abaixo da curva V-WAP, representada pela linha azul. Se 15 velas estiverem acima da curva V-WAP, isso indica uma tendência de alta. Se estivermos abaixo da curva V-WAP, considero uma tendência de baixa.

Para posições de entrada, eu uso Bandas de Bollinger com um comprimento de 14 e um desvio padrão de 2. Em uma tendência de alta acima da curva V-WAP, procuro posições de compra quando uma vela fecha abaixo da Banda de Bollinger inferior. Em uma tendência de baixa, abaixo da curva V-WAP, espero que uma vela feche acima da Banda de Bollinger superior como um sinal de venda.

Para confirmar os sinais, eu uso o RSI. Se o RSI estiver abaixo de 45, confirma um sinal de compra. Se o RSI estiver acima de 55, confirma um sinal de venda.

Para definir os níveis de take profit e stop loss, utilizo o ATR (Average True Range). Eu olho para as últimas sete velas, calculo o valor ATR e o multiplico por um coeficiente para determinar a distância de stop loss. O take profit é calculado multiplicando a distância do stop loss pela relação take profit-stop loss, que representa a relação risco-recompensa.

Como você pode ver, existem vários parâmetros que podem ser ajustados no código Python. Você pode modificar o comprimento ATR, o coeficiente, a proporção take profit-stop loss e outros parâmetros indicadores para ver como eles afetam o desempenho da estratégia durante o período de backtesting de três anos. Sinta-se à vontade para baixar o código e experimentar por conta própria.

No código Python, forneci todas as etapas necessárias para carregamento de dados, limpeza, adição de indicadores técnicos (V-WAP, RSI, Bollinger Bands), cálculo do sinal total e visualização dos sinais no gráfico de preços. O código também inclui a parte de backtesting, onde eu calculo o ATR, defino os níveis de stop loss e take profit e executo as negociações.

Nos resultados do backtesting, obtive um retorno de 197% e um patrimônio líquido máximo de US$ 313. Começando com um capital inicial de $ 10.000, a estratégia gerou um lucro de $ 19.700, chegando a um patrimônio final de $ 29.700.

Agora, vamos discutir as principais métricas de desempenho dessa estratégia. A taxa de ganho, que representa a porcentagem de negociações lucrativas, é de aproximadamente 56%. Isso significa que de todas as negociações realizadas, 56% resultaram em lucro. O lucro médio por negociação é de cerca de US$ 33,10, enquanto a perda média por negociação é de aproximadamente US$ 23,45.

Para avaliar o risco associado a essa estratégia, podemos observar o rebaixamento máximo, que mede o maior declínio do pico ao fundo do patrimônio líquido durante o período de backtesting. O rebaixamento máximo para esta estratégia é de aproximadamente 9%, indicando um nível moderado de risco.

É importante observar que essas métricas de desempenho são baseadas em dados históricos e o desempenho passado não garante resultados futuros. As condições do mercado podem mudar e é crucial monitorar e adaptar continuamente a estratégia à dinâmica atual do mercado.

Em resumo, esta estratégia de scalping utilizando V-WAP, Bollinger Bands e RSI mostrou resultados promissores durante o período de backtesting, com um retorno total de 300% e uma duração média de negociação de 51 minutos. No entanto, é essencial testar e validar minuciosamente qualquer estratégia antes de aplicá-la à negociação real e considerar fatores como custos de transação, derrapagem e condições de mercado.

Lembre-se, a negociação envolve riscos inerentes e é sempre recomendável educar-se, praticar o gerenciamento de riscos e considerar procurar aconselhamento profissional antes de se envolver em negociações ao vivo. Espero que você ache essa estratégia perspicaz e sinta-se à vontade para baixar o código Python fornecido na descrição para explorá-lo e personalizá-lo ao seu gosto.

Se você tiver alguma dúvida ou precisar de mais esclarecimentos, não hesite em perguntar. Feliz negociação!

Python Backtest: Profitable Scalping Strategy with VWAP, Bollinger Bands and RSI Indicators
Python Backtest: Profitable Scalping Strategy with VWAP, Bollinger Bands and RSI Indicators
  • 2022.10.13
  • www.youtube.com
This video shows a profitable scalping strategy fully backtested in python, this strategy uses the VWAP, Bollinger Bands and the RSI indicators for confirmat...
 

Heiken Ashi Candles em Python para sistemas de negociação


Heiken Ashi Candles em Python para sistemas de negociação

Hoje, vamos nos aprofundar no processo de adicionar velas Hiken Ashi em Python e explorar duas estratégias relacionadas usando essas velas. As velas Hiken Ashi são derivadas de castiçais normais normalmente usados na negociação. Cada vela Hiken Ashi é calculada usando fórmulas específicas. O preço de fechamento do Heiken Ashi é obtido pela média do preço de abertura, alta, baixa e preço de fechamento da vela atual. O preço de abertura do Heiken Ashi é obtido a partir do valor de fechamento da vela Heiken Ashi previamente calculada. O valor máximo de Heiken Ashi é o máximo entre a máxima do candelabro normal, a abertura da vela Heiken Ashi ou o valor de fechamento da vela Heiken Ashi. Da mesma forma, o valor baixo do Heiken Ashi é o mínimo entre o preço mais baixo da vela atual, o preço de abertura da vela Heiken Ashi atual ou o preço de fechamento da vela Heiken Ashi atual.

Em resumo, além dos valores altos e baixos, a vela Heiken Ashi é composta de valores médios, dando ao gráfico Hiken Ashi uma aparência mais suave em comparação com as velas normais, que alguns traders podem achar menos ruidosas. No entanto, é importante observar que as velas Heiken Ashi não são os valores reais do mercado e não devem ser usadas para negociação ou estratégias de backtesting com base nos valores reais do mercado.

O objetivo deste tutorial não é apresentar um sistema Heiken Ashi vencedor, mas sim demonstrar como construir essas velas em Python e desenvolver uma estratégia algorítmica para testar os resultados. Vamos explorar duas estratégias usando velas Heiken Ashi.

A primeira estratégia utiliza duas médias móveis: uma média móvel rápida e uma média móvel lenta. A tendência é determinada com base nas posições relativas dessas médias móveis. Se a média móvel rápida estiver acima da média móvel lenta, indica uma tendência de alta, e se a média móvel rápida estiver abaixo da média móvel lenta, sugere uma tendência de baixa. A estratégia gera um sinal de negociação quando a vela Heiken Ashi cruza a média móvel rápida na direção da tendência. Por exemplo, se a média móvel rápida estiver abaixo da média móvel lenta e uma vela Heiken Ashi cruzar de cima para baixo da média móvel rápida, ela acionará um sinal de venda. Por outro lado, em uma tendência de alta, uma vela verde Heiken Ashi cruzando de baixo para cima da média móvel rápida aciona um sinal de compra.

A segunda variação dessa estratégia adiciona uma condição adicional. Ele procura uma vela doji seguida por uma vela de cauda curta na direção da tendência. Por exemplo, em uma tendência de baixa, se uma vela doji for seguida por uma vela de cauda curta abrindo acima da média móvel rápida e fechando abaixo dela, um sinal de venda é acionado. A ausência de longas mechas ou caudas nessas velas indica um forte impulso descendente ou ascendente, dependendo da tendência que está sendo analisada.

Ambas as estratégias têm seus próprios desafios, como determinar o período de tempo ideal, definir as posições de stop loss apropriadas e projetar estratégias de saída eficazes. Esses aspectos podem impactar significativamente a lucratividade e o sucesso das estratégias.

Para implementar essas estratégias em Python, usaremos o Jupyter Notebook. Começamos importando as bibliotecas necessárias e baixando os dados de estoque para o índice Russell 1000 de 2012 a 2022. Depois de remover colunas desnecessárias, calculamos os preços de fechamento e abertura de Hiken Ashi, bem como os valores altos e baixos de Heiken Ashi, com base em as fórmulas descritas anteriormente. Adicionamos essas colunas ao nosso quadro de dados.

Em seguida, podemos adicionar indicadores técnicos adicionais, como médias móveis e o Índice de Força Relativa (RSI), usando o pacote de análise técnica do pandas. Isso nos permite visualizar as velas Heiken Ashi e os indicadores associados em um gráfico. Agora que temos nossos sinais de negociação e níveis de stop loss definidos, podemos prosseguir com o processo de backtesting. A próxima etapa é calcular os retornos de cada negociação com base nos pontos de entrada e saída.

Para calcular os retornos, primeiro precisamos determinar os preços de entrada e saída para cada negociação. Para uma posição de compra, o preço de entrada é o preço de fechamento da vela quando o sinal de compra é acionado. O preço de saída é o preço mais baixo entre a vela atual e as duas velas anteriores, conforme determinado pelo nível de stop loss.

Da mesma forma, para uma posição de venda, o preço de entrada é o preço de fechamento da vela quando o sinal de venda é acionado, e o preço de saída é o preço mais alto entre a vela atual e as duas velas anteriores.

Uma vez que tenhamos os preços de entrada e saída, podemos calcular os retornos usando a fórmula:

Retorno = (Preço de Saída - Preço de Entrada) / Preço de Entrada

Armazenaremos os retornos em uma lista chamada "trade_returns" para análise posterior. Em seguida, precisamos calcular os retornos cumulativos para acompanhar o desempenho geral da estratégia ao longo do tempo. Isso é feito multiplicando o retorno de cada negociação com o retorno acumulado anterior e adicionando 1. A fórmula para calcular o retorno cumulativo é:

Retorno Acumulado = Retorno Acumulado * (1 + Retorno)

Armazenaremos os retornos cumulativos em uma lista chamada "retornos_cumulativos". Por fim, podemos plotar os retornos cumulativos para visualizar o desempenho da estratégia durante o período de backtesting.

Depois de realizar o processo de backtesting e calcular os retornos comerciais e os retornos cumulativos, podemos analisar os resultados para avaliar o desempenho da estratégia de negociação. Uma métrica importante a considerar é a lucratividade geral da estratégia. Você pode calcular o retorno total subtraindo 1 do valor de retorno cumulativo final. Por exemplo, se o retorno acumulado for 1,2, significa um retorno de 20% sobre o investimento inicial.

Além disso, você pode querer calcular outras métricas de desempenho, como o retorno médio por negociação, o número de negociações vencedoras, o número de negociações perdidas, a porcentagem de negociações vencedoras e o rebaixamento máximo. O retorno médio por comércio pode ser obtido dividindo a soma de todos os retornos comerciais pelo número total de negócios. Essa métrica fornece uma indicação da lucratividade média de cada negociação.

Para calcular o número de negociações vencedoras e perdedoras, você pode contar o número de retornos comerciais maiores ou iguais a 0 (negociações vencedoras) e o número de retornos comerciais menores que 0 (negociações perdedoras). A porcentagem de negociações vencedoras pode ser calculada dividindo o número de negociações vencedoras pelo número total de negociações e multiplicando por 100.

A redução máxima mede o maior declínio de pico a vale nos retornos cumulativos durante o período de backtesting. Ele fornece informações sobre o risco potencial e a volatilidade negativa da estratégia. Ao analisar essas métricas de desempenho, você pode obter informações valiosas sobre a eficácia da estratégia de negociação e tomar decisões informadas sobre seu uso futuro ou possíveis modificações.

Lembre-se que o backtesting é uma simulação histórica e não garante resultados futuros. É essencial considerar vários fatores e realizar uma análise completa antes de aplicar uma estratégia de negociação em cenários do mundo real.

Heiken Ashi Candles In Python For Trading Systems
Heiken Ashi Candles In Python For Trading Systems
  • 2022.09.24
  • www.youtube.com
Heiken Ashi candlesticks are popular candlestick in technical analysis. In this video, I will show you how to use Heiken Ashi candles for trading systems in ...
 

Revolucione sua estratégia de negociação de ações com negociação automatizada em Python



Revolucione sua estratégia de negociação de ações com negociação automatizada em Python

Hoje, exploraremos uma estratégia de negociação projetada especificamente para posições longas usando o Índice de Força Relativa (RSI) e o Índice Direcional Médio (ADX). Apesar de sua simplicidade, essa estratégia tem mostrado resultados promissores. A ideia foi proposta por alguém na seção de comentários e os parâmetros pareciam familiares e convincentes. Resolvi então colocar à prova e partilhar os resultados, que se revelaram bastante satisfatórios.

A curva de patrimônio gerada pelo backtest apresentou um aumento quase consistente ao longo do período de teste, atingindo um retorno máximo de 360. Se você é novo neste canal, pode encontrar o código disponível para download na descrição. Não se esqueça de nos apoiar se inscrevendo e deixando um comentário. Gostamos de ouvir novas ideias, como a que trata este vídeo.

Agora, vamos mergulhar na estratégia em si. Usaremos o período diário e entraremos em uma posição longa quando duas condições forem atendidas: primeiro, quando o RSI de dois dias estiver abaixo de 25, indicando uma condição de sobrevenda e, segundo, quando o ADX (14) estiver acima de 20, sugerindo um mercado em alta. Saímos da posição longa quando o RSI cruza acima de 75.

Para evitar sinais falsos e impedir que as negociações permaneçam abertas por muito tempo quando o RSI luta abaixo do limite de 75, adicionei duas condições adicionais. A primeira condição envolve verificar se as velas estão sendo negociadas acima de uma curva de média móvel simples, indicando uma tendência de alta. Somente neste caso podemos assumir posições longas. A segunda condição envolve a definição de um valor de stop loss, que é considerado o preço mais baixo entre as duas últimas velas menos uma certa porcentagem. Neste backtest, defino a porcentagem de stop-loss para dois por cento. Você pode ajustar esse valor com base em suas preferências ou ao testar com dados diferentes.

Para implementar essas condições em Python, escrevi o código necessário e realizei um backtest. No código, carregamos os dados, limpamos removendo dias sem movimentos e imprimimos o quadro de dados para verificar seu conteúdo. Em seguida, calculamos a média móvel exponencial (EMA) com comprimento de 200 para detecção de tendência, bem como o RSI com comprimento de 2 e o ADX com comprimento de 14. Limpamos o quadro de dados novamente e imprimimos uma fatia para verifique as colunas que usaremos.

Em seguida, implementei uma função chamada add_ema_signal, que determina a tendência com base no número de velas negociadas acima ou abaixo da curva de média móvel. Eu defino esse número para seis, pois funcionou bem em vídeos anteriores. Então, criei uma função chamada total_signal, onde calculamos o sinal para entrar em uma posição comprada. Nós iteramos através de cada linha do quadro de dados e verificamos se o RSI está abaixo ou igual a 25, o ADX está acima de 20 e o sinal EMA é igual a dois (indicando uma tendência de alta). Quando essas condições são atendidas, armazenamos um valor de sinal de dois no quadro de dados.

Ao imprimir o quadro de dados, podemos visualizar os sinais no gráfico de barras. Os pontos roxos representam os sinais de compra. Embora eu não vá entrar em detalhes de cada linha do código, você pode encontrar explicações abrangentes em vídeos anteriores neste canal, especificamente na lista de reprodução Python for Algorithmic Trading.

Passando para a parte de backtesting, utilizei o pacote backtesting.py. Sem entrar em detalhes, defino o percentual de stop-loss para 2% e incluí condições adicionais para fechar negócios abertos por um determinado número de dias ou se o RSI exceder 75. Vale a pena notar que o código ainda contém linhas relacionadas para posições curtas, embora esta estratégia se concentre apenas em posições longas. Essas linhas podem ser modificadas ou removidas se você decidir expandir a estratégia para incluir posições vendidas.

Se o sinal for igual a dois e não houver negócios abertos, entramos no mercado com uma posição comprada usando o valor de stop loss. O tamanho da negociação é definido como 99% do patrimônio atual. O backtest começa com $ 1.000 em dinheiro e uma alavancagem de 1:5 (margem de 1/5). Nenhuma comissão foi considerada para fins de comparação com estratégias anteriores.

Os resultados do backtest indicam um retorno de US$ 200 e um patrimônio líquido máximo de US$ 3.595. A taxa de ganho é de 73% e um total de 102 negociações foram executadas durante o período de teste de dez anos. Isso se traduz em uma média de 10 negociações por ano no período diário. Traçar a curva de patrimônio mostra um aumento consistente no valor, com reduções menores durante determinados períodos.

É importante observar que não modifiquei nenhum dos parâmetros sugeridos na seção de comentários. O comprimento do RSI permanece em 2, o comprimento do ADX em 14 e o comprimento da EMA em 200. No entanto, você ainda pode ajustar esses valores e experimentar diferentes ações ou mercados para melhorar potencialmente os resultados e encontrar uma configuração mais satisfatória.

Essa estratégia oferece uma abordagem simples, mas eficaz, para posições longas. Eu encorajo você a baixar o código do link na descrição e experimentá-lo. O código é relativamente curto e amigável para iniciantes. Divirta-se explorando essa estratégia e fique atento ao nosso próximo vídeo. Negocie com segurança e até a próxima!

Revolutionize Your Stock Trading Strategy with Automated Trading in Python
Revolutionize Your Stock Trading Strategy with Automated Trading in Python
  • 2022.09.08
  • www.youtube.com
This video tests an automated trading strategy backtest for long positions on stocks, the rules are simple using RSI and the ADX indicators on stock market v...
 

Estratégia automatizada de bandas Rayner Teo Bollinger otimizada para alto retorno



Estratégia automatizada de bandas Rayner Teo Bollinger otimizada para alto retorno

Olá pessoal! Neste vídeo, temos o prazer de apresentar uma abordagem de otimização extrema que demonstra os efeitos de certos parâmetros em nosso sistema de negociação. Acreditamos que esta é a melhor otimização que conseguimos até agora. Como você pode ver, alcançamos um retorno impressionante de cerca de três mil por cento, com uma curva de patrimônio consistentemente crescente. Os detalhes das negociações também são exibidos no gráfico, e vamos explicá-los neste vídeo. Traçamos todas as negociações nas tabelas de preços e também as percorreremos. Então fique ligado!

Antes de prosseguirmos, queremos enfatizar que a maneira como alcançamos um retorno de 30.000% com essa estratégia não é a abordagem mais segura para negociações reais. Não recomendamos o uso desses parâmetros em um cenário de negociação real. No entanto, acreditamos que a estratégia em si é sólida e tem grande potencial. Se você é novo aqui, a estratégia depende da estratégia Rhino Theo Bollinger Band para mercados de tendências. Nós o testamos anteriormente em um vídeo com excelentes resultados e risco mínimo. Se você ainda não viu, pode encontrar o link para o primeiro vídeo de backtest na descrição, junto com o código Python, se necessário.

Neste vídeo, tentaremos aplicar parâmetros extremos para gerar retornos relativamente grandes. Fazemos isso principalmente pela diversão de testar e brincar com o código Python. Além disso, esperamos obter informações valiosas durante o processo e potencialmente descobrir uma configuração que possa levar a altos retornos realistas.

Agora, vamos pular para o código e ver como tudo se desenrola. A primeira célula do nosso arquivo de notebook Jupyter é dedicada ao carregamento dos dados. Estamos usando o módulo "yfinance", que é uma maneira conveniente de carregar dados históricos diários de bancos de dados. Com apenas uma linha de código, podemos carregar os dados de uma ação específica, como o índice Russell 1000 entre 2011 e 2021, por exemplo. Limpamos os dados removendo dias sem movimentos de preços, como finais de semana e feriados. Em seguida, redefinimos o índice e imprimimos o cabeçalho do quadro de dados para verificar se os dados estão formatados corretamente.

Em seguida, utilizamos o módulo "pandas_ta" (análise técnica de pandas) para calcular vários indicadores técnicos. Nesse caso, calculamos duas médias móveis: a média móvel exponencial de 200 dias (EMA) e a média móvel simples de 150 dias (SMA). Ao comparar a média móvel rápida (EMA2) com a média móvel mais lenta (EMA), podemos determinar se o mercado está em tendência de alta ou de baixa. Também calculamos o índice de força relativa de 12 dias (RSI) usando o mesmo módulo. Além disso, modificamos os parâmetros das Bandas de Bollinger definindo o comprimento para 14 (em vez de 20) e o desvio padrão para 2,0 (em vez de 2,5). Essas modificações visam tornar o sistema menos seletivo, resultando em sinais de negociação mais frequentes e um maior número de negócios durante o backtest.

Em vez de usar o sinal RDMI ou o sinal de média móvel exponencial discutido nos vídeos anteriores, empregamos o sinal de dois EMA. Isso significa que consideramos duas médias móveis, uma mais rápida e outra mais lenta. Se a média móvel rápida estiver acima da média móvel lenta, identificamos uma tendência de alta. Por outro lado, se a média móvel rápida estiver abaixo da média móvel lenta, reconhecemos uma tendência de baixa. Adicionamos esse sinal, conhecido como sinal EMA, como uma nova coluna em nosso quadro de dados.

A função para gerar os sinais de negociação é semelhante aos vídeos anteriores. Verificamos se o preço de fechamento está abaixo da Bollinger Band inferior e se o sinal EMA indica uma tendência de alta (igual a 2), o que aciona um sinal de compra.

Neste vídeo, o apresentador demonstra uma abordagem de otimização extrema para mostrar os efeitos de vários parâmetros em um sistema de negociação. O objetivo é obter altos retornos aplicando parâmetros extremos, embora seja importante observar que esses parâmetros não são recomendados para negociações reais devido aos riscos associados. No entanto, o apresentador acredita que a estratégia em si tem grande potencial se usada com cautela.

A estratégia empregada é baseada na estratégia Rhino Theo Bollinger Band para mercados de tendência. O apresentador refere-se a um vídeo anterior onde testaram esta estratégia com excelentes resultados e risco relativamente baixo. O primeiro passo no processo de otimização é carregar os dados necessários usando o módulo Y Finance. O apresentador carrega os dados do índice Russell 1000 de 2011 a 2021, cobrindo um período de 10 anos.

Depois que os dados são carregados, o apresentador os limpa removendo dias sem movimentos de preços, como finais de semana e feriados. Os dados são então preparados calculando indicadores técnicos usando o módulo pandas_ta (análise técnica de pandas). Duas médias móveis são calculadas: uma média móvel exponencial de 200 dias (EMA) e uma média móvel simples de 150 dias (SMA). Essas médias móveis ajudam a determinar a tendência: se o EMA mais rápido estiver acima do SMA mais lento, isso indica uma tendência de alta e vice-versa.

O apresentador também calcula o Índice de Força Relativa (RSI) de 12 dias usando o módulo pandas_ta. Além disso, os parâmetros de comprimento e desvio padrão das Bandas de Bollinger são modificados. Em vez de usar um comprimento de 20 e um desvio padrão de 2,5 como nos vídeos anteriores, o apresentador usa um comprimento de 14 e um desvio padrão de 2,0. Essa modificação visa tornar o sistema menos seletivo, resultando em sinais de negociação mais frequentes.

Em vez de usar os sinais RSI ou EMA como nos vídeos anteriores, o apresentador apresenta um novo sinal chamado sinal EMA. Baseia-se na relação entre as duas médias móveis: se a EMA mais rápida estiver acima da SMA mais lenta, o sinal da EMA é definido como 2, indicando uma tendência de alta. Se o EMA mais rápido estiver abaixo do SMA mais lento, o sinal EMA é definido como 1, indicando uma tendência de baixa.

A estratégia de entrada é semelhante aos vídeos anteriores. O apresentador verifica se o preço de fechamento está abaixo da Banda de Bollinger inferior e se o sinal da EMA indica uma tendência de alta (sinal da EMA = 2). Nesse caso, um sinal de compra é gerado no preço de fechamento da vela atual. Se o preço de fechamento estiver acima da Banda de Bollinger superior e o sinal EMA indicar uma tendência de baixa (sinal EMA = 1), um sinal de venda será gerado no preço de fechamento da vela atual.

Para sair das negociações, o apresentador introduz critérios adicionais. Uma negociação é fechada se estiver aberta há mais de 10 dias, pois negociações de longo prazo não são desejadas. Além disso, uma negociação é fechada se for uma negociação longa e o RSI ultrapassar 75, ou se for uma negociação curta e o RSI for inferior a 25. Se a condição do RSI por si só não for suficiente para desencadear uma saída, um stop-loss mecanismo é implementado.

O stop-loss é calculado como o valor mínimo entre a mínima atual da vela e a mínima da vela anterior, multiplicado por (1 - uma certa porcentagem). A porcentagem é determinada pelo usuário e representa a perda permitida antes de acionar o stop-loss. Por exemplo, uma porcentagem de 2 significa que o stop loss é definido 2% abaixo do ponto mais baixo entre as duas últimas velas. Além disso, um nível de take-profit é definido em duas vezes a distância do stop-loss.

O apresentador avalia a estratégia executando um backtest usando os parâmetros otimizados. Eles traçam as negociações no gráfico de preços e fornecem explicações detalhadas para cada negociação. Os resultados do backtest mostram um retorno impressionante de cerca de três mil por cento, com uma curva de patrimônio consistentemente crescente.

Por fim, o apresentador enfatiza que, embora essa abordagem de otimização extrema gere altos retornos no backtest, ela não é recomendada para negociação real devido aos riscos associados. O objetivo deste exercício é explorar os efeitos de diferentes parâmetros e obter insights sobre o comportamento da estratégia.

Automated Rayner Teo Bollinger Bands Strategy Optimized For High Return
Automated Rayner Teo Bollinger Bands Strategy Optimized For High Return
  • 2022.07.22
  • www.youtube.com
This video is a continuation of the previous 2 videos describing the Rayner Teo Bollinger Bands Strategy. Here we present an optimized version leading to hig...
 

Otimizando a estratégia de bandas de Bollinger de Rayner Teo para obter melhores resultados



Otimizando a estratégia de bandas de Bollinger de Rayner Teo para obter melhores resultados

Hoje, estamos mergulhando na otimização da estratégia Reiner Theo Bollinger Band que foi testada anteriormente em um vídeo. Se você não assistiu ao vídeo anterior, é recomendável fazê-lo antes de prosseguir com esta parte da otimização. O vídeo fornece um link na descrição para facilitar o acesso. Além disso, para os interessados no aspecto de codificação, o código Python também está disponível para download por meio de um link na descrição.

A estratégia que está sendo otimizada mostrou um potencial promissor com uma taxa de vitória de 91% e uma curva de patrimônio consistentemente crescente ao longo de um backtest de 10 anos. No entanto, uma das motivações por trás dessa otimização é o baixo número de negócios observados durante o backtest. Ao longo de 10 anos, apenas 23 negócios foram executados, uma média de cerca de dois negócios por ano. Para resolver isso, duas possíveis soluções são apresentadas. A primeira envolve a execução do programa em várias ações simultaneamente, visando cerca de 20 negócios por ano. No entanto, esta abordagem levanta preocupações sobre mercados correlacionados e outras questões relacionadas. A segunda solução envolve diminuir o prazo para aumentar o número de negociações.

A estratégia incorpora vários indicadores técnicos para gerar sinais de entrada e saída. Ele utiliza um indicador de média móvel (referido como EMA, Média Móvel Exponencial, no código) e Bandas de Bollinger para sinais de entrada, enquanto o Índice de Força Relativa (RSI) é usado para sinais de saída. O vídeo fornece mais detalhes sobre o processo de execução, que não são reiterados aqui.

Passando para o próprio programa, os dados são carregados na primeira célula, focando no período de quatro horas para análise. Dois estoques diferentes são usados para a otimização. Os dados são limpos removendo castiçais sem movimento, onde os preços altos e baixos são iguais. Indicadores técnicos como a média móvel (exponencial ou simples) e o RSI são adicionados e seus comprimentos podem ser modificados. Neste caso particular, o comprimento da média móvel é definido para 900 velas e o comprimento do RSI é definido para 12. Para gráficos diários, um EMA de 200 dias e um RSI de 2 dias são usados para sinais de saída. Os parâmetros das Bandas de Bollinger permanecem os mesmos dos gráficos diários, com um comprimento de 20 e um desvio padrão de 2,5.

O programa também inclui uma verificação para saber se as velas estão sendo negociadas acima ou abaixo da média móvel. Nesse caso, o número é definido como seis, representando seis velas consecutivas acima ou abaixo da curva de média móvel. Como estamos trabalhando com um período de quatro horas, seis vezes quatro é igual a 24 horas. Portanto, se o preço estiver sendo negociado acima ou abaixo da média móvel por 24 horas seguidas, uma tendência de alta ou baixa pode ser concluída. O parâmetro para a posição percentual da ordem no mercado é definido como zero por cento para aumentar o número de negócios executados.

A parte de visualização do programa exibe as Bandas de Bollinger, a curva de média móvel e a direção da tendência, que é determinada como uma tendência de alta. Os sinais de entrada são representados por pontos roxos no gráfico, indicando sinais de compra. O vídeo mostra alguns desses pontos de entrada, enfatizando sua eficácia em mercados da moda. Ao selecionar diferentes posições aleatórias dentro do gráfico, vários pontos de entrada podem ser examinados, permitindo a análise de sua viabilidade.

O apresentador ressalta que os parâmetros da Bollinger Band relacionados aos sinais de entrada estão funcionando bem, portanto não há necessidade de modificação neste ponto. O foco da otimização está em outras partes do algoritmo. Embora o vídeo não se aprofunde em todos os detalhes do processo de backtesting, vale a pena observar alguns parâmetros.

Nesse processo de otimização, o limite do RSI para saída é definido como 45. Esse valor de limite inferior visa capturar negociações mais curtas e frequentes, permitindo saídas mais rápidas. O apresentador menciona que a escolha do limite do RSI é subjetiva e pode ser ajustada com base nas preferências individuais e na tolerância ao risco.

Para avaliar o desempenho da estratégia, o programa calcula várias métricas, incluindo o número total de negociações, a taxa de ganho, a duração média da negociação e a curva de patrimônio. Essas métricas fornecem informações sobre a eficácia e a lucratividade da estratégia.

O processo de otimização envolve o ajuste dos parâmetros da estratégia para encontrar a combinação ideal que maximize o número de negociações, mantendo uma alta taxa de ganhos. Os parâmetros que estão sendo otimizados incluem o comprimento da média móvel, o comprimento do RSI e o limite de saída do RSI.

O vídeo demonstra como usar um loop aninhado para percorrer diferentes combinações de parâmetros e avaliar o desempenho da estratégia para cada combinação. O programa acompanha a combinação de parâmetros de melhor desempenho e exibe as métricas correspondentes e a curva de patrimônio.

Ao executar o processo de otimização, o apresentador descobre que usar um comprimento de média móvel de 700, um comprimento de RSI de 4 e um limite de saída de RSI de 45 produz os melhores resultados. Esses valores de parâmetro aumentam o número de negociações, mantendo uma alta taxa de ganho. O vídeo mostra a curva de patrimônio gerada pela estratégia otimizada, que exibe uma trajetória ascendente mais suave com negociações mais frequentes em comparação com a versão original.

O apresentador conclui destacando a importância da otimização para melhorar o desempenho das estratégias de negociação. Por meio de testes sistemáticos e ajustes de parâmetros, é possível aumentar a lucratividade e a eficiência de uma estratégia. No entanto, é crucial ter cautela e considerar as limitações e os riscos associados à otimização, como superajuste aos dados históricos.

É importante observar que os detalhes fornecidos aqui são um resumo do vídeo e, para um entendimento mais abrangente, é recomendável assistir ao vídeo original, que inclui demonstrações visuais e maiores explicações sobre o processo de otimização.

Optimizing Rayner Teo's Bollinger Bands Strategy for Better Results
Optimizing Rayner Teo's Bollinger Bands Strategy for Better Results
  • 2022.07.08
  • www.youtube.com
This is a continuation of the previous video on the Bollinger Bands Winning Trading Strategy published by Rayner Teo. The backtest optimization is done in Py...
Razão: