В процессе загрузки ресурсов... загрузка...

Стратегия 4-часовой реверсии CCI

Автор:Чао Чжан, Дата: 2023-10-13 15:29:05
Тэги:

Обзор

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

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

Во-первых, эта стратегия основана на показателе CCI.

CCI = (типичная цена - простая скользящая средняя) / (0,015 * стандартное отклонение)

Где? Типичная цена = (самый высокий + самый низкий + закрытие) / 3 Простая скользящая средняя = скользящая средняя типичной цены за последние N дней
Стандартное отклонение = квадратный корень отклонения типичной цены за последние N дней

Эта стратегия использует 11-периодный показатель CCI, и -150 установлен как уровень перепродажи, а 150 - как уровень перекупки.

При каждом закрытии строк будет проверяться 11-периодный индикатор CCI. Если CCI пересекается ниже -150, генерируется длинный сигнал. Если CCI пересекается выше 150, генерируется короткий сигнал.

После получения сигнала рыночный заказ будет использован для открытия позиции.

Анализ преимуществ

  1. Использование показателя CCI позволяет эффективно использовать возможности перемены цен
  2. Параметры CCI регулируются для оптимизации
  3. Фиксированная цель прибыли и коэффициент стоп-лосса эффективно контролируют риск
  4. Простая и понятная логика стратегии, легкая для понимания и реализации

Анализ рисков

  1. Индикатор CCI может генерировать много ложных сигналов, входные сигналы могут быть ненадежными
  • Решение: оптимизация параметров CCI, добавление фильтра с другими показателями
  1. Целевая фиксированная прибыль и коэффициент стоп-лосса могут не соответствовать различным продуктам
  • Решение: Добавить динамическую целевую прибыль и стоп-лосс
  1. Стратегия опирается исключительно на CCI, риск неэффективности высок
  • Решение: объединить несколько показателей для повышения надежности
  1. Не учитывая стоимость торговли, выступление вживую может пострадать
  • Решение: Добавить контроль скольжения, уменьшить частоту торговли

Руководство по оптимизации

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

Резюме

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


/*backtest
start: 2023-09-12 00:00:00
end: 2023-10-12 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("4H CCI Strategy", overlay=true)
length = input( 11 )
overSold = input( -150 )
overBought = input( +150 )
price1 = high
price2 = low
ucci = cci(price1, length)
dcci = cci(price2, length)
vcci = cci(ohlc4, 11)

resCustom = input(title="Timeframe", defval="15")
Length = input(16, minval=1)
xPrice = request.security(syminfo.tickerid, resCustom, hlc3)
xvnoise = abs(xPrice - xPrice[1])
nfastend = 0.666
nslowend = 0.0645
nsignal = abs(xPrice - xPrice[Length])
nnoise = sum(xvnoise, Length)
nefratio = iff(nnoise != 0, nsignal / nnoise, 0)
nsmooth = pow(nefratio * (nfastend - nslowend) + nslowend, 2) 
nAMA = nz(nAMA[1]) + nsmooth * (xPrice - nz(nAMA[1]))
basis1 = nAMA
slope = change(basis1,1)

if (not na(vcci))
    if (crossover(dcci, overSold))
        strategy.entry("CCILE", strategy.long, comment="CCILE")
        strategy.exit("exit", "CCILE", profit = 0.01, loss = 0.005)
    if (crossunder(ucci, overBought))
        strategy.entry("CCISE", strategy.short, comment="CCISE")
        strategy.exit("exit", "CCISE", profit = 0.01, loss = 0.005)
//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)

Больше