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

 

Estratégia de escalpelamento com backtest padrão CandleStick em Python



Estratégia de escalpelamento com backtest padrão CandleStick em Python

Neste vídeo, discutiremos e demonstraremos uma estratégia simples de escultura que se baseia nos conceitos apresentados nos dois vídeos anteriores. Se você estiver interessado nos detalhes específicos e no código Python para esta estratégia, poderá encontrar um link na descrição do vídeo.

A estratégia que estamos usando gira em torno de três médias móveis exponenciais (EMAs): rápida, média e lenta. Ao analisar o alinhamento dessas EMAs, podemos estimar se a tendência do preço é para cima ou para baixo. Em uma tendência de alta, a EMA rápida está acima da EMA média, que está acima da EMA lenta. Por outro lado, em uma tendência de baixa, a ordem é invertida.

Para comprar posições em tendência de alta, procuramos velas que abrem abaixo e fecham acima da EMA rápida. Por outro lado, para vender posições em tendência de baixa, procuramos candles que abrem acima e fecham abaixo da EMA rápida. O vídeo fornece exemplos de velas que atendem a esses critérios para comprar posições em uma tendência de alta.

A estratégia foi previamente testada e otimizada usando uma conta alavancada com uma taxa de alavancagem de 1:100. O teste foi realizado durante um período de três anos, resultando em uma porcentagem de retorno de 445% e uma taxa de vitória de 55%. No entanto, é importante observar que a estratégia apresentou grandes períodos de rebaixamento e a curva de patrimônio não foi estável ao longo do período de três anos.

Para melhorar a estratégia, uma condição adicional é introduzida. Além das velas que cruzam a EMA rápida, agora consideramos o comprimento das mechas da vela. Se for uma tendência de alta, a vela deve ter uma cauda inferior muito curta, indicando um forte impulso ascendente. Da mesma forma, em uma tendência de baixa, a vela não deve ter cauda alta. Esta condição visa filtrar sinais com momento fraco.

Para avaliar a eficácia dessa condição adicional, a estratégia é testada usando Python. O código-fonte para o backtesting é fornecido em um arquivo Jupyter Notebook, que pode ser baixado no link na descrição do vídeo.

O backtesting é realizado usando os dados do gráfico de 15 minutos do Euro/USD de 2019 a 2022, cobrindo três anos de dados. Os dados são pré-processados removendo as velas com volume zero e redefinindo o índice do quadro de dados. As três médias móveis (50, 100 e 150) e o intervalo médio real (ATR) são adicionados ao quadro de dados.

A estratégia gera sinais com base no alinhamento das médias móveis, e o sinal total é obtido identificando castiçais que cruzam a EMA rápida na mesma direção da tendência. O vídeo demonstra como esses sinais podem ser visualizados nos gráficos.

Diferentes métodos para definir valores de stop loss e take profit são testados. Isso inclui distância fixa, distâncias relacionadas ao ATR, trailing stop loss e stop loss observado a partir do preço. Os resultados de cada método são comparados antes e depois de adicionar a terceira condição.

Quando a terceira condição é adicionada, a estratégia mostra melhorias significativas em todos os métodos testados. O método stop loss e take profit de distância fixa gera um retorno de 1805% com uma taxa de ganho de 59%. O método relacionado ao ATR atinge um retorno de 249% e uma taxa de ganho de 51%. O método trailing stop loss, que antes era perdedor, agora gera um retorno de 394% e uma taxa de ganho de 42,5%. Por fim, o stop loss observado no preço, que também estava perdendo, agora gera um retorno de 373% com uma taxa de ganho de 49%.

Além de melhores retornos, as curvas de patrimônio para todos os métodos mostram uma tendência global ascendente, indicando um desempenho mais estável e positivo em comparação com os resultados anteriores.

O vídeo enfatiza que esta estratégia não é apresentada como um sistema de negociação completo, mas sim como uma ilustração do impacto de adicionar a condição de baixo pavio.

O vídeo conclui destacando alguns pontos importantes a serem considerados ao usar essa estratégia:

  1. A estratégia demonstrada no vídeo é um exemplo simplificado e não deve ser considerada um sistema de negociação abrangente. Serve como uma ilustração de como a adição de certas condições pode melhorar o desempenho de uma estratégia.

  2. Os resultados do backtesting não são indicativos de desempenho futuro. Embora a estratégia tenha mostrado retornos melhores durante o período de teste, as condições de mercado podem mudar e os resultados anteriores podem não ser replicados no futuro.

  3. É essencial realizar testes completos e otimização antes de aplicar qualquer estratégia à negociação real. O backtesting permite avaliar o desempenho da estratégia em diferentes condições de mercado e refinar seus parâmetros para obter melhores resultados.

  4. A gestão de riscos é crucial. Definir adequadamente os níveis de stop loss e take profit é essencial para proteger seu capital e gerenciar riscos. O vídeo demonstrou diferentes métodos para definir esses níveis, mas é importante considerar sua tolerância ao risco e o tamanho da conta ao determinar os valores apropriados.

  5. A disciplina emocional é necessária para uma negociação bem-sucedida. Atenha-se à sua estratégia e evite tomar decisões impulsivas com base nas flutuações do mercado de curto prazo.

  6. Considere outros fatores e indicadores que possam complementar esta estratégia. Nenhuma estratégia única funciona perfeitamente em todas as condições de mercado, por isso é benéfico combinar vários indicadores e técnicas para uma análise mais abrangente.

  7. Monitore e avalie continuamente o desempenho de sua estratégia. À medida que as condições do mercado mudam, pode ser necessário adaptar e refinar sua abordagem para permanecer lucrativo.

Lembre-se de que negociar nos mercados financeiros acarreta riscos e é importante se educar, buscar aconselhamento profissional e praticar com cautela antes de comprometer fundos reais. O vídeo serve como um recurso educacional e cabe a você explorar e personalizar ainda mais a estratégia para se adequar ao seu estilo de negociação e tolerância ao risco.

Scalping Strategy With CandleStick Pattern Backtest In Python
Scalping Strategy With CandleStick Pattern Backtest In Python
  • 2022.03.10
  • www.youtube.com
This is a scalping Trading Strategy optimization using CandleStick Wick length pattern to confirm price momentum along with 3 moving exponential averages to ...
 

Backtest simples da estratégia de negociação EMA Scalping em Python (parte 1)


Backtest simples da estratégia de negociação EMA Scalping em Python (parte 1)

Hoje, estamos embarcando em uma jornada para testar estratégias de escalpelamento. Sei que muitos de vocês têm solicitado isso ultimamente e devo admitir que geralmente evito prazos baixos e escalpelamento porque acho que é uma abordagem arriscada e muitas vezes desgastante emocionalmente.

No entanto, quando se trata de métodos algorítmicos, as coisas podem ser mais fáceis. Com algoritmos, podemos testar nossa estratégia e ter uma compreensão clara dos resultados esperados. Portanto, esperamos que não haja surpresas desagradáveis, pois nosso modelo já foi testado. Como de costume, o código Python está disponível para download no link na descrição do vídeo, caso você esteja interessado na parte de codificação. Caso contrário, você pode simplesmente curtir o vídeo e ver que tipo de resultados nossa estratégia pode gerar.

Para começar, escolhi algo relativamente simples: usaremos três médias móveis exponenciais. Um é rápido, outro é médio e o terceiro é lento. Usaremos essas médias móveis para detectar tendências. Quando essas médias móveis estão alinhadas em uma ordem específica (rápida acima da média acima da média móvel lenta), temos uma tendência de alta. Por outro lado, a ordem oposta indica uma tendência de baixa.

Para garantir a precisão das tendências, também adicionei mais uma condição. As inclinações dessas curvas devem estar apontando na mesma direção. Em uma tendência de alta, as três curvas devem ter inclinações positivas e, em uma tendência de baixa, as inclinações devem ser negativas.

Assim que tivermos um sinal claro de tendência, procuraremos nosso ponto de entrada. Por exemplo, se estivermos procurando uma posição de compra, esperaremos uma vela que abra abaixo da média móvel rápida e feche acima dela. Esta vela indica a continuação da tendência de alta e serve como nosso ponto de entrada.

