Стратегия следования за трендом на основе индикатора CCI


Дата создания: 2023-11-24 10:53:07 Последнее изменение: 2023-11-24 10:53:07
Копировать: 0 Количество просмотров: 745
1
Подписаться
1617
Подписчики

Стратегия следования за трендом на основе индикатора CCI

Обзор

Эта стратегия является стратегией отслеживания трендов на основе показателей CCI. Она использует показатели CCI двух разных периодов для генерации торговых сигналов. В частности, она отслеживает, пробивает ли показатель CCI более короткого периода показатель CCI более длительного периода, и принимает решение о том, чтобы сделать больше или сделать меньше, в зависимости от направления прорыва.

Стратегический принцип

Основная логика этой стратегии заключается в следующем:

  1. Определите два показателя CCI, ci1 - 14 циклов, ci2 - 56 циклов
  2. Когда ci1 вверх и превышает ci2, вы делаете больше.
  3. Когда ci1 пробивает ci2 вниз, пустота
  4. После того, как торговый сигнал был отправлен, по значению ci1 и ci2 было принято решение о закрытии позиции

В частности:

  1. ci1 на CI2, то есть короткий цикл CCI на длинный цикл CCI
  2. Стоп-условия: ci1<-50 и коэффициент изменения или ci1 до 100

Конкретными правилами для этого являются:

  1. ci1 проходит через ci2, то есть короткий цикл CCI проходит через длинный цикл CCI
  2. Условия остановки: ci1>100 и коэффициент изменения >0 или ci2 на 100

Как видно, эта стратегия использует чувствительность более короткого цикла CCI и стабильность более длительного цикла CCI для идентификации и отслеживания тенденций.

Стратегические преимущества

Эта стратегия имеет следующие преимущества:

  1. Использование CCI для эффективного определения тенденций
  2. Дизайн с двойным CCI позволяет отфильтровывать часть шумовых транзакций.
  3. Контроль риска при одновременном отслеживании тенденций с помощью комбинации долгосрочных и краткосрочных индикаторов CCI
  4. Правила стратегии простые, понятные, легко понятные и реализуемые
  5. Сильная конфигурация, CCI-цикл и условия остановки могут быть настроены

Стратегический риск

Однако эта стратегия также несет в себе некоторые риски:

  1. Показатели CCI слабо распознают горизонтальные и шокирующие тенденции
  2. Долго- и краткосрочный циклы CCI могут отклоняться, вызывая ошибки в торговых сигналах
  3. Неправильная установка стоп-условий может привести к большим потерям
  4. Неправильная настройка параметров также может оказать большое влияние на прибыль стратегии

Решение риска:

  1. Показатели могут быть объединены с другими показателями, чтобы избежать торговли в условиях шока.
  2. Добавление условий фильтрации, чтобы избежать ошибочного сигнала, вызванного отклонением CCI в течение длительного периода
  3. Оптимизация и тестирование различных условий остановки
  4. Выбор подходящей комбинации параметров с помощью обратной связи и оптимизации параметров

Направление оптимизации стратегии

В этой стратегии также есть места, где ее можно оптимизировать:

  1. Добавление других показателей для формирования более SYSTEM торговой системы
  2. Тест на разницу в прибыли в разные дни недели и сессии
  3. Поиск оптимальных параметров с использованием машинного обучения
  4. Параметры корректировки в зависимости от характеристик разных сортов
  5. Оптимизация условий открытия и закрытия позиций

Подвести итог

В целом, эта стратегия является простой стратегией отслеживания тенденций, основанной на прорыве показателя CCI в течение длительного и короткого периода. Она позволяет эффективно идентифицировать направление тенденции и отслеживать тенденцию.

Исходный код стратегии
/*backtest
start: 2023-10-24 00:00:00
end: 2023-11-23 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title="my work",calc_on_order_fills=true,currency=currency.USD, default_qty_type=strategy.percent_of_equity,commission_type=strategy.commission.percent)


source = close
shortlength=input(14)
longlength=input(56)
aa=input(2)
Ss=input(75)

//Cci part
ci1=cci(source,shortlength)   //4시간봉의 기본 cci
ci2=cci(source,longlength)   //4시간봉에서 12시봉의 cci 무빙측정

//오린간 선생님의 WT + ichimoku
len = input(10)
lenTurn = input(9)
lenStd = input(26)

wtm_e(so, l) =>
    esa = ema(so, l)
    d = ema(abs(so - esa), l)
    ci = (so - esa) / (0.015 * d)
    ema(ci, l*2+1)

alh(len) => avg(lowest(len), highest(len))
alh_src(src, len) => avg(lowest(src, len), highest(src, len))

wt = wtm_e(close,len)
turn = alh_src(wt, lenTurn)
std = alh_src(wt, lenStd)

cnt = 0
if wt > turn
    cnt:=cnt+1
if wt > std
    cnt:=cnt+1


//100,-100선
h0 = hline(100)
h1 = hline(-100)

//plot(ci,color=green)
// plot(k,color=green)
// plot(d,color=red)
plot(ci1,color=green)
plot(ci2,color=red)

plot(0,color=black)
plot(100,color=black)
plot(-100,color=black)

fill(h0,h1,color=purple,transp=95)

bgcolor(cnt==0 ? red : cnt==1 ? blue : cnt == 2 ? green : na, transp = Ss)

//기간조정

Fromday = input(defval=1, title="from day", minval=1, maxval=31)
FromMonth = input(defval=1, title="from month", minval=1, maxval=12)
FromYr = input(defval=2019, title="from yr", minval=1970)

Today = input(defval=13, title="to day", minval=1, maxval=31)
ToMonth = input(defval=12, title="to month", minval=1, maxval=12)
ToYr = input(defval=2019, title="to yr", minval=1970)

startDate = timestamp(FromYr, FromMonth, Fromday, 00, 00)
finishDate = timestamp(ToYr, ToMonth, Today, 00, 00)
Time_cond = true


/////롱

if  crossover(ci1,ci2) and change(ci2)>0 and Time_cond
    strategy.entry("go", strategy.long, comment="go")
    
strategy.close("go", (ci2<0 and ci1 <-50 and change(ci1)<0) or (crossunder(ci1,-100) and strategy.openprofit<0) and change(cnt)<0)



/////숏

if  (crossunder(ci1,ci2) and change(ci2)<0 and falling(ci1,aa)) and Time_cond
    strategy.entry("die", strategy.short, comment="die")
    
strategy.close("die", (ci2>0 and ci1 > 100 and change(ci1)>0) or (crossover(ci2,100) and strategy.openprofit<0) and change(cnt)>0)