English Русский Español Deutsch 日本語
preview
Trailing-stop no trading

Trailing-stop no trading

MetaTrader 5Exemplos | 23 julho 2024, 09:33
194 0
Aleksej Poljakov
Aleksej Poljakov

Introdução

O principal objetivo do trailing-stop é garantir lucro com risco mínimo. O funcionamento do trailing-stop é muito simples. O stop-loss se move gradualmente seguindo o preço, se este último estiver indo a favor do trader. E permanece no lugar se o preço for na direção oposta.

O trailing-stop pode ser representado esquematicamente da seguinte forma. Suponha que o trader abriu uma posição de compra durante uma tendência de alta. À medida que o preço sobe, o stop-loss será automaticamente movido junto com o preço. E quando a tendência mudar de direção, o trader pode concretizar o lucro.

Existem muitas variações de trailing-stop. Há algumas na plataforma de trading MetaTrader.

Além disso, o trailing-stop pode ser automatizado e incluído no código dos EAs. Por exemplo, isso pode ser feito com classes de acompanhamento de posições abertas.

A praticidade do trailing-stop depende muito da volatilidade do preço e da escolha do nível de stop-loss. Para a configuração do stop-loss, podem ser utilizados vários métodos. Por exemplo, em uma tendência clara, podem ser usados os valores máximos ou mínimos do preço. Além disso, os parâmetros do trailing-stop podem ser determinados por meio de indicadores técnicos. Essa abordagem é descrita no artigo "Como criar seu próprio Trailing Stop". Neste artigo, vamos considerar a construção de um trailing-stop com base em dados estatísticos.


Trailing-stop simples

A estratégia de trading e o trailing-stop são independentes um do outro. A principal diferença entre eles é que as estratégias abrem e fecham posições. E o trailing-stop é destinado apenas ao fechamento de posições.

Primeiro, vamos considerar as limitações impostas ao stop-loss.

O limite superior do stop-loss é definido nas propriedades do símbolo, assim a diferença mínima entre o preço de fechamento da posição e o stop-loss estabelecido não pode ser menor que o desvio mínimo em pontos do preço atual de fechamento da posição.

SymbolInfoInteger(_Symbol,SYMBOL_TRADE_STOPS_LEVEL)

No entanto, o limite inferior do stop-loss para o trailing-stop deve ser calculado por nós mesmos. O primeiro requisito para o stop-loss mínimo é que ele deve estar na área de break-even. À primeira vista, é simples, isto é, o stop-loss mínimo deve ser, no mínimo, igual ao preço de abertura da posição. Certo? Errado.

Ao abrir uma posição, ao trader pode ser cobrada uma comissão. Além disso, a posição pode acumular swap durante o seu tempo de existência. Esses custos adicionais devem ser considerados ao calcular o stop-loss mínimo possível. Para isso, precisamos saber o valor de um ponto na moeda do depósito.

PointValue=SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE)*SymbolInfoDouble(_Symbol,SYMBOL_POINT)/SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE)

Agora, podemos calcular quantos pontos o preço precisa percorrer para compensar a comissão e o swap. Além disso, é necessário considerar o impacto do slippage. Durante as operações de trading, o slippage pode ocorrer tanto a favor quanto contra o trader. No entanto, vamos ser cautelosos e assumir que o slippage sempre ocorrerá contra o trader.

Suponha que PriceOpen seja o preço de abertura da posição, e Lot seja o seu volume. Então, o stop-loss mínimo pode ser calculado pela fórmula:

Os sinais superiores são usados para posições de compra (Buy), e os inferiores para posições de venda (Sell).

O stop-loss mínimo corresponde ao nível de break-even garantido da posição. Ou seja, se a posição for fechada pelo stop-loss mínimo, seu lucro total (considerando o lucro atual, o swap e a comissão) será não negativo.

Agora podemos formular as regras básicas do trailing-stop:

  • o novo stop-loss deve estar entre o nível mínimo e o máximo;
  • o novo stop-loss deve ser melhor que o anterior.