O aspecto interessante aqui é que podemos codificar tudo isso em Python e testar a estratégia. Inicialmente, não focaremos muito na otimização, pois quero manter este vídeo conciso. No entanto, em um vídeo futuro, tentaremos otimizar os parâmetros e ver se conseguimos uma combinação vencedora em nossas negociações.

Agora, vamos mergulhar no código Python e examinar os resultados do backtesting. Estaremos usando o par de moedas Euro/USD com castiçais de 15 minutos de 2019 a 2022. O quadro de dados consiste em 105.000 linhas, com cada linha representando uma vela de 15 minutos. Limpamos o quadro de dados removendo as linhas com volume zero, que correspondem aos fins de semana e dias de folga em que não há movimentos de mercado.

Em seguida, importamos o módulo pandas_ta (Pandas Technical Analysis) e calculamos as três médias móveis diferentes: EMA 50, EMA 100 e EMA 150. Também calculamos as inclinações dessas médias móveis usando uma janela contínua de 10 velas.

Nesta fase, nosso quadro de dados inclui os preços de abertura, alta, baixa e fechamento, volume, três médias móveis e suas inclinações correspondentes. Agora podemos verificar as condições para detecção de tendência. Se a média móvel rápida estiver abaixo da média móvel média, e a média móvel média estiver abaixo da média móvel lenta, e todas as três inclinações forem negativas, isso indica uma tendência de baixa. Por outro lado, se a média móvel rápida estiver acima da média móvel média, a média móvel média estiver acima da média móvel lenta e todas as três inclinações forem positivas, isso sinaliza uma tendência de alta. Essas condições são adicionadas como colunas em nosso quadro de dados.

Para visualizar os sinais em nossos gráficos, definimos uma função que plota os pontos acima ou abaixo das velas com base no sinal total. O sinal total representa os pontos de entrada, com 1 indicando um sinal de venda e 2 indicando um sinal de compra. As posições dos pontos são adicionadas como uma coluna no quadro de dados.

Traçamos os sinais e castiçais para um intervalo específico de velas.

Traçamos os sinais e castiçais para um intervalo específico de velas, permitindo-nos analisar visualmente o desempenho da estratégia. Os círculos verdes indicam sinais de compra, enquanto os círculos vermelhos indicam sinais de venda. Essa representação visual nos ajuda a entender como a estratégia teria funcionado em tempo real.

Depois de visualizar os sinais, calculamos o desempenho da estratégia. Começamos com um capital de $ 10.000 e iteramos em cada vela. Se recebermos um sinal de compra, entramos em uma posição longa com tamanho fixo. Se recebermos um sinal de venda, saímos da posição comprada e calculamos o lucro/perda com base na variação de preço desde a entrada. Nós rastreamos o lucro/perda acumulado e o número de negociações executadas.

No final do período de backtesting, calculamos o lucro/perda total, o número de negociações vencedoras, o número de negociações perdidas, a porcentagem de vitórias e o lucro/perda médio por negociação.

No vídeo, apresento os resultados do backtesting para a estratégia dada. Lembre-se de que os resultados são específicos para o período de tempo e o par de moedas escolhidos. A estratégia pode funcionar de forma diferente em outras condições de mercado ou com parâmetros diferentes.

Para resumir os resultados, o backtesting mostra que a estratégia teve um desempenho relativamente bom, gerando um retorno positivo ao longo do período de backtesting. No entanto, é importante observar que o desempenho passado não é indicativo de resultados futuros, e testes e otimizações adicionais podem ser necessários.

Simple EMA Scalping Trading Strategy Backtest In Python (Part 1)
Simple EMA Scalping Trading Strategy Backtest In Python (Part 1)
  • 2022.02.24
  • www.youtube.com
Simple scalping Trading strategy using 3 exponential moving averages backtested in python, the scalping strategy is explained and the python code also in Jup...
 

Simples EMA Scalping Trading Strategy Backtest em Python (Otimização da Parte 2)



Simples EMA Scalping Trading Strategy Backtest em Python (Otimização da Parte 2)

Olá! Bem-vindo de volta a este vídeo, que é uma continuação do nosso vídeo anterior. Neste vídeo, pretendemos otimizar a estratégia de escultura que foi apresentada anteriormente. Para recapitular brevemente, vamos nos concentrar em otimizar o parâmetro chamado 'back roll n', que determina o número de velas a serem consideradas ao calcular as inclinações das médias móveis. Variando o número de velas, como 20, 10 ou 5, podemos calcular a inclinação média para essas médias móveis. Além disso, exploraremos a possibilidade de adicionar condições nas inclinações da média móvel, como testar inclinações menores que um limite específico, como -10 a -4. Ao experimentar esses parâmetros, pretendemos criar um filtro melhor para identificar tendências.

Além disso, exploraremos diferentes abordagens de gerenciamento de negociação, incluindo valores fixos de stop loss e take profit, trailing stop loss e stop loss e take profit relacionados a ATR (Average True Range). Ao examinar essas diferentes abordagens, esperamos determinar qual estratégia de gerenciamento comercial produz os resultados mais favoráveis.

É importante observar que este sistema de escultura não foi projetado para estilos de negociação rápida, pois estamos trabalhando com um período de tempo de 15 minutos. No entanto, o mesmo sistema pode ser testado em prazos menores, embora possa ser mais desafiador devido ao aumento do ruído do mercado.

Antes de mergulharmos no código, recomendamos que você assista ao vídeo anterior, onde explicamos a estratégia em detalhes. Isso fornecerá a você uma melhor compreensão do processo de otimização que estamos prestes a apresentar.

Agora, vamos passar para o nosso arquivo Jupyter Notebook. Começamos criando um quadro de dados e limpando os dados. Em seguida, calculamos três médias móveis diferentes e calculamos as inclinações dessas médias móveis. É aqui que começamos a testar nossa estratégia.

Inicialmente, consideramos uma janela contínua de 10 velas, o que significa que calculamos a média da inclinação para as médias móveis rápidas, médias e lentas usando os dados dessas 10 velas. Executamos este código para garantir que tudo esteja funcionando corretamente, incluindo os sinais que apresentamos no vídeo anterior.

Para facilitar o teste, estabelecemos uma escala de tempo considerando que quatro candles representam uma hora, visto que estamos trabalhando com candles de 15 minutos. Com essa configuração, podemos selecionar uma fatia específica de nosso quadro de dados para testar nossa estratégia. Por exemplo, podemos escolher um período de três meses especificando o índice inicial como 37.000 e selecionando a duração correspondente.

Após carregar os dados do período selecionado, podemos executar nosso backtest. Nosso tamanho de lote inicial é definido em 30% de nosso patrimônio, e consideramos um stop loss de 40 pips e um take profit de 45 pips. Também aplicamos uma margem de 1 sobre 100, refletindo uma conta alavancada com um saldo de caixa de 100 como ponto de partida.

Executando o backtest, observamos um retorno de 107% para o período de três meses. No entanto, para garantir a robustez do nosso modelo, é crucial testar a estratégia em diferentes intervalos de tempo. Ao alterar o índice inicial, podemos selecionar vários períodos e avaliar o desempenho. Por exemplo, tentamos um índice inicial diferente de 47 e executamos o backtest, gerando um retorno de 30%.

Podemos repetir esse processo com diferentes índices iniciais para analisar o desempenho da estratégia em vários períodos. No entanto, para testar por períodos mais longos, devemos selecionar uma porção menor de nosso quadro de dados. Por exemplo, podemos escolher uma fatia de 10 ou 12 meses para avaliar o desempenho anual.

Testando a estratégia ao longo de um ano, alcançamos um retorno de 100%, dobrando efetivamente o valor inicial. Embora isso seja positivo, a frequência de negócios é relativamente baixa, com apenas 193 negócios durante o ano. A taxa de vitórias é de cerca de 44%, indicando espaço para melhorias.

