Это оптимизированная для SEO статья о стратегии Keltner Channel Stop Loss Take Profit:
Стратегия Keltner Channel Stop Loss Take Profit оптимизирует торговые решения на основе анализа Keltner Channel путем включения правил стоп-лосса и тока прибыли.
Вычислить средние, верхние и нижние полосы Келтнерского канала.
Рассмотрим длинные возможности, когда цена достигает верхней полосы, и короткие возможности, когда цена достигает нижней полосы.
Введите длинные сделки на верхних прорывах, и введите короткие сделки на нижних прорывах.
Установите цель получения прибыли на определенном процентном уровне выше входной цены и цель остановки убытков на определенном процентном уровне ниже входной цены.
Преимущество этой стратегии заключается в внедрении правил остановки потерь и получения прибыли для сокращения потерь вовремя, когда тренд идет не так, и получения прибыли до окончания волны.
Параметры могут быть оптимизированы для различных активов для достижения наилучшего баланса риска и прибыли.
Канал Келтнера определяет направление тренда
Стоп-потеря и получение прибыли оптимизируют вознаграждение
Гладкий вход и выход предотвращает ложные перерывы
Гибкие параметры для корректировки
Сочетается с другими показателями
Стоп-лосс и коэффициент прибыли должны быть увеличены
Некоторые риски остаются
Канал может разорваться с потерями.
Небольшая потеря стопа вызывает частые остановки
Стратегия Keltner Channel Stop Loss Take Profit оптимизирует традиционную торговую систему путем контроля рисков при одновременном следовании тренду. Отличные результаты стратегии могут быть достигнуты за счет обширного обратного тестирования и настройки параметров. Стратегия стоит глубокого исследования и живых испытаний для постепенного улучшения стабильности.
/*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)