Cumprindo esses requisitos, o stop-loss pode ser atualizado. No entanto, antes da atualização, é necessário fazer uma verificação adicional de se o stop-loss antigo está fora do nível de congelamento (saiba mais consultando o artigo "Que testes deve passar o robô de negociação antes da publicação no Mercado").

Diferentes abordagens podem ser utilizadas para determinar o novo stop-loss. Eu vou usar os níveis descritos no artigo "Stop-loss e Take-profit amigáveis ao trader".

Mas farei pequenas alterações para calcular o stop-loss ideal. Como o trailing-stop deve ser ativado na barra atual, o tempo de manutenção da posição será sempre igual a 1 barra. Além disso, as estatísticas sobre o movimento do preço serão coletadas em um timeframe escolhido aleatoriamente. Essa abordagem permite ajustar a sensibilidade do trailing-stop.

A seguir, algumas palavras sobre o take-profit. Aqui, podem existir diferentes opções.

Suponha que o trader utilize uma estratégia de trading com um take-profit definido. Então, o take-profit pode permanecer fixo, e o trailing-stop modifica apenas o stop-loss. Nesse caso, o trailing-stop leva a posição para o break-even.

Se a estratégia de trading não prever a colocação de um take-profit, ou houver a possibilidade de usar um take-profit móvel, o trailing-stop pode monitorar os níveis de stop-loss e take-profit. Nesse caso, a rentabilidade do trading pode mudar, pois algumas posições podem ser fechadas a preços mais vantajosos.

Além disso, há a possibilidade de usar o trailing-stop no modo de tick. Nesse caso, a colocação do take-profit não faz sentido, numa vez que o preço nunca alcançará o take-profit. E a única opção possível de fechamento da posição é apenas usando stop-loss.

Vamos verificar como funciona um trailing-stop simples com e sem take-profit. Para isso, vamos introduzir uma condição adicional, em particular a definição e modificação do take-profit só se torna possível depois que o trailing-stop mover o stop-loss para a área de break-even.

Eu vou usar o símbolo EURUSD, timeframe H1. O período de teste será de 1 de janeiro a 31 de dezembro de 2023. O timeframe do trailing-stop é M1. A direção e o volume das posições são determinados aleatoriamente. O stop-loss e o take-profit das posições não são definidos.

O gráfico de variação do saldo é o seguinte.


Parte das posições foi fechada forçadamente ao final do teste, esta é uma desvantagem da estratégia utilizada. Mas, o gráfico dá uma ideia de como o trailing-stop pode funcionar. Vamos ver os resultados dos testes.

PERIOD_M1 Total Net Profit Gross Profit Gross Loss
UseTakeProfit=false 4 758,48 10 689,84 -5 931,36
UseTakeProfit=true 5 483,94 11 297,68 -5 813,74

Como podemos ver, o uso do take-profit pode influenciar a rentabilidade do trading. Agora, vamos testar nas mesmas condições, mas com o timeframe do trailing-stop definido em M15.

PERIOD_M15 Total Net Profit Gross Profit Gross Loss
UseTakeProfit=false 16 371,11 33 435,31 -17 064,20
UseTakeProfit=true 17 038,63 34 042,13 -17 003,50

A mudança no timeframe teve um impacto significativo nos resultados dos testes. Isso está relacionado com a alteração dos níveis ótimos de stop-loss e take-profit. Assim, podemos concluir que timeframes menores de trailing-stop são adequados para scalping, enquanto os maiores são melhores para estratégias de tendência.


Expectativa moral e trailing-stop

Expectativa moral é uma avaliação de risco introduzida pela primeira vez por Daniel Bernoulli em 1732. A expectativa moral permite avaliar a utilidade de um jogo. Ela considera o capital do jogador, os possíveis ganhos e perdas, bem como suas probabilidades.