Para aprimorar nossa estratégia, exploraremos diferentes valores para o parâmetro "backrolling n". Ao testar diferentes números de velas, como 20, 10 ou 5, podemos avaliar seu impacto no desempenho de nossa estratégia. Por exemplo, podemos modificar nosso código para definir o valor "back roll n" como 20 e executar novamente o backtest.

Ao testar com um "back roll n" de 20, observamos um retorno de 90% para o período de três meses, um pouco menor do que nossa configuração inicial de 10. Isso sugere que um "back roll n" menor pode ser mais eficaz em capturando tendências de curto prazo.

Em seguida, introduzimos condições adicionais com base nas inclinações das médias móveis. Por exemplo, podemos implementar um requisito de que as inclinações de todas as três médias móveis devem ser menores que -4. Isso significa que só entramos em uma negociação se todas as três inclinações forem negativas e abaixo de -4. Modificamos nosso código de acordo e executamos o backtest.

Ao implementar as condições adicionais, podemos refinar ainda mais nossa estratégia. Ao testar, observamos um retorno de 127% no período de três meses, indicando uma melhora em relação aos nossos resultados iniciais. No entanto, é importante observar que essas condições também podem reduzir a frequência das negociações, pois fornecem um filtro mais rigoroso.

Agora vamos explorar diferentes abordagens de gerenciamento comercial. Começamos implementando uma estratégia fixa de stop loss e take profit, onde definimos valores predeterminados para ambos os parâmetros. Por exemplo, podemos definir um stop loss fixo de 40 pips e um take profit de 45 pips. Depois de modificar o código e executar o backtest, analisamos os resultados.

Com a abordagem de stop loss fixo e take profit, observamos um retorno de 95% para o período de três meses. Embora isso seja um pouco menor do que nossos resultados iniciais, ele fornece um sistema de gerenciamento de risco controlado. No entanto, é importante avaliar o desempenho em períodos mais longos e diferentes condições de mercado para avaliar sua eficácia.

Em seguida, exploramos uma estratégia de trailing stop loss. Em vez de usar valores fixos, o stop loss se ajusta dinamicamente à medida que a negociação avança a nosso favor. Por exemplo, podemos definir um trailing stop loss de 30 pips, o que significa que se o preço se mover a nosso favor em 30 pips, o stop loss é movido para o ponto de equilíbrio. Modificamos nosso código de acordo e executamos novamente o backtest.

Com a abordagem trailing stop loss, alcançamos um retorno de 120% no período de três meses. Isso demonstra o potencial de ajustar dinamicamente o stop loss para proteger os lucros e maximizar os ganhos. No entanto, é essencial avaliar seu desempenho em diferentes prazos e condições de mercado para garantir sua robustez.

Finalmente, exploramos uma estratégia de gerenciamento de comércio baseada no Average True Range (ATR). O ATR fornece uma medida da volatilidade do mercado, que pode ser utilizada para definir os níveis de stop loss e take profit. Ao incorporar o ATR em nossa estratégia, podemos adaptar nossa gestão de risco às condições de mercado vigentes. Modificamos nosso código para implementar os níveis de stop loss e take profit baseados em ATR e executamos o backtest.

Ao incorporar os níveis de stop loss e take profit baseados em ATR, alcançamos um retorno de 110% no período de três meses. Isso indica a eficácia potencial de adaptar nossa gestão de risco à volatilidade do mercado.

Em conclusão, por meio do processo de otimização, exploramos diferentes parâmetros e abordagens de gerenciamento comercial para melhorar nossa estratégia de escultura. Variando o parâmetro "backrolling n", implementando condições adicionais com base nas inclinações da média móvel e explorando diferentes técnicas de gerenciamento de comércio, conseguimos melhorar o desempenho da estratégia. No entanto, é importante realizar mais testes em diferentes prazos, condições de mercado e avaliar a robustez da estratégia antes de aplicá-la na negociação ao vivo.

Simple EMA Scalping Trading Strategy Backtest In Python (Part 2 Optimization)
Simple EMA Scalping Trading Strategy Backtest In Python (Part 2 Optimization)
  • 2022.03.03
  • www.youtube.com
This is a continuation of the previous video, here we optimize our simple EMA Scalping trading strategy and we try to backtest the different parameters sets ...
 

Estratégia de negociação de alto retorno usando efeito de alavancagem



Estratégia de negociação de alto retorno usando efeito de alavancagem

Olá a todos, e bem-vindos de volta ao meu canal. Hoje, vamos nos aprofundar em um tópico que não abordamos antes: alavancagem. Devo admitir que tenho sido bastante cético sobre isso devido aos riscos inerentes envolvidos. No entanto, quero enfatizar que esses vídeos são principalmente para fins educacionais. Não estou recomendando que você adote cegamente um sistema de negociação alavancado sem entender completamente suas implicações. Então, neste vídeo, vamos pegar uma estratégia de negociação usada anteriormente que já discutimos em vídeos anteriores e explorar os efeitos da incorporação de alavancagem em nosso sistema de negociação.

Vamos começar com uma breve introdução de como funciona a alavancagem. Normalmente, a alavancagem é representada por uma proporção, como 1:10 até 1:1000, embora seja mais comum encontrar proporções entre 1:10 e 1:50. Isso significa que, se você tiver uma conta com $ 1.000, poderá comprar ou vender posições com um valor de até $ 10.000 se escolher uma taxa de alavancagem de 1:10. Ao aumentar a taxa de alavancagem, digamos para 1:50, os mesmos $ 1.000 em sua conta permitiriam que você fizesse compras no valor de até $ 50.000. As opções específicas de alavancagem disponíveis para você dependem do seu corretor, do país em que opera, dos regulamentos e de outros fatores relacionados ao seu tipo de conta.

No entanto, é importante observar que a alavancagem tem seus custos. Embora possa ampliar seus lucros potenciais, também aumenta os riscos e pode esgotar rapidamente o saldo da sua conta. Os iniciantes costumam ser alvo de traders ou corretores maiores que se aproveitam de sua falta de experiência. É crucial ter isso em mente.

Há duas regras principais a serem lembradas ao usar a alavancagem. Primeiro, a alavancagem pode ajudar a aumentar os lucros se sua estratégia tiver uma alta taxa de vitórias. Por outro lado, também aumentará suas perdas se sua estratégia tiver uma baixa taxa de vitórias. A definição de uma taxa de ganho alta ou baixa depende de vários fatores, como o tipo de estratégia, os valores de stop loss e take profit e sua abordagem de gerenciamento de dinheiro. Lembre-se sempre de que a alavancagem tem um preço. Se você pode comprar ou vender posições com 100 vezes a quantidade de dinheiro que possui, isso significa que seus fundos estão lá principalmente para cobrir perdas potenciais, que podem ocorrer rapidamente ao negociar com quantias significativamente maiores.

Neste vídeo, usaremos o Python para testar novamente a estratégia que discutimos anteriormente. Começaremos verificando os retornos usando uma conta de negociação normal e, em seguida, introduziremos uma conta alavancada em nossa estratégia de negociação algorítmica. Vamos testar essas variações, examinar os resultados e avaliar as vantagens e os riscos associados ao uso de uma conta alavancada. A vantagem de usar Python é que podemos modificar qualquer parâmetro conforme desejado e observar os efeitos em nossa porcentagem de retorno. Esse poder computacional nos permite testar e obter informações sobre as vantagens e desvantagens de usar uma conta alavancada.

O código Python que usaremos é semelhante ao código usado no vídeo anterior sobre a abordagem martingale na negociação. A célula inicial envolve carregar e limpar os dados, redefinir o índice e executar outras etapas necessárias. Não vou gastar muito tempo com o código hoje, já que o abordamos em vídeos anteriores. Utilizaremos as funções de suporte e resistência, juntamente com o reconhecimento de padrões de velas, para detectar reversões de tendência e gerar sinais de negociação. Para esta estratégia, vamos nos concentrar nos padrões de velas de rejeição que ocorrem perto dos níveis de suporte ou resistência como possíveis sinais de reversão de tendência.

High Return Trading Strategy Using Leverage Effect
High Return Trading Strategy Using Leverage Effect
  • 2022.02.17
  • www.youtube.com
