Este é um artigo otimizado para SEO sobre a estratégia Keltner Channel Stop Loss Take Profit:
A estratégia Keltner Channel Stop Loss Take Profit otimiza as decisões de negociação com base na análise do canal Keltner, incorporando regras de stop loss e take profit.
Calcular as faixas média, superior e inferior do canal de Keltner.
Considere oportunidades longas quando o preço tocar a faixa superior, e oportunidades curtas quando tocar a faixa inferior.
Entrar em transações longas em breakouts de banda superior e entrar em transações curtas em breakouts de banda inferior.
Estabelecer uma meta de lucro a uma certa percentagem acima do preço de entrada e uma meta de stop loss a uma certa percentagem abaixo do preço de entrada.
A vantagem desta estratégia é a introdução de regras de stop loss e take profit para cortar perdas a tempo quando a tendência corre mal e tirar lucros antes do fim da onda.
Os parâmetros podem ser otimizados para diferentes ativos para obter o melhor equilíbrio risco-recompensa.
O canal Keltner determina a direcção da tendência.
Stop loss e take profit optimiza a recompensa
A entrada e saída suaves evitam quebras falsas
Parâmetros flexíveis para os ajustamentos
Combinação com outros indicadores
Os rácios de stop loss e take profit precisam aumentar.
Permanecem alguns riscos de stop loss
Os canais podem ser quebrados com perdas.
Pequenas perdas de parada provocam paradas frequentes
A estratégia Keltner Channel Stop Loss Take Profit optimiza a negociação de canais tradicionais, controlando os riscos enquanto segue a tendência.
/*backtest start: 2023-08-15 00:00:00 end: 2023-08-23 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(title="Optimized Keltner Channels Strategy for BTC", overlay=true) length = input(9, minval=1) mult = input(1.0, "Multiplier") src = input(close, title="Source") exp = input(true, "Use Exponential MA") BandsStyle = input("Average True Range", options = ["Average True Range", "True Range", "Range"], title="Bands Style") atrlength = input(18, "ATR Length") sl = input(defval=22, minval=0, title="Stop Loss (%)") tp = input(defval=21, minval=0, title="Take Profit (%)") esma(source, length)=> s = sma(source, length) e = ema(source, length) exp ? e : s ma = esma(src, length) rangema = BandsStyle == "True Range" ? rma(tr(true), length) : BandsStyle == "Average True Range" ? atr(atrlength) : rma(high - low, length) upper = ma + rangema * mult lower = ma - rangema * mult c = color.blue u = plot(upper, color=color.green, title="Upper") plot(ma, color=#0094FF, title="Basis") l = plot(lower, color=color.red, title="Lower") fill(u, l, color=#0094FF, transp=95, title="Background") crossUpper = crossover(src, upper) crossLower = crossunder(src, lower) bprice = 0.0 bprice := crossUpper ? close+syminfo.mintick : nz(bprice[1]) sprice = 0.0 sprice := crossLower ? close-syminfo.mintick : nz(sprice[1]) crossBcond = false crossBcond := crossUpper ? true : na(crossBcond[1]) ? false : crossBcond[1] crossScond = false crossScond := crossLower ? true : na(crossScond[1]) ? false : crossScond[1] cancelBcond = crossBcond and (src < ma or high >= bprice ) cancelScond = crossScond and (src > ma or low <= sprice ) if (cancelBcond) strategy.cancel("KltChLE") if (crossUpper) strategy.entry("KltChLE", strategy.long, stop=bprice, comment="Long") if (cancelScond) strategy.cancel("KltChSE") if (crossLower) strategy.entry("KltChSE", strategy.short, stop=sprice, comment="Short") strategy.exit("long exit", "KltChLE", profit = close * tp * 0.01 / syminfo.mintick, loss = close * sl * 0.01 / syminfo.mintick) strategy.exit("Short exit", "KltChSE", profit = close * tp * 0.01 / syminfo.mintick, loss = close * sl * 0.01 / syminfo.mintick) plot(bprice, color=color.green) plot(sprice, color=color.red)