Vamos olhar para o processo de trading de uma maneira diferente. Imagine que cada posição é um jogador separado. Então, a posição tem capital, isto é, o lucro total da posição. Este capital pode aumentar se a posição for fechada pelo take-profit. Ou diminuir se a posição for fechada pelo stop-loss.

Suponha que ProfitPoint seja o lucro da posição em pontos, e p seja a probabilidade de que a posição será fechada pelo take-profit. Então, a expectativa moral da posição pode ser calculada assim:

É claro que o trader deve escolher um stop-loss e take-profit onde a expectativa moral seja máxima. Vamos considerar as particularidades de acompanhar uma posição com base na expectativa moral.

O stop-loss deve ser estritamente menor que o lucro. Somente neste caso a expectativa moral pode ser positiva. Mas, esta condição não é suficiente. Suponha que encontramos o stop-loss e take-profit ótimos. Esses níveis são ideais para um mercado perfeito. O mercado real pode trazer surpresas.

Suponha que o trailing-stop definiu o stop-loss ótimo, mas devido ao slippage a posição pode ser fechada a um preço pior. Nesse caso, o stop-loss real pode ser maior que o lucro da posição. Isso não pode ser permitido. Portanto, há uma restrição no stop-loss:

O valor do take-profit é utilizado ao calcular a expectativa moral. Mas seu uso não é obrigatório. Neste caso, as particularidades da estratégia de trading são mais importantes.

Esses são os resultados do trailing-stop baseado na expectativa moral.

PERIOD_M1 Total Net Profit Gross Profit Gross Loss
UseTakeProfit=false 4 482,35 8 175,37 -3 693,02
UseTakeProfit=true 4 747,94 8 434,11 -3 686,17

Os resultados foram um pouco piores do que os do trailing-stop simples. Isso se deve ao fato de que, ao acompanhar as posições mediantes a expectativa moral, a posição é movida para break-even mais cedo do que com o trailing-stop simples. Assim, esse trailing-stop é mais adequado para estratégias de scalping.

Outro grande inconveniente é a quantidade de operações necessárias. Os cálculos podem ser otimizados. Mas, mesmo assim, o timeframe do trailing-stop baseado na expectativa moral deve ser pequeno.


Trailing-stop para várias posições

Até agora, aplicamos o trailing-stop a cada posição individualmente. Mas seria possível aplicá-lo a várias posições ao mesmo tempo? Vamos considerar essa possibilidade. Suponhamos que as posições possam ser de diferentes tipos e volumes simultaneamente.

Primeiro, precisamos determinar qual tipo de posição tem vantagem. Para isso, encontraremos a soma dos volumes das posições Buy e subtrairemos dela a soma dos volumes das posições Sell.

O resultado indicará qual tipo de posição é mais forte. Um número positivo indica que as posições Buy são mais fortes, enquanto um número negativo indica que as posições Sell são mais fortes. Se o resultado for zero, as posições têm a mesma força.

Em seguida, precisamos encontrar os preços mínimos possíveis de fechamento para cada posição. Eles são calculados da mesma forma que o stop-loss mínimo, mas sem considerar o slippage.

Agora, esses preços de fechamento devem ser convertidos em preços Ask/Bid e encontrar seu valor médio ponderado. Os volumes das posições serão usados como pesos.

Esses dois valores são mais fáceis de combinar em um valor Bid ideal, que será necessário para o acompanhamento das posições.

Agora temos três opções:

  • Se os volumes das posições Buy e Sell forem iguais, o valor Bid ideal corresponderá ao prejuízo mínimo. Ou seja, o trader pode fechar todas as posições se o preço Bid real coincidir com o valor ideal.
  • Se os volumes das posições Buy forem maiores, o BidOpt deve ser aumentado pelo valor do slippage. Este será o stop-loss mínimo para todas as posições.
  • Se os volumes das posições Sell forem maiores, o BidOpt deve ser reduzido pelo valor do slippage.