Here we Backtest an Algorithmic Trading Strategy using Python on a Leverage Account. The leverage can be a variable depending on the strategy you are intend...
 

Martingale Swing Trading Strategy Backtest algorítmico em Python



Martingale Swing Trading Strategy Backtest algorítmico em Python

Hoje, vamos nos aprofundar no fascinante tópico da abordagem martingale quando combinada com uma estratégia de negociação vencedora. Se você ainda não assistiu ao nosso vídeo anterior sobre o método martingale ou outros vídeos neste canal que descrevem a estratégia que usaremos, eu recomendo que você os veja primeiro. Esses vídeos cobrem níveis de suporte e resistência, padrões de vela e fornecem uma base sólida para entender nossa abordagem neste vídeo. Vou incluir alguns links na descrição do vídeo para sua conveniência.

Além disso, para quem estiver interessado, você pode baixar o código Python que estou usando para testar essa estratégia no link fornecido na descrição. Este código permitirá que você acompanhe e explore os resultados por si mesmo.

Agora, vamos fazer uma rápida recapitulação para quem é novo em nosso canal ou acabou de se juntar a nós. O método martingale envolve dobrar o tamanho de nossa posição toda vez que fechamos uma negociação perdedora. A ideia por trás dessa abordagem é recuperar as perdas anteriores com uma grande vitória. Em um vídeo anterior, explicamos e aplicamos o método martingale a uma estratégia de negociação completamente aleatória que escolhe aleatoriamente entre posições de compra e venda.

Neste vídeo, estamos adotando uma abordagem diferente. Estaremos aplicando o método martingale a uma estratégia de negociação vencedora. Nossa estratégia envolve a identificação de níveis de suporte e resistência, bem como padrões de vela específicos que indicam possíveis reversões de tendência. Quando detectamos um padrão de vela próximo a um nível de suporte ou resistência, executamos nossa negociação de acordo. Os valores de stop-loss e take-profit são determinados com base em uma relação chamada taxa de take-profit/stop-loss.

Agora, é importante ressaltar que os resultados dessa estratégia já foram testados em vídeos anteriores e têm apresentado retornos positivos. O objetivo aqui é ver se podemos aumentar ainda mais os lucros adicionando a abordagem martingale a essa estratégia.

Ok, vamos mergulhar no código Python. Primeiro, carregamos e limpamos os dados diários EUR/USD de 2003 a 2021 para este vídeo. Em seguida, verificamos se o quadro de dados foi carregado corretamente imprimindo a parte final do quadro de dados.

A seguir, temos as funções de detecção de níveis de suporte e resistência, que usaremos em nosso programa. Se você precisar de uma explicação detalhada dessas funções, consulte nossos vídeos anteriores.

Também temos outras funções chamadas níveis "is_engulfing", "is_star" e "close_to_resistance" ou "close_to_support". Essas funções nos ajudam a identificar padrões de velas específicos e determinar se eles estão próximos dos níveis de suporte ou resistência. Esses padrões serão usados para gerar nossos sinais de negociação.

Na célula de geração de sinal, geramos nossos sinais com base nos padrões de vela que detectamos. Se encontrarmos um padrão de engolfo de baixa ou qualquer outro sinal de venda próximo a um nível de resistência, consideramos um sinal de venda e atribuímos um valor de 1 à coluna de sinal em nosso quadro de dados. Da mesma forma, se encontrarmos um padrão de engolfamento de alta ou qualquer outro sinal de compra próximo a um nível de suporte, consideramos um sinal de compra e atribuímos um valor de 2 à coluna de sinal. Em todos os outros casos, o valor do sinal é 0, indicando ausência de sinal.

Agora, podemos incluir o pacote backtesting.py para testar nossa estratégia. Definimos uma função chamada "signal" que retorna os valores de sinal para cada linha em nosso quadro de dados. Essa função é usada dentro de nossa classe personalizada chamada "CandleStrategy", que herda da classe de estratégia do módulo backtesting.py.

Em nossa classe CandleStrategy, inicializamos o tamanho de nossa posição de negociação em 0,05, o que representa 5% do patrimônio que possuímos. Negociamos com esse tamanho de posição toda vez que recebemos um sinal.

Se o valor do sinal for 1 (sinal de venda), verificamos se temos posições abertas. Se o fizermos, fechamos a posição existente e definimos o tamanho da posição como zero. Em seguida, inserimos uma nova posição curta com o tamanho da posição definido anteriormente.

Por outro lado, se o valor do sinal for 2 (sinal de compra), seguimos um processo semelhante. Verificamos se temos alguma posição aberta, fechamos se necessário e inserimos uma nova posição longa com o tamanho de posição predefinido.

Agora, definimos nossos níveis de take-profit e stop-loss. O nível de take-profit é calculado multiplicando-se o preço de entrada pelo índice take-profit/stop-loss. O nível de stop-loss é calculado multiplicando o preço de entrada pelo valor negativo da relação take-profit/stop-loss. Esses valores garantem que nosso nível de take-profit esteja mais longe do preço de entrada do que o nível de stop-loss.

Por fim, executamos nosso backtest usando a classe CandleStrategy e exibimos os resultados. Calculamos várias métricas de desempenho, como retorno total, retorno médio diário, redução máxima e o número de negociações executadas.

Agora, vamos executar o backtest e analisar os resultados.

Depois de executar o backtest, podemos observar os resultados. O retorno total, o retorno médio diário e o drawdown máximo são métricas importantes para avaliar o desempenho de nossa estratégia.

No nosso caso, o retorno total é de 256,17%, o que significa que nosso investimento inicial mais que dobrou. O retorno diário médio é de 0,04%, indicando um retorno positivo consistente durante o período testado. O rebaixamento máximo é de 10,98%, o que representa a maior queda na curva de patrimônio de um pico a um ponto baixo subsequente.

Esses resultados indicam que nossa estratégia de negociação vencedora, combinada com a abordagem martingale, foi lucrativa durante o período testado. No entanto, é importante observar que o desempenho passado não é indicativo de resultados futuros, e essa estratégia deve ser cuidadosamente avaliada e validada antes de usá-la na negociação ao vivo.

Em conclusão, a abordagem martingale, quando combinada com uma estratégia de negociação vencedora, pode aumentar potencialmente a lucratividade geral da estratégia. No entanto, é essencial considerar cuidadosamente os riscos envolvidos, como o potencial de grandes perdas e a necessidade de capital suficiente para sustentar a duplicação múltipla de tamanhos de posição.

Obrigado por se juntar a mim neste vídeo, e espero que você tenha achado informativo e útil. Se você tiver alguma dúvida ou sugestão, por favor, deixe-os nos comentários abaixo. Não se esqueça de curtir e se inscrever em nosso canal para mais estratégias de negociação e tutoriais. Feliz negociação!

Martingale Swing Trading Strategy Algorithmic Backtest In Python
Martingale Swing Trading Strategy Algorithmic Backtest In Python
  • 2022.02.10
  • www.youtube.com
Python algorithmic strategy used for backtesting the Martingale Swing Trading Strategy, a winning indicator that was presented in previous videos. Martingale...
 

Backtesting da estratégia de negociação Martingale para negociação algorítmica



Backtesting da estratégia de negociação Martingale para negociação algorítmica

Hoje, vamos discutir a abordagem Martingale, que pode ser incorporada a qualquer estratégia de negociação para compensar as negociações perdidas. Vamos testar esse método usando Python e nos aprofundar nas vantagens e riscos envolvidos na implementação do Martingale.

Imaginemos entrar em um cassino com vinte dólares no bolso e resolver jogar roleta, apostando apenas nas cores. Apostaremos um dólar no vermelho ou no preto. Se nossa primeira aposta no vermelho perder, ficaremos com 19 dólares. Na próxima rodada, dobraremos nossa aposta para dois dólares, já que tínhamos uma aposta perdida anteriormente. Se esta aposta também perder, ficaremos com 17 dólares. Continuamos dobrando nossa aposta cada vez que perdemos, visando compensar as derrotas anteriores. Eventualmente, teremos uma aposta vencedora que cobre as perdas anteriores e adiciona um pequeno lucro. Neste exemplo, acabamos com um total de 21 dólares, um pouco mais do que nosso valor inicial. Essa abordagem, dobrando a aposta após uma perda, é conhecida como abordagem Martingale.

