Estratégia dinâmica de stop loss adaptável às flutuações do ATR

Autora:ChaoZhang, Data: 2023-10-09 15:30:29
Tags:

Resumo

Esta estratégia combina o valor do indicador de ímpeto Stochastic K e o indicador de volatilidade ATR para ajustar dinamicamente a linha de stop loss e a linha de entrada com base nos valores ATR, realizando a ideia de ajustar automaticamente as linhas de stop loss e de entrada de acordo com a volatilidade do mercado.

Estratégia lógica

  1. Calcule o valor K sma ((stoch ((close, high, low, len), smoothK) com o comprimento len, representando o valor K estocástico.

  2. Calcular o valor ATR atr ((len) com o comprimento len.

  3. Gráfico gráfico da linha de stop loss ((rsi(atr, len) + lowLine,..., title = low line) e gráfico gráfico da linha de entrada ((rsi(atr, len) *-1+100-lowLine,..., title = up line) com base no valor ATR.

  4. Determinar os sinais de entrada e saída quando o valor K cruza a linha de entrada (k, linha superior) e a linha de stop loss (k, linha inferior).

  5. Cores de fundo gráficas para sinais de compra e venda.

  6. Executar transacções e definir stop loss quando os sinais acima são acionados.

Análise das vantagens

  1. A estratégia ajusta dinamicamente as linhas de stop loss e de entrada com base na volatilidade do mercado ATR, que adapta automaticamente o risco de stop loss de acordo com a volatilidade do mercado.

  2. Quando a volatilidade do mercado é elevada, a distância entre a linha de stop loss e a linha de entrada aumenta para evitar ser interrompida por flutuações.

  3. Quando a volatilidade do mercado é baixa, a distância entre as linhas de stop loss e as linhas de entrada diminui para uma stop loss oportuna.

  4. Usando os valores K do indicador de ímpeto para determinar entradas e saídas.

  5. A combinação de indicadores de dinâmica e de volatilidade permite captar tendências e ajustar automaticamente os riscos com base nas flutuações.

Análise de riscos

  1. Os valores de K podem ter falhas, causando sinais de negociação desnecessários.

  2. Se o parâmetro ATR len for muito grande, a distância entre a linha de stop loss e a linha de entrada torna-se muito grande com alto risco.

  3. A perda de parada de atraso pura não pode determinar se a posição de perda de parada é apropriada e não consegue controlar o risco de perda de parada única. Pode considerar a perda de parada esperada para controlar o risco de perda de parada única.

  4. Os sinais de estratégia freqüentes levam a altos custos de negociação.

Orientações de otimização

  1. Teste e ajuste o parâmetro smoothK para encontrar combinações ideais de parâmetros de valor smoothK.

  2. Ensaiar diferentes valores do parâmetro ATR len para determinar os parâmetros ATR adequados.

  3. Otimizar o parâmetro de linha de entrada lowLine para encontrar parâmetros ideais para controlar a frequência de negociação.

  4. Considerar a combinação de outros indicadores para filtrar os sinais de entrada e evitar falhas, tais como indicadores de volume de negociação, indicadores KDJ, etc.

  5. Considerar a otimização dos métodos de stop loss, melhorando a stop loss esperada para controlar ativamente o risco de stop loss.

Resumo

A estratégia realiza a ideia de ajustar dinamicamente as linhas de stop loss e entrada com base nos valores do indicador de momento K e no indicador de volatilidade ATR. Pode capturar tendências e ajustar automaticamente os riscos com base em flutuações, o que é muito inovador e prático.


/*backtest
start: 2023-09-08 00:00:00
end: 2023-10-08 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Stoch + ATR", overlay=false, pyramiding = 0, calc_on_order_fills = false, commission_type =  strategy.commission.percent, commission_value = 0.0454, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)

len = input(34, minval=1, title="Length for Main Stochastic & ATR") 
smoothK = input(2, minval=1, title="SmoothK for Main Stochastic")
lowLine = input(10, minval=-50, maxval=50, title="Multiplier for up/low lines")

//Stoch formula
k = sma(stoch(close, high, low, len), smoothK)
plot(k, color=aqua, title = "Stoch")

//len=input
atr=atr(len)
plot(rsi(atr, len)+lowLine , color=red,linewidth=2, title = "low line")
plot(rsi(atr, len)*-1+100-lowLine, color=lime,linewidth=2, title = "up line")

aboveLine = crossunder(k,(rsi(atr, len)+lowLine))? 1 : 0
belowLine = crossover(k,(rsi(atr, len)*-1+100-lowLine))? 1 : 0

aboveLine2 = crossover(k,(rsi(atr, len)+lowLine))? 1 : 0
belowLine2 = crossunder(k,(rsi(atr, len)*-1+100-lowLine))? 1 : 0

skip=(aboveLine2==1 or belowLine2==1) and (aboveLine==1 or belowLine==1)? 1 : 0

//BackGroound Color Plots
plotchar(belowLine==1 and skip==0, title="Buy Signal", char='B', location=location.bottom, color=white, transp=0, offset=0)
plotchar(aboveLine==1 and skip==0, title="Sell Signal", char='S', location=location.top, color=white, transp=0, offset=0)
plotchar(belowLine2==1 and skip==0, title="Close Signal", char='C', location=location.bottom, color=white, transp=0, offset=0)
plotchar(aboveLine2==1 and skip==0, title="Close Signal", char='C', location=location.top, color=white, transp=0, offset=0)

bgcolor(aboveLine==1 ? red : na, transp=30, title = "sell signal")
bgcolor(belowLine==1 ? lime : na, transp=30, title = "buy signal")

bgcolor(aboveLine2==1 ? lime : na, transp=80, title = "close short")
bgcolor(belowLine2==1 ? red : na, transp=80, title = "close long")

bgcolor(skip==1 ? black : na, transp=0, title = "skip signal")

//strategy
longCondition = belowLine==1
shortCondition = aboveLine==1

strategy.entry("BUY", strategy.long, when = longCondition)
strategy.entry("SELL", strategy.short, when = shortCondition)
strategy.cancel_all(when = skip==1)





Mais.