O acompanhamento das posições é feito da mesma forma que com o trailing-stop simples. Novos níveis de stop-loss são calculados e ajustados ao preço. A única diferença é que este stop-loss é virtual. Logo, teremos que monitorar a variação do preço a cada tick.

Implementei o acompanhamento de várias posições com base no princípio do trailing-stop simples. É assim que o gráfico de saldo muda ao aplicá-lo.


É importante lembrar que o acompanhamento de todas as posições e de cada uma individualmente não conflitam entre si. Por exemplo, trailing-stop simples + trailing-stop para todas as posições produzem os seguintes resultados.


Total Net Profit Gross Profit Gross Loss
PERIOD_M1 4 907,90 10 425,52 -5 517,62
PERIOD_M15 16 524,44 32 304,01 -15 779,57

No geral, o trailing-stop é uma ferramenta útil. No entanto, o trader deve lembrar que sua aplicação não garante operações sem prejuízos. Ele não melhorará uma estratégia de trading mal desenvolvida.


Conclusão

Ao escrever este artigo, foi utilizado o seguinte programa.

Nome Tipo Características
Trailing stop EA
  • TFTS - timeframe do trailing-stop
  • Seed - Número inicial para a série de números aleatórios. Se não for 0, a sequência de posições e seus volumes será repetida
  • Slippage - slippage
  • TypeTS - escolha do tipo de trailing-stop
  • UseTakeProfit - usar take-profit
  • MultiTS - trailing-stop para todas as posições abertas

Traduzido do russo pela MetaQuotes Ltd.
Artigo original: https://www.mql5.com/ru/articles/14167

Arquivos anexados |
Trailing_stop.mq5 (32.67 KB)
Do básico ao intermediário: Variáveis (II) Do básico ao intermediário: Variáveis (II)
Neste artigo vamos ver como trabalhar com variáveis do tipo estática. Este tema é um que costuma confundir muitos programadores. Iniciantes e até mesmo com alguma experiência. Já que existem alguns cuidados e macetes a serem observado no uso de tal mecanismo. O conteúdo exposto aqui, visa e tem como objetivo, pura e simplesmente a didática. De modo algum deve ser encarado como sendo, uma aplicação cuja finalidade não venha a ser o aprendizado e estudo dos conceitos mostrados.
Desenvolvendo um sistema de Replay (Parte 57): Dissecando o serviço de testagem Desenvolvendo um sistema de Replay (Parte 57): Dissecando o serviço de testagem
Neste artigo iremos dissecar o serviço de teste que foi visto no artigo anterior. Mas por conta que lá já havia muita informação, e não queria complicar a coisa toda com mais informações. Vamos fazer isto neste artigo daqui. Então se você não tem ideia de como o serviço que foi visto no artigo anterior, permitia que as coisas funcionassem daquela forma. Venha comigo neste artigo para compreender o que será base para os próximos artigos.
Redes neurais de maneira fácil (Parte 77): Cross-Covariance Transformer (XCiT) Redes neurais de maneira fácil (Parte 77): Cross-Covariance Transformer (XCiT)
Em nossos modelos, frequentemente usamos vários algoritmos de atenção. E, provavelmente, usamos Transformadores com mais frequência. A principal desvantagem deles é a exigência de recursos. Neste artigo, quero apresentar um algoritmo que ajuda a reduzir os custos computacionais sem perda de qualidade.
Do básico ao intermediário: Variáveis (I) Do básico ao intermediário: Variáveis (I)
Muitos programadores em inicio tem muitas dificuldades em compreender, por que seus códigos não funcionam como eles esperam. Existem muitos detalhes que torna um código de fato funcional. Não é somente digitar toda uma série de funções e operação que faz um código funciona. Então que tão aprender da maneira correta, como se cria um código real. Ao invés de ficar copiando e colando partes de código encontrados aqui e ali? O conteúdo exposto aqui, visa e tem como objetivo, pura e simplesmente a didática. De modo algum deve ser encarado como sendo, uma aplicação cuja finalidade não venha a ser o aprendizado e estudo dos conceitos mostrados.