Inicialmente, o método Martingale parece promissor e pode dar a impressão de lucros rápidos e substanciais. No entanto, é essencial entender os riscos associados a essa abordagem. Para entender melhor esse método e seus riscos, vamos testar a estratégia usando uma abordagem de Monte Carlo. Essa abordagem usa números aleatórios para gerar sinais para posições de compra ou venda, desconsiderando completamente indicadores técnicos ou previsões personalizadas. Os sinais são baseados apenas em uma distribuição aleatória uniforme.

Para implementar o backtest, escreveremos código Python. Começamos importando as bibliotecas necessárias, como pandas para manipulação de dados. Carregamos e limpamos os dados, removendo linhas com volumes de negociação zero. Depois de preparar os dados, geramos os sinais aleatórios usando a função aleatória do módulo numpy. Para cada castiçal, geramos um número aleatório entre 0 e 1. Se o número for inferior a 0,5, atribuímos um sinal de venda (1), e se for superior a 0,5, atribuímos um sinal de compra (2).

Em seguida, definimos uma classe de estratégia chamada "MyStrategy" que herda da classe de estratégia da biblioteca de backtesting. O tamanho da posição inicial é definido para 10 unidades. Também definimos uma variável, "my_size", para acompanhar o tamanho da posição, que mudará com base na abordagem Martingale. Se um sinal positivo for gerado e não houver negociações abertas, abrimos uma nova negociação com um tamanho de posição igual a "my_size" multiplicado por 2, seguindo a abordagem Martingale. Se houver negociações fechadas e a última negociação for lucrativa, redefinimos o tamanho da posição para o tamanho inicial. Isso garante que, após uma negociação vencedora, voltemos ao tamanho da posição inicial. Se um sinal de compra ou venda for gerado e não houver negociações abertas, definimos o stop loss e obtemos níveis de lucro relativos ao último preço de fechamento e executamos a negociação correspondente.

Com a estratégia definida, executamos o backtest usando um capital inicial de $ 10.000 e sem comissões. As estatísticas de backtest mostram um retorno de -4,8%, indicando uma perda. O equity plot revela que a estratégia inicialmente teve alguns ganhos, mas começou a declinar em certo ponto. A taxa de ganho é próxima a 50%, como esperado, pois os sinais são aleatórios. O número total de negociações é 100.

Para investigar mais, modificamos o stop loss e elevamos os níveis de lucro para 400 pips e executamos novamente o backtest. No entanto, esse ajuste não resolve o problema. O patrimônio líquido em declínio é resultado de não ter fundos suficientes para continuar dobrando o tamanho da posição após uma série de negociações perdidas. Para resolver isso, diminuímos o tamanho da posição inicial para 5 e definimos o stop loss e levamos os níveis de lucro para 300 pips. Depois de fazer esses ajustes, executamos novamente o backtest. A estratégia atualizada rendeu um retorno de -0,7%, indicando uma perda menor em relação à versão anterior. No entanto, o gráfico da equidade ainda mostra uma tendência de queda, embora em um ritmo mais lento. A taxa de ganhos permanece próxima a 50% e o número total de negociações ainda é de 100.

A partir desses resultados, podemos observar que, mesmo com ajustes no tamanho da posição, stop loss e níveis de lucro, a abordagem Martingale não fornece um resultado lucrativo nesse cenário de sinal aleatório. O patrimônio líquido em declínio indica o risco potencial de reduções significativas e a possibilidade de esgotar a conta de negociação.

É importante observar que este backtest foi conduzido sob a suposição de sinais aleatórios. Na negociação do mundo real, estratégias baseadas em análise técnica ou análise fundamental são geralmente empregadas para gerar sinais de negociação. Essas estratégias visam identificar padrões, tendências ou oportunidades com base em dados de mercado, em vez de depender de sinais aleatórios. Nesses casos, a abordagem Martingale pode não ser adequada ou eficaz.

Além disso, a abordagem Martingale carrega um alto nível de risco. Ele assume que as sequências de derrotas serão seguidas por sequências de vitórias, permitindo que o trader recupere as perdas. No entanto, na realidade, não há garantia de que as negociações vencedoras seguirão as negociações perdidas e sempre há a possibilidade de perdas consecutivas. Dobrar o tamanho da posição após cada perda pode levar rapidamente a perdas significativas e ao esgotamento da conta, especialmente se as condições de mercado forem desfavoráveis ou voláteis.

Embora a abordagem Martingale possa parecer atraente devido ao seu potencial de recuperação e lucros rápidos, é crucial considerar os riscos associados e avaliar cuidadosamente sua adequação à sua estratégia de negociação. A implementação de técnicas de gerenciamento de risco, como definir níveis rígidos de stop loss, manter o dimensionamento adequado da posição e diversificar sua abordagem de negociação, pode ajudar a mitigar os riscos envolvidos.

Em resumo, a abordagem Martingale pode ser uma estratégia arriscada, principalmente quando usada com sinais aleatórios. É importante testar e avaliar minuciosamente qualquer estratégia de negociação, considerando tanto os ganhos potenciais quanto os riscos associados.

Martingale Trading Strategy Backtesting For Algorithmic Trading
Martingale Trading Strategy Backtesting For Algorithmic Trading
  • 2022.02.03
  • www.youtube.com
Testing the Martingale trading strategy for algorithmic trading in python, I hope you'll enjoy it.Are you interested in algorithmic trading and looking for a...
 

Backtesting da estratégia de negociação de média móvel em Python



Backtesting da estratégia de negociação de média móvel em Python

Muitas vezes, estratégias simples são negligenciadas em favor de modelos mais complexos. No entanto, não devemos subestimar o poder da simplicidade. Hoje, apresentarei a você um método direto que pode competir com sistemas de negociação complexos e gerar retornos positivos. A vantagem de regras simples é que elas podem ser facilmente automatizadas para negociação algorítmica usando Python. Podemos testar essa estratégia em diferentes moedas para garantir sua lucratividade.

Vamos mergulhar nos detalhes dessa estratégia simples. Primeiro, consideraremos a curva de média móvel de 200 dias como nosso indicador. Se as velas estiverem acima da curva, isso indica uma tendência de alta e sugere uma posição de compra. Por outro lado, se as velas estiverem abaixo da curva de média móvel, isso sinaliza uma tendência de baixa e implica uma posição de venda.

Para determinar o ponto de entrada para uma posição de compra, examinaremos as velas anteriores. Vamos comparar o valor mais baixo da vela atual com os valores mais baixos das velas anteriores. Se o valor baixo da vela atual estiver abaixo de todos esses valores anteriores, identificamos o ponto de entrada para uma posição de compra. O mesmo conceito se aplica na direção oposta para uma posição de venda.

Embora essa estratégia possa parecer simples, ela vem com seu próprio conjunto de desafios. O primeiro parâmetro a considerar é o comprimento da média móvel. Deve ser 200, 100 ou algo diferente? Isso pode ser ajustado por meio de backtesting em um par de moedas específico para maximizar os retornos. Outro parâmetro é o número de velas anteriores a serem consideradas. Devemos analisar 7, 8, 10 ou 20 velas? Ao experimentar diferentes valores, podemos avaliar o impacto no desempenho da estratégia.

Esta parte do indicador é relativamente simples, mas para tornar a estratégia eficaz, precisamos combiná-la com uma abordagem de gestão comercial. Isso envolve a definição dos valores de stop-loss e take-profit. Temos duas opções para definir esses valores: eles podem estar relacionados ao intervalo verdadeiro médio (ATR) do mercado ou podemos usar valores fixos para todos os negócios. É importante escolher a abordagem de gerenciamento comercial apropriada para garantir retornos positivos. Além disso, um trailing stop loss pode ser empregado, o que ajusta o valor do stop loss com base no ATR.

