Эта стратегия объединяет индикатор Supertrend и индекс товарного канала (CCI), чтобы реализовать отслеживание тенденций и генерацию торговых сигналов в течение нескольких временных рамок.
CCI-индикатор может идентифицировать сценарии перекупления и перепродажи. Всходящий перекресток линии 0 является бычьим сигналом, а нисходящий - медвежьим. Эта стратегия использует эту особенность для определения направления краткосрочного тренда.
cci_period = input(28, "CCI Period")
cci = cci(source, cci_period)
ML = input(0, "CCI Mid Line pivot")
В случае, если не установлено, что данный показатель не соответствует требованиям, указанным в пункте 249 настоящих Правил, то в случае, если не установлено, что данный показатель не соответствует требованиям, указанным в пункте 249 настоящих Правил, то в случае, если не установлено, что данный показатель не соответствует требованиям, указанным в пункте 249 настоящих Правил, то в случае, если не установлено, что данный показатель не соответствует требованиям, указанным в пункте 249 настоящих Правил, то в случае, если не установлено, что данный показатель не соответствует требованиям, указанным в пункте 249 настоящих Правил, то в случае, если не установлено, что данный показатель не соответствует требованиям, указанным в пункте 249 настоящих Правил, то в случае, если данный показатель не соответствует требованиям, указанным в пункте 249 настоящих Правил.
TrendUp := cci[1] > ML ? max(Up,TrendUp[1]) : Up
TrendDown := cci[1]< ML ? min(Dn,TrendDown[1]) : Dn
Этот код проверяет, пересекает ли cci линию 0 выше/ниже, чтобы обновить верхнюю/нижнюю полосу Supertrend.
Индикатор Supertrend сочетает ATR с ценой для определения средне- и долгосрочных тенденций.
Супертенд рассчитывается как:
Up=hl2-(Factor*atr(Pd))
Dn=hl2+(Factor*atr(Pd))
Где факторы и Pd являются регулируемыми параметрами.
Переменная Trend определяет текущее направление Supertrend:
Trend := cci > ML ? 1: cci < ML ? -1: nz(Trend[1],1)
Интегрируя CCI и Supertrend, эта стратегия реализует суждение о тенденциях в течение нескольких временных рамок.
Когда направления согласуются, создаются более надежные торговые сигналы.
isLong = st_trend == 1
isShort = st_trend == -1
Входит, когда краткосрочные и среднесрочные согласуются, выходит, когда направления расходятся.
Интегрирует краткосрочные и среднесрочные индикаторы для более надежных сигналов.
Фактор супертенденции и период CCI могут быть скорректированы в соответствии с рыночными условиями.
Простая логика и легко понять, отлично подходит для начинающих.
Применимо к акциям, валюте, криптовалютам по настройке параметров.
Многие ложные сигналы могут возникнуть, когда цены сильно колеблются.
Соедините индикаторы импульса для отслеживания ускоряющихся тенденций.
Добавить стоп-лосс на основе ATR для контроля риска.
Настройка параметров для разных рынков.
В сочетании с MACD, KDJ и т. д. чтобы поймать сильные движения импульса.
Использовать методы ИИ и ансамбля для оптимизации параметров и правил.
Эта стратегия успешно сочетает в себе Supertrend и CCI для отслеживания трендов на разные временные рамки. Простая логика, хороший потенциал вознаграждения и настраиваемость. Может еще больше улучшиться с помощью настройки параметров, остановки потери и машинного обучения, чтобы стать прочной торговой системой.
/*backtest start: 2024-01-10 00:00:00 end: 2024-01-17 00:00:00 period: 10m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 //@author=Daveatt StrategyName = "Best Supertrend CCI Strategy" ShortStrategyName = "Best Supertrend CCI Strategy" strategy(title=StrategyName, shorttitle=ShortStrategyName, overlay=true ) ////////////////////////// //* COLOR CONSTANTS *// ////////////////////////// AQUA = #00FFFFFF BLUE = #0000FFFF RED = #FF0000FF LIME = #00FF00FF GRAY = #808080FF DARKRED = #8B0000FF DARKGREEN = #006400FF GOLD = #FFD700 WHITE = color.white // Plots GREEN_LIGHT = color.new(color.green, 40) RED_LIGHT = color.new(color.red, 40) BLUE_LIGHT = color.new(color.aqua, 40) PURPLE_LIGHT = color.new(color.purple, 40) source = input(close) /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////// CCI ///////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// cci_period = input(28, "CCI Period") cci = cci(source, cci_period) //UL = input(80, "Upper level") //LL = input(20, "Lower Level") ML = input(0, "CCI Mid Line pivot") /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// ///////////////////////////// SUPERTREND ///////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// Factor=input(3,title="[ST] Factor", minval=1,maxval = 100, type=input.float) Pd=input(3, title="[ST] PD", minval=1,maxval = 100) /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// /////////////////////// SUPERTREND DETECTION ////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// f_supertrend(Factor, Pd) => Up=hl2-(Factor*atr(Pd)) Dn=hl2+(Factor*atr(Pd)) TrendUp = 0.0 TrendUp := cci[1] > ML ? max(Up,TrendUp[1]) : Up TrendDown = 0.0 TrendDown := cci[1]< ML ? min(Dn,TrendDown[1]) : Dn Trend = 0.0 Trend := cci > ML ? 1: cci < ML ? -1: nz(Trend[1],1) Tsl = Trend==1? TrendUp: TrendDown [Trend, Tsl] [st_trend, st_tsl] = f_supertrend(Factor, Pd) // Plot the ST linecolor = close >= st_tsl ? color.green : color.red plot(st_tsl, color = linecolor , linewidth = 3,title = "SuperTrend", transp=0) isLong = st_trend == 1 isShort = st_trend == -1 longClose = isLong[1] and isShort shortClose = isShort[1] and isLong strategy.entry("Long", 1, when=isLong) strategy.close("Long", when=longClose ) strategy.entry("Short", 0, when=isShort) strategy.close("Short", when=shortClose )