Это стратегия обратной торговли, основанная на индикаторе CCI. Она будет открывать обратные сделки, когда индикатор CCI показывает уровни перекупленности или перепродажи. В целом эта стратегия использует особенности перекупленности и перепродажи индикатора CCI для захвата возможностей переоценки цен.
Во-первых, эта стратегия основана на показателе CCI.
CCI = (типичная цена - простая скользящая средняя) / (0,015 * стандартное отклонение)
Где?
Типичная цена = (самый высокий + самый низкий + закрытие) / 3
Простая скользящая средняя = скользящая средняя типичной цены за последние N дней
Стандартное отклонение = квадратный корень отклонения типичной цены за последние N дней
Эта стратегия использует 11-периодный показатель CCI, и -150 установлен как уровень перепродажи, а 150 - как уровень перекупки.
При каждом закрытии строк будет проверяться 11-периодный индикатор CCI. Если CCI пересекается ниже -150, генерируется длинный сигнал. Если CCI пересекается выше 150, генерируется короткий сигнал.
После получения сигнала рыночный заказ будет использован для открытия позиции.
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)