No código, podemos experimentar várias combinações desses parâmetros para encontrar as configurações ideais e avaliar o desempenho da estratégia. Apesar de ser uma estratégia simples, há um número relativamente grande de parâmetros a serem considerados.

Para implementar essa estratégia em Python, usamos um arquivo Jupyter Notebook. Carregamos os dados, aplicamos os cálculos de média móvel exponencial (EMA) e ATR usando o módulo pandas-technical-analysis. Em seguida, definimos funções para gerar sinais EMA e sinais high-low. Traçamos os dados com a curva EMA para verificar visualmente se tudo está funcionando corretamente.

Em seguida, aplicamos o sinal EMA e as funções de sinal alto-baixo ao nosso quadro de dados, resultando em sinais para posições de compra ou venda. Ao examinar os sinais plotados, podemos validar sua precisão e eficácia na identificação de tendências e pontos de entrada.

Para testar a estratégia, definimos uma função que usa os sinais para determinar as posições de compra ou venda e define os valores de stop-loss e take-profit com base no ATR ou índices fixos. O backtesting dessa estratégia nos gráficos de quatro horas do euro-dólar americano entre 2003 e 2021 mostra um retorno positivo de cerca de 29%.

No entanto, é crucial avaliar a curva de patrimônio e entender que, embora a estratégia possa ter um bom desempenho em mercados de tendências, ela pode sofrer durante períodos de movimentos horizontais de preços. Ao experimentar diferentes configurações de stop-loss e take-profit, como usar valores fixos em vez de valores baseados em ATR, podemos analisar o desempenho da estratégia e adaptá-la de acordo.

Concluindo, mesmo as estratégias mais simples requerem consideração cuidadosa dos parâmetros e abordagens de gerenciamento de comércio para garantir sua eficácia. Embora essa estratégia dependa de um indicador básico como a média móvel, ela ainda pode gerar sinais de negociação lucrativos quando combinada com técnicas de gerenciamento de negociação apropriadas.

Depois de implementar a estratégia e realizar o backtesting, é essencial avaliar suas métricas de desempenho. Algumas métricas importantes a serem consideradas são o número total de negociações, a taxa de vitórias (porcentagem de negociações lucrativas), o lucro médio por negociação, o rebaixamento máximo (o maior declínio de pico a vale) e a relação risco-recompensa.

Ao analisar essas métricas, podemos determinar se a estratégia atende às nossas expectativas e se alinha com nossa tolerância ao risco. É importante lembrar que nenhuma estratégia é infalível e sempre haverá riscos envolvidos na negociação. Portanto, o gerenciamento adequado de riscos e a diversificação de investimentos são cruciais para o sucesso a longo prazo.

Além disso, é recomendável realizar testes de robustez na estratégia. Isso envolve avaliar seu desempenho em diferentes condições de mercado, como diferentes períodos de tempo, pares de moedas ou classes de ativos. Assim, podemos avaliar a adaptabilidade da estratégia e garantir que sua rentabilidade não se limite a cenários específicos.

Além disso, vale a pena considerar as limitações dessa estratégia simples. Ele pode não capturar todas as nuances do mercado ou ter um desempenho ideal durante períodos de alta volatilidade ou flutuações repentinas de preços. Nesses casos, sistemas de negociação mais sofisticados ou indicadores adicionais podem ser necessários para melhorar seu desempenho.

Como observação final, é essencial monitorar e adaptar continuamente a estratégia à medida que as condições do mercado evoluem. Revisar regularmente seu desempenho, fazer os ajustes necessários e manter-se informado sobre as tendências e novidades do mercado contribuirá para a viabilidade da estratégia no longo prazo.

Lembre-se, a negociação bem-sucedida é resultado de uma estratégia bem definida, execução disciplinada e aprendizado e adaptação contínuos. Boa sorte com seus empreendimentos comerciais!

Moving Average Trading Strategy Backtesting In Python
Moving Average Trading Strategy Backtesting In Python
  • 2022.01.20
  • www.youtube.com
Welcome to this video on a beginner-friendly automated trading strategy using Python. In this video, we will be discussing a simple yet effective trading str...
 

Trailing Stop Backtest para negociação algorítmica em Python



Trailing Stop Backtest para negociação algorítmica em Python

Olá a todos e bem-vindos a este vídeo. Hoje, vamos explorar vários métodos de implementação de stop-loss na negociação algorítmica. Especificamente, vamos nos concentrar em técnicas de stop-loss que podem ser facilmente incorporadas em bots de negociação, codificando-as em programas numéricos.

É importante observar que, embora existam diferentes maneiras de determinar os valores de stop loss, alguns métodos são mais complexos de incluir em um programa. Neste vídeo, vamos testar uma estratégia usando níveis de suporte e resistência, bem como padrões de velas que discutimos anteriormente em outros vídeos. No entanto, vamos variar os valores de stop loss considerando quatro casos diferentes.

O primeiro método envolve o uso de uma distância de stop-loss constante, que é predeterminada pelo trader para todas as negociações. Independentemente da posição de compra, a distância de stop loss permanece a mesma.

O segundo método é mais dinâmico e utiliza o alcance verdadeiro médio (ATR). Aqui, a distância de stop loss está diretamente relacionada ao ATR, o que significa que varia dependendo da volatilidade do mercado em uma posição específica.

O terceiro método é um stop loss de distância fixa. Esta é uma estratégia comumente usada de trailing stop-loss, onde a mesma distância é mantida para todas as posições, atuando como um trailing stop-loss.

O quarto e último método é um trailing stop-loss que considera o alcance médio verdadeiro no momento em que a posição de negociação é executada. Isso significa que a distância do stop loss é escolhida com base no ATR, que reflete a volatilidade do mercado naquele exato momento.

Em resumo, testaremos a mesma estratégia usando esses quatro métodos diferentes de definição de valores de stop loss. Vale a pena notar que a escolha dos valores de stop loss também afetará nossos valores de take profit. Na maioria das vezes, os valores de take-profit serão determinados com base na razão entre a distância de take-profit e a distância de stop-loss.

Agora, vamos mergulhar no arquivo Jupyter Notebook para ver como esses métodos são implementados. O arquivo começa importando os módulos necessários e carregando o arquivo CSV contendo os dados de preços para o par de moedas EUR/USD de 2003 a 2021. Limpamos os dados, adicionamos a coluna média real (ATR) e definimos funções para suporte e níveis de resistência, bem como padrões de velas.

Também introduzimos funções para verificar padrões envolventes, bem como a proximidade dos níveis de suporte e resistência. Essas funções nos ajudam a construir a estratégia com base nos padrões de velas próximos aos níveis de suporte ou resistência. Adicionamos uma coluna de sinal ao nosso quadro de dados, que categoriza os sinais como de baixa, alta ou sem sinal.

Para testar nossa estratégia, utilizamos o módulo de backtesting e definimos o primeiro método de stop-loss, que envolve uma distância fixa de stop-loss e take-profit definida manualmente pelo trader. Começamos com uma quantia em dinheiro de $ 10.000 e obtemos os resultados do backtest, incluindo retornos, taxa de vitórias, melhores e piores negociações e rebaixamento máximo.

Em seguida, implementamos o segundo método, que utiliza o ATR para definir as distâncias de stop-loss e take-profit. Introduzimos fatores para ajustar as distâncias com base nos valores de ATR e testamos a estratégia. Comparamos os resultados com o método anterior e observamos as diferenças nos retornos e outras métricas de desempenho.

Seguindo em frente, implementamos o terceiro método, que é um trailing stop loss com uma distância fixa. Aqui, precisamos apenas especificar a distância inicial do stop loss, e o trailing stop-loss se ajusta de acordo. Testamos a estratégia usando uma distância fixa de 500 pips para o par EUR/USD.

Por fim, analisamos os resultados e descobrimos que o método trailing stop loss com uma distância fixa gera o maior retorno de aproximadamente 131%. Enquanto os outros métodos também fornecem retornos favoráveis, o método trailing stop loss mostra melhor desempenho neste caso.

Em conclusão, testamos a mesma estratégia usando quatro métodos diferentes de stop loss, cada um oferecendo diferentes vantagens e considerações. A escolha do método de stop-loss depende, em última instância, das preferências do trader e das condições específicas do mercado.

