Эта стратегия создает двойные каналы супертенденции и генерирует торговые сигналы, когда цена прорывается через каналы. Она также адаптирует ширину канала с использованием волатильности цены для адаптивного эффекта.
Вычислить стандартное отклонение цены и волатильность ATR, использовать волатильность для корректировки ширины канала.
Постройте двойные каналы сверхтенденции, с более чувствительным внутренним слоем и более стабильным внешним слоем.
Сгенерируют сигналы покупки/продажи, когда цена проходит через внутренний или внешний канал.
Двойная структура канала помогает отфильтровать ложные прорывы.
Волатильность ATR адаптирует ширину канала, более широкую при росте волатильности для адаптивного эффекта.
Супертенд-каналы просты и эффективны в отслеживании тенденций.
Двойной канал фильтрует ложные прорывы и улучшает качество сигнала.
Адаптация к волатильности позволяет каналам соответствовать различным рыночным условиям.
Легко реализовать с простой настройкой параметров.
Визуализированные каналы и прорывы формируют интуитивные торговые сигналы.
Сигналы прорыва могут приводить к ложным сигналам, что приводит к ненужным потерям.
Он не может определить направление тренда, риски торговли против тренда.
Адаптивная настройка может быть слишком чувствительной, с перенастройками.
Неправильная оптимизация параметров приводит к перенастройке.
Как тенденция, следующая за стратегией, он борется на рынках с диапазоном.
Параметры испытания
Для определения основных тенденций включить MA.
Оптимизируйте подтверждение выхода, чтобы избежать ложных выходов.
Добавить стоп-лосс к лимиту по сделке.
Оцените настройку канала на частоту торговли.
Используйте машинное обучение для динамической оптимизации параметров.
Эта стратегия использует адаптивные двойные супертенденционные каналы для улавливания ценовых тенденций. Она проста и интуитивна в отслеживании трендов. Но риски включают ложные прорывы и неправильное направление тренда. Дальнейшее настройка параметров и дополнительные механизмы могут улучшить эффективность стратегии, что делает ее надежной системой отслеживания тренда.
/*backtest start: 2023-08-20 00:00:00 end: 2023-09-19 00:00:00 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("SuperTrend Cloud Strategy", shorttitle="SuperTrend Cloud Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, initial_capital = 1000) //Inputs multi = input(title="Multiplier", type=input.float, step=0.1, defval=3, minval=1) period = input(title="Period", type=input.integer, step=1, defval=10, minval=1) SelfAdjust = input(title="Self-Adjusting", type=input.bool, defval = false) //////////////////////////////////////////////////////////////////////////////// // BACKTESTING RANGE // From Date Inputs fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12) fromYear = input(defval = 2019, title = "From Year", minval = 1970) // To Date Inputs toDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31) toMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12) toYear = input(defval = 2020, title = "To Year", minval = 1970) // Calculate start/end date and time condition startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00) finishDate = timestamp(toYear, toMonth, toDay, 00, 00) time_cond = true //////////////////////////////////////////////////////////////////////////////// dev = stdev(close, period) stdDev = (dev / close) * 100 + 1 MultDev = SelfAdjust ? multi * stdDev : multi up_lev1 = hl2 - MultDev * atr(period) dn_lev1 = hl2 + MultDev * atr(period) up_lev2 = hl2 - (MultDev * 2 * atr(period)) dn_lev2 = hl2 + (MultDev * 2 * atr(period)) up_trend1 = 0.0 up_trend1 := close[1] > up_trend1[1] ? max(up_lev1, up_trend1[1]) : up_lev1 up_trend2 = 0.0 up_trend2 := close[1] > up_trend2[1] ? max(up_lev2, up_trend2[1]) : up_lev2 down_trend1 = 0.0 down_trend1 := close[1] < down_trend1[1] ? min(dn_lev1, down_trend1[1]) : dn_lev1 down_trend2 = 0.0 down_trend2 := close[1] < down_trend2[1] ? min(dn_lev2, down_trend2[1]) : dn_lev2 trend1 = 0 trend1 := close > down_trend1[1] ? 1: close < up_trend1[1] ? -1 : nz(trend1[1], 1) trend2 = 0 trend2 := close > down_trend2[1] ? 1: close < up_trend2[1] ? -1 : nz(trend2[1], 1) st_line1 = trend1 == 1 ? up_trend1 : down_trend1 st_line2 = trend2 == 1 ? up_trend2 : down_trend2 // Plotting plot1 = plot(st_line1, color = trend1 == 1 ? color.green : color.red , style = plot.style_line, linewidth = 1, title = "SuperTrend 1") plot2 = plot(st_line2, color = trend2 == 1 ? color.green : color.red , style = plot.style_line, linewidth = 1, title = "SuperTrend 2") fill(plot1, plot2, color = color.aqua, title = "Cloud") buy = crossover(close, st_line1) and close > st_line2 or crossover(close, st_line2) and close > st_line1 sell = crossunder(close, st_line1) and close < st_line2 or crossunder(close, st_line2) and close < st_line1 if(buy and time_cond) strategy.entry("long", long = true , comment="long") if (close < st_line1 and time_cond or close < st_line2 and time_cond) strategy.close("long") if (not time_cond) strategy.close_all()