
A estratégia utiliza o método Wilder volatility trailing stop, combinado com o indicador ATR e diferentes tipos de médias móveis, para obter uma estratégia de stop trailing de tendência altamente adaptável.
O núcleo da estratégia é o algoritmo Wilder volatility trailing stop. Primeiro, ele calcula o indicador ATR, calcula o comprimento e a multiplicação do indicador ATR de acordo com os parâmetros de entrada, obtendo uma linha de parada dinâmica. Em seguida, combina o preço de encerramento, o preço mais alto e uma opção do preço mais baixo, atualizando constantemente os pontos altos e baixos da linha de parada.
No código, primeiro, realizam-se várias médias móveis, como RMA, EMA, SMA e Hull MA, através da função f_ma. Em seguida, o indicador ATR é calculado, multiplicado pelo múltiplo definido pelo usuário, obtendo uma linha de parada baseada na taxa de flutuação.
A estratégia usa a flexibilidade do indicador ATR, diferentes tipos de linha média e configurações de parâmetros para realizar uma estratégia de parada de perda de tendência muito adaptável. Ela é capaz de acompanhar a tendência de forma eficaz e parar a perda quando há uma grande retração no mercado.
A estratégia usa primeiro o algoritmo Wilder Volatility Trailing Stop, um método de parada de tendência bem-sucedido e confiável.
A estratégia de usar o indicador ATR para calcular a linha de parada de forma dinâmica, pode evitar que o ponto de parada fique muito rígido. O indicador ATR pode refletir efetivamente a volatilidade e o nível de risco do mercado.
O código permite a opção de vários equilíbrios, como RMA, EMA, SMA e Hull MA, aumentando a adaptabilidade da estratégia.
Ao ajustar o comprimento do ATR e os parâmetros de multiplicação, é possível encontrar os melhores parâmetros para diferentes mercados e otimizar o efeito da estratégia.
A estratégia usa diferentes opções de preço, como preço máximo, preço mínimo e preço de fechamento, para calcular a linha de parada, otimizada para diferentes variedades.
No geral, a estratégia é uma estratégia de parada de perda de tendência confiável, adaptável e fácil de otimizar.
A estratégia baseia-se principalmente na otimização de parâmetros, e diferentes mercados e variedades necessitam de testes para encontrar a combinação adequada de ATR e parâmetros de multiplicação, ou o efeito de parada pode ser fraco.
Em situações de turbulência, a linha de perda de ATR pode ocorrer com frequência para acionar a perda de parada. É necessário otimizar os indicadores de julgamento de tendência em combinação com a tendência para evitar a perda de tendência de turbulência.
A linha de parada muito relaxada pode perder a oportunidade de retirar o stop loss; muito apertada pode aumentar a frequência de negociação e os custos de deslizamento. É necessário testar cuidadosamente para encontrar o ponto de equilíbrio.
A escolha de várias médias pode levar a um desvio na eficácia da estratégia. Deve-se escolher uma média principal para uma variedade específica, e as outras médias são apenas uma referência auxiliar.
A estratégia é focada no acompanhamento de tendências e não pode gerar lucros diretos. Deve ser considerado o uso em combinação com outras estratégias de saída de entrada ou estratégias de parada.
Quando os parâmetros não são atualizados, a estratégia pode apresentar problemas de negociação muito frequente ou de longo prazo. Isso precisa ser resolvido com otimização.
Pode-se considerar a inclusão de indicadores de tendência para determinar se há uma tendência ou não, evitando ser preso em situações de turbulência.
Pode-se testar a adição de um elemento de indicador de reversão, para que a parada de perda de posição seja mais rápida quando a tendência de cabeça e a tendência de cabeça alternam.
Pode-se tentar associar os parâmetros de comprimento do ATR às características das variedades de negociação, com diferentes variedades com diferentes configurações de comprimento do ATR.
Pode-se tentar adicionar um indicador de volume de transação, aumentando a velocidade de aperto da linha de stop loss quando o volume de transação diminui significativamente.
Pode-se considerar aumentar a perda da taxa de retração, mas não seja muito apertada, para evitar que a recuperação normal seja interrompida.
Pode-se combinar com outros indicadores de capacidade de julgamento e fazer a otimização de parâmetros, com a liberação apropriada do limiar de perda quando a força é insuficiente.
A estratégia é baseada na Wilder Volatility Trailing Stop ideia, usando o indicador ATR para projetar uma estratégia de parada de tendência de rastreamento muito adaptável. Pode ser bem adaptado a diferentes variedades de negociação através de otimização de parâmetros, é uma estratégia de parada de perda confiável e prático. Mas também devemos ter em conta o risco, e otimizar ainda mais, adicionando elementos de julgamento de tendência e volume de negociação, para torná-lo mais estável e confiável.
/*backtest
start: 2023-10-09 00:00:00
end: 2023-10-16 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// Wilder's Volatility Trailing Stop Strategy with various MA's
// by SparkyFlary
//For Educational Purposes
//Results can differ on different markets and can fail at any time. Profit is not guaranteed.
strategy(title="Wilder's Volatility Trailing Stop Strategy with various MA's", shorttitle="Trailing Stop Strategy", overlay=true)
AtrMult = input(3.0, title="ATR multiplier")
ATRlength = input(7, title="ATR length")
ATRavgType = input("RMA", title="ATR moving average type", options=["RMA", "EMA", "SMA", "HULL"])
sicType = input("close", title="significant close type for trail calculation", options=["close", "high-low"])
//function for choosing moving averages
f_ma(type, src, len) =>
float result = 0
if type == "RMA" // Wilder's moving averaege or Running moving average
result := rma(src, len)
if type == "EMA" // Exponential moving average
result := ema(src, len)
if type == "SMA" // Simple moving average
result := sma(src, len)
if type == "HULL" // Hull moving average
result := wma(2 * wma(src, len / 2) - wma(src, len), round(sqrt(len)))
result
ATR = f_ma(ATRavgType, tr, ATRlength)
upperTrail = lowest(sicType=="close"?close:low, ATRlength) + AtrMult * ATR
lowerTrail = highest(sicType=="close"?close:high, ATRlength) - AtrMult * ATR
float TS = 0
TS := close < TS[1] ? upperTrail[1] : close > TS[1] ? lowerTrail[1] : TS
//plot
plot(TS, title="trailing stop", color=close<TS?color.red:color.green)
//Strategy
buy = crossover(close, TS)
//sell = close < TS
short = crossunder(close, TS)
//cover = close > TS
strategy.entry(id="enter long", long=true, when=buy)
//strategy.close(id="enter long", comment="exit long", when=sell)
strategy.entry(id="enter short", long=false, when=short)
//strategy.close(id="enter short", comment="exit short", when=cover)