O método de stop-loss constante fornece simplicidade e facilidade de implementação. Ele permite um gerenciamento de risco consistente em todas as negociações, independentemente das condições do mercado. No entanto, pode não se adaptar de forma eficaz aos níveis de volatilidade variáveis, levando potencialmente a distâncias de stop loss mais amplas durante períodos altamente voláteis ou distâncias de stop loss mais estreitas durante períodos de baixa volatilidade.

O método stop-loss baseado em ATR aborda a questão da adaptação à volatilidade do mercado. Ao usar o ATR como uma medida de volatilidade, a distância de stop-loss se ajusta dinamicamente às condições atuais do mercado. Isso pode ajudar a proteger contra perdas maiores durante alta volatilidade e fornecer mais espaço para respirar durante baixa volatilidade. No entanto, pode resultar em distâncias de stop-loss mais amplas durante períodos de alta volatilidade, potencialmente levando a stop-outs mais frequentes.

O método stop-loss de distância fixa combina as vantagens de um stop-loss móvel com a simplicidade de uma distância fixa. Ele permite a maximização do lucro potencial, arrastando o stop-loss atrás do preço à medida que ele se move a favor do comércio. Este método é especialmente útil em mercados de tendências, onde pode capturar ganhos maiores. No entanto, pode não proteger efetivamente contra reversões rápidas de preços, pois a distância fixa pode não fornecer proteção suficiente em situações altamente voláteis.

O método trailing stop-loss baseado em ATR combina os benefícios do método baseado em ATR e trailing stop-loss. Ao considerar o ATR no momento da entrada na negociação, ele ajusta a distância do trailing stop loss com base na volatilidade do mercado naquele momento. Isso fornece uma abordagem mais adaptável e responsiva ao gerenciamento de riscos. Ele pode ajudar a capturar tendências maiores enquanto ainda fornece proteção contra reversões repentinas. No entanto, pode resultar em distâncias de stop-loss mais amplas durante alta volatilidade, potencialmente levando a stop-outs mais frequentes.

É importante que os traders considerem cuidadosamente sua tolerância ao risco, estilo de negociação e condições de mercado ao selecionar um método de stop loss. O backtesting e a análise do desempenho de diferentes métodos podem ajudar a tomar uma decisão informada. Além disso, o gerenciamento de risco não deve depender apenas de ordens de stop loss, mas também considerar o dimensionamento da posição, a diversificação e o gerenciamento geral do portfólio.

Lembre-se de que nenhum método de stop-loss é infalível e ainda podem ocorrer perdas. O gerenciamento de risco adequado e o monitoramento contínuo das condições de mercado são essenciais para uma negociação bem-sucedida.

Trailing Stop Backtest For Algorithmic Trading in Python
Trailing Stop Backtest For Algorithmic Trading in Python
  • 2021.11.27
  • www.youtube.com
This video tests the Stop Loss VS Trailing Stop methods for Algorithmic Trading using python. Backtests are applied to one trading strategy showing the diffe...
 

Divergência RSI automatizada em Python | Negociação algorítmica



Divergência RSI automatizada em Python | Negociação algorítmica

Olá a todos e bem-vindos a bordo deste vídeo. Hoje, vamos discutir a divergência do RSI e explorar diferentes estratégias usando esse indicador na negociação. Antes de nos aprofundarmos, forneci um link de download na descrição onde você pode acessar o arquivo Jupyter Notebook usado neste vídeo.

Para começar, precisamos escrever um código que possa detectar os mínimos e máximos locais do preço e do RSI. Esses pontos são marcados como pontos roxos no gráfico. O algoritmo usado aqui identifica a máxima de uma vela como máxima se for maior que as cinco velas vizinhas de cada lado. Da mesma forma, um valor baixo de uma vela é considerado mínimo se for menor que as cinco velas nos lados esquerdo e direito. Você pode ajustar esses números com base em sua preferência para detectar pontos extremos.

Em seguida, ajustamos os mínimos e máximos detectados do preço e do RSI em inclinações lineares. Isso envolve encontrar as retas mais adequadas que passam por esses pontos. Acabamos com duas inclinações diferentes: uma para o preço (verde) e outra para o RSI (roxo). Essas inclinações representam a direção da tendência dos respectivos indicadores.

Podemos então comparar as inclinações do preço e o RSI para determinar se há uma divergência. Em uma tendência de alta, ambas as inclinações devem ser positivas, indicando baixas mais altas no preço e altas mais altas no RSI. Por outro lado, em uma tendência de baixa, ambas as inclinações devem ser negativas. Se as inclinações tiverem sinais diferentes, como uma inclinação positiva para o preço e uma inclinação negativa para o RSI, ou vice-versa, isso indica uma divergência.

Embora existam várias abordagens para analisar a divergência, exploraremos dois métodos neste vídeo. O primeiro método envolve o ajuste de múltiplos pontos extremos usando regressão polinomial, permitindo-nos considerar mais de dois pontos ao mesmo tempo. O segundo método se concentra na comparação dos dois últimos mínimos e máximos do preço e do RSI. Ao comparar as diferenças entre esses pontos, podemos identificar divergências.

Embora as estratégias que usam a divergência do RSI sejam frequentemente discutidas na negociação manual, elas geralmente se concentram na tendência entre dois pontos consecutivos. Neste vídeo, apresentamos uma abordagem numérica, utilizando ajuste de inclinação e regressão polinomial para permitir a análise de vários pontos simultaneamente.

Ao longo do vídeo, codificaremos esses métodos de divergência em Python usando o Jupyter Notebook. O arquivo Notebook fornecido importa as bibliotecas necessárias, lê os dados da vela de um arquivo CSV, calcula o RSI e define funções para detectar pontos de pivô tanto para o preço quanto para o RSI. Essas funções categorizam cada vela como pivô alto, pivô baixo, ambos ou nenhum.

Ao final do vídeo, você terá uma compreensão clara da divergência do RSI e como implementar essas estratégias em sua negociação. Se você achar este conteúdo útil, encorajo você a apoiar o canal curtindo o vídeo. Seu feedback é valioso para nós, então sinta-se à vontade para deixar comentários.

Agora, vamos mergulhar no arquivo Jupyter Notebook e ver como podemos codificar esses conceitos em Python.

Continuando de onde paramos, adicionamos a coluna "pivot" ao nosso quadro de dados, que categoriza cada vela como pivô alto, pivô baixo, ambos ou nenhum. Agora vamos para a próxima etapa do nosso código.

Em seguida, definimos uma função chamada "get_slope" que calcula a inclinação entre dois pontos dadas suas coordenadas x e y. Esta função será usada para calcular as inclinações para os dados de preço e RSI.

Depois disso, definimos outra função chamada "fit_slope" que recebe um quadro de dados e uma categoria de pivô (pivot high ou pivot low) como parâmetros. Esta função identifica os pontos de pivô com base na categoria fornecida e ajusta uma inclinação linear a esses pontos usando a função "get_slope". Ele retorna o valor da inclinação para a linha ajustada.

Agora podemos continuar a usar essas funções para calcular as inclinações para os dados de preço e RSI. Criamos duas novas colunas em nosso quadro de dados: "price_slope" e "rsi_slope". Para a coluna "price_slope", chamamos a função "fit_slope" com o quadro de dados e a categoria pivô como parâmetros. Repetimos o mesmo processo para os dados do RSI, calculando a inclinação para os pontos pivô do RSI e armazenando o resultado na coluna "rsi_slope".

Neste ponto, obtivemos as inclinações para os dados de preço e RSI. Agora podemos comparar essas inclinações para determinar a direção da tendência. Adicionamos outra coluna chamada "tendência" ao nosso quadro de dados, que indicará se a tendência é ascendente, descendente ou indefinida.

Para determinar a tendência, verificamos os sinais das colunas price_slope e rsi_slope. Se ambas as inclinações forem positivas, isso indica uma tendência de alta, então atribuímos o valor "Para cima" à coluna de tendência. Se ambas as inclinações forem negativas, isso indica uma tendência de baixa, portanto, atribuímos o valor "Para baixo" à coluna de tendência. Em todos os outros casos, onde os sinais das inclinações são diferentes ou uma das inclinações é zero, atribuímos o valor "Indefinido" à coluna de tendência.

