Estratégia de rastreamento da tendência adaptativa para parar perdas

Autora:ChaoZhang, Data: 2023-10-17 14:04:28
Tags:

img

Resumo

Esta estratégia utiliza o método Wilder de trailing stop de volatilidade, combinado com o indicador ATR e diferentes tipos de médias móveis, para implementar uma estratégia de stop loss adaptativa de rastreamento de tendências.

Estratégia lógica

O núcleo desta estratégia é o algoritmo de parada de trail de volatilidade de Wilder. Ele primeiro calcula o indicador ATR e traça dinamicamente a linha de stop loss de acordo com o comprimento e o multiplicador de entrada ATR. Em seguida, rastreia o mais alto e o mais baixo da linha de stop loss com base na opção de preço escolhida entre preços fechados, altos e baixos. Envia sinais de negociação quando o preço quebra a linha de stop loss.

No código, a função f_ma implementa várias médias móveis, incluindo RMA, EMA, SMA e Hull MA. O indicador ATR é calculado e multiplicado pelo multiplicador definido pelo usuário para gerar a linha de parada final baseada em volatilidade. Os níveis mais altos e mais baixos desta linha são rastreados usando as funções mais altas e mais baixas. Os negócios são realizados quando o preço penetra esta linha de parada final.

Ao utilizar de forma flexível o indicador ATR, diferentes médias móveis e parâmetros ajustáveis, esta estratégia realiza um sistema de stop loss de rastreamento de tendências altamente adaptável.

Análise das vantagens

  • Esta estratégia aproveita o algoritmo Wilder Volatility Trailing Stop, que é uma metodologia madura e confiável de rastreamento de tendências.

  • A estratégia utiliza o indicador ATR para calcular dinamicamente a linha de stop loss, evitando pontos rígidos de stop loss.

  • A aplicação de várias médias móveis, incluindo RMA, EMA, SMA e Hull MA, aumenta a adaptabilidade da estratégia.

  • Ao ajustar o comprimento do ATR, os parâmetros do multiplicador podem ser encontrados para diferentes mercados, melhorando o desempenho da estratégia.

  • O uso de diferentes opções de preço, como preços altos, baixos e próximos, permite a otimização de diferentes produtos.

  • Em resumo, trata-se de uma estratégia de rastreamento de tendências de stop loss confiável, adaptável e facilmente otimizável.

Análise de riscos

  • A estratégia depende fortemente da otimização de parâmetros. Parâmetros ATR e multiplicador apropriados precisam ser encontrados através de testes para diferentes mercados e produtos, caso contrário, o efeito stop loss pode não ser ideal.

  • Em mercados variáveis, a linha de stop loss ATR pode desencadear freqüentes stop outs injustificados.

  • Se a linha de stop loss for muito larga, as oportunidades de perda serão perdidas. Se for muito apertada, a frequência de negociação e os custos de deslizamento aumentarão. Um ponto equilibrado precisa ser encontrado através de testes cuidadosos.

  • Para cada produto, deve ser selecionada uma média móvel principal, sendo que as outras devem ser utilizadas apenas como referência.

  • Esta estratégia centra-se no acompanhamento da tendência e não visa diretamente os lucros. É necessário combiná-la com outras estratégias de entrada/saída ou técnicas de lucro.

  • Com parâmetros inadequados, a estratégia pode exibir períodos de negociação excessivos ou de detenção de grandes dimensões.

Orientações de otimização

  • Podem ser introduzidos indicadores de identificação de tendências para evitar confusões em mercados variados.

  • Os indicadores de reversão podem ser testados para permitir um stop-out e uma reversão mais rápidos quando a tendência ascendente e descendente se alternam.

  • O parâmetro do período ATR pode ser correlacionado com as características do produto, de modo que diferentes produtos utilizem períodos ATR diferentes.

  • Os indicadores de volume podem ser utilizados para apertar mais rapidamente a linha de stop loss quando o volume diminui significativamente.

  • O percentual de stop loss pode ser aumentado, mas não demasiado apertado para evitar uma parada em retracements normais.

  • Outros indicadores podem ser usados para medir o momento e otimizar parâmetros para afrouxar paradas quando o momento é fraco.

Resumo

Baseada no conceito de WILDER VOLATILITY TRAILING STOP, esta estratégia utiliza o indicador ATR para projetar um sistema altamente adaptável de rastreamento de tendências de stop loss. Através da otimização de parâmetros, pode ser adaptado a diferentes produtos de negociação e é uma abordagem de stop loss confiável e prática.


/*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)

Mais.