Наилучшая стратегия торговли на многочасовых отрезках с использованием супертендеров CCI

Автор:Чао Чжан, Дата: 2024-01-18 15:09:33
Тэги:

img

Обзор

Эта стратегия объединяет индикатор Supertrend и индекс товарного канала (CCI), чтобы реализовать отслеживание тенденций и генерацию торговых сигналов в течение нескольких временных рамок.

Логика стратегии

Индикатор 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

Интегрируя CCI и Supertrend, эта стратегия реализует суждение о тенденциях в течение нескольких временных рамок.

Когда направления согласуются, создаются более надежные торговые сигналы.

isLong = st_trend == 1 
isShort = st_trend == -1

Входит, когда краткосрочные и среднесрочные согласуются, выходит, когда направления расходятся.

Преимущества

Судебное решение в несколько периодов времени

Интегрирует краткосрочные и среднесрочные индикаторы для более надежных сигналов.

Настраиваемые параметры

Фактор супертенденции и период CCI могут быть скорректированы в соответствии с рыночными условиями.

Просто и ясно

Простая логика и легко понять, отлично подходит для начинающих.

Широкое применение

Применимо к акциям, валюте, криптовалютам по настройке параметров.

Риски и решения

Цена Whipsaw

Многие ложные сигналы могут возникнуть, когда цены сильно колеблются.

Отставание от сильных движений

Соедините индикаторы импульса для отслеживания ускоряющихся тенденций.

Нет остановки потери

Добавить стоп-лосс на основе 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 )


Больше