Com as informações de tendência disponíveis, agora podemos verificar divergências entre o preço e os dados do RSI. Adicionamos outra coluna chamada "divergência" ao nosso quadro de dados, que indicará se uma divergência está presente ou não.

Para verificar divergências, comparamos os sinais das colunas price_slope e rsi_slope. Se os sinais forem opostos, indica divergência. Nesses casos, atribuímos o valor "Divergência" à coluna de divergência. Se os sinais forem iguais ou uma das inclinações for zero, não há divergência e atribuímos o valor "Sem divergência" à coluna da divergência.

Por fim, podemos imprimir o quadro de dados resultante para ver as inclinações calculadas, direções de tendência e divergências para cada vela.

No geral, o código executa as seguintes etapas:

  1. Importa as bibliotecas necessárias e define as funções auxiliares.
  2. Lê os dados da vela e calcula o RSI.
  3. Adiciona uma coluna de pivô para categorizar cada vela como pivô alto, pivô baixo, ambos ou nenhum.
  4. Calcula as inclinações para os dados de preço e RSI com base nos pontos de pivô.
  5. Determina a direção da tendência com base nos sinais das inclinações.
  6. Verifica divergências entre o preço e os dados do RSI com base nos sinais das inclinações.
  7. Imprime o quadro de dados resultante com as inclinações calculadas, direções de tendência e divergências.

Este código fornece uma maneira de analisar as divergências do RSI e sua relação com as tendências de preços, permitindo que os traders identifiquem potencialmente oportunidades de negociação.

RSI Divergence Automated In Python | Algorithmic Trading
RSI Divergence Automated In Python | Algorithmic Trading
  • 2021.11.12
  • www.youtube.com
The RSI Divergence Detection is programmed in python as an automated indicator for algorithmic trading, the Jupyter notebook file is available from the link:...
 

Canais de tendências de preços automatizados em Python



Canais de tendências de preços automatizados em Python

Olá a todos, obrigado por se juntarem a nós hoje para este vídeo. Temos o prazer de apresentar um algoritmo em Python que detecta canais de movimento de preços. Você pode baixar o código como um arquivo Jupyter Notebook no link na descrição abaixo.

Em primeiro lugar, o crédito vai para o Sr. ou Sra. M da seção de comentários por propor esta ideia. Agradecemos sua paciência, pois já se passou mais de um mês de espera. Esperamos que este vídeo não o decepcione.

Antes de começar, vamos esclarecer o propósito deste canal. Nosso objetivo é fornecer conteúdo educacional, portanto, não forneceremos simplesmente programas para você baixar e usar como uma caixa preta. Em vez disso, pretendemos explicar o processo de pensamento e como o programa foi construído. Ao final deste vídeo, você será capaz de construir seu próprio algoritmo, inspirado no apresentado aqui, e até mesmo adicionar suas próprias extensões.

No entanto, é importante reconhecer as limitações dos modelos numéricos quando aplicados a ambientes dinâmicos e não lineares como o mercado. As tendências e previsões de preços ainda são um campo de estudo aberto, com pesquisas em andamento tentando encontrar as melhores abordagens. O mercado é altamente dinâmico e as tendências e sua velocidade de mudança podem variar ao longo do tempo. Portanto, aceite as limitações e complexidades inerentes à previsão de movimentos de preços.

Agora, vamos mergulhar no algoritmo. O algoritmo que apresentamos é baseado em informações simples coletadas por meio deste canal e de nossa imaginação. A abordagem envolve nos posicionar em uma vela ou data específica e olhar para trás no tempo para um certo número de velas.

Dividimos esse tempo em partes iguais ou janelas de tempo. Em cada janela, identificamos os pontos de preço mais altos e mais baixos, conhecidos como máximos e mínimos. Repetimos esse processo para todas as janelas de tempo e ajustamos os pontos mínimos e máximos em ajustes polinomiais de primeiro grau separados, que são linhas retas.

No entanto, essas inclinações não envolvem necessariamente o preço porque passam pelos pontos. Para resolver isso, precisamos melhorar os valores de interceptação dessas inclinações. Existem diferentes maneiras de fazer isso. Uma abordagem é ajustar as interceptações para que as curvas passem por pontos específicos, como o ponto mínimo mais próximo do meio da janela de tempo ou os pontos mais altos e mais baixos encontrados dentro da janela.

Outro aspecto a considerar é a duração da janela de tempo. Dependendo da sua preferência, você pode escolher valores diferentes para o número de back candles. Por exemplo, você pode colocar 30 compassos atrás da vela atual mais ou menos 20 compassos, permitindo que o programa se mova dentro desse intervalo. O programa então avaliará diferentes inclinações e retornará o número de velas que fornecem a situação mais paralela entre as duas inclinações, indicando a detecção de um canal.

Fornecemos um arquivo Jupyter Notebook que você pode baixar no link na descrição do vídeo. O arquivo inclui o código Python para implementar o algoritmo. Para começar, importamos a biblioteca do pandas e carregamos os dados de um arquivo CSV contendo dados de velas Euro versus Dólar de 2003 a 2021.

Em seguida, procuramos os máximos e mínimos dentro da janela de tempo definida pelo número de back candles. Dividimos a janela em janelas menores e encontramos os pontos máximo e mínimo dentro de cada janela. Esses pontos são armazenados em matrizes numpy.

Depois de obter os mínimos e máximos, usamos a função numpy polyfit para ajustar os pontos às linhas polinomiais de primeiro grau. Os resultados, que incluem as inclinações e interceptações, são armazenados em variáveis.

Para visualizar as inclinações, plotamos o gráfico de velas e adicionamos as linhas correspondentes às inclinações. Nesse estágio, as inclinações podem não envolver perfeitamente o preço, mas fornecem um ajuste razoável.

Para melhorar o ajuste, podemos modificar as interceptações das inclinações. Uma abordagem é ajustar as interceptações para que passem pelos pontos mais altos e mais baixos dentro de cada janela de tempo. Calculamos os pontos mais altos e mais baixos dentro da janela de tempo e atualizamos as interceptações das inclinações de acordo.

Para determinar o canal ideal, iteramos através de diferentes valores do número de back candles e avaliamos o paralelismo entre as duas inclinações. Calculamos o ângulo entre as duas inclinações e verificamos se ele cai dentro de um limite predefinido. Em caso afirmativo, consideramos um canal válido e armazenamos o número de back candles e o ângulo para análise posterior.

Finalmente, podemos visualizar os canais detectados traçando o gráfico de velas e sobrepondo as linhas correspondentes aos canais. Isso fornece uma representação visual dos canais de movimento de preços identificados.

É importante observar que esse algoritmo é uma abordagem simplificada e pode não capturar todos os tipos de canais de movimentação de preços. O mercado é complexo e pode haver vários padrões e dinâmicas que vão além do escopo deste algoritmo. No entanto, esse algoritmo serve como ponto de partida para a detecção de canais e pode ser estendido ou personalizado com base em requisitos e preferências individuais.

Recomendamos que você baixe o arquivo Jupyter Notebook e explore o código em detalhes. Experimente diferentes parâmetros, teste-os em diferentes conjuntos de dados e veja como funciona. Sinta-se à vontade para modificar e aprimorar o algoritmo para atender às suas necessidades e ideias.

Esperamos que este vídeo e o código que o acompanha forneçam insights e inspiração para desenvolver seu próprio algoritmo de detecção de canal. Lembre-se, a chave é entender os conceitos subjacentes e adaptá-los às suas necessidades específicas e condições de mercado.

Obrigado por assistir, e estamos ansiosos para seus comentários e perguntas. Codificação feliz!

Price Trend Channels Automated In Python
Price Trend Channels Automated In Python
  • 2021.10.30
  • www.youtube.com
This video is about detecting price trend and price channels and how to automate this process in Python. The algorithm is presented and explained then the co...
Razão: