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.
Calcule o valor K sma ((stoch ((close, high, low, len), smoothK) com o comprimento len, representando o valor K estocástico.
Calcular o valor ATR atr ((len) com o comprimento len.
Gráfico gráfico da linha de stop loss ((rsi(atr, len) + lowLine,..., title =
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).
Cores de fundo gráficas para sinais de compra e venda.
Executar transacções e definir stop loss quando os sinais acima são acionados.
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.
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.
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.
Usando os valores K do indicador de ímpeto para determinar entradas e saídas.
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.
Os valores de K podem ter falhas, causando sinais de negociação desnecessários.
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.
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.
Os sinais de estratégia freqüentes levam a altos custos de negociação.
Teste e ajuste o parâmetro smoothK para encontrar combinações ideais de parâmetros de valor smoothK.
Ensaiar diferentes valores do parâmetro ATR len para determinar os parâmetros ATR adequados.
Otimizar o parâmetro de linha de entrada lowLine para encontrar parâmetros ideais para controlar a frequência de negociação.
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.
Considerar a otimização dos métodos de stop loss, melhorando a stop loss esperada para controlar ativamente o risco de stop loss.
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)