Основная идея этой стратегии заключается в том, чтобы использовать индикатор CCI для определения направления тренда рынка и использовать индикатор EMA для сглаживания CCI для реализации тренда после торговли.
Показатель CCI определяет, является ли текущая цена акции перекупленной или перепроданной на основе степени отклонения от 20-дневной скользящей средней. Формула: (типичная цена - 20D SMA) / (0,015 * 20D TP стандартное отклонение).
Угладить индикатор CCI с помощью EMA для получения кривой CCI-EMA, которая уменьшает колебания CCI и делает сигнал более ясным.
Установите точки покупки и продажи для CCI. Продолжайте, когда CCI-EMA пересекает точку покупки, и продолжайте, когда CCI-EMA пересекает точку продажи.
Удерживать позицию до тех пор, пока CCI-EMA снова не достигнет точки покупки или продажи, чтобы закрыть позицию.
Использование CCI для определения направления тенденции рынка в сочетании с EMA для фильтрации ложных сигналов может эффективно отслеживать тенденции рынка.
CCI чувствителен к ценовым аномалиям и может быстро улавливать изменение тренда. EMA уменьшает ложные сигналы. Используемые вместе, они могут использовать возможности в начале тренда.
Стратегии, следующие за трендом, минимизируют транзакции, снижают торговые издержки и скольжение.
Результаты обратных тестов хорошие, что дает стратегии практическую жизнеспособность.
CCI может быть чрезмерно чувствителен к кривым, а EMA не может полностью отфильтровать все ложные сигналы, некоторые ложные сигналы остаются.
Простые стратегии, следующие за трендом, склонны к убыткам при консолидации или перепаде трендов.
Механические торговые системы не могут гибко регулировать параметры на основе рынков.
Ограниченные данные обратных испытаний не могут полностью отражать производительность в режиме реального времени.
Оптимизировать параметры CCI путем тестирования различных периодов длины.
Оптимизировать параметры EMA для поиска оптимального периода EMA.
Проверьте различные комбинации точек покупки/продажи, чтобы найти оптимальные параметры.
Включить другие показатели для определения обратного тренда и установки стоп-потерь.
Добавьте автоматическую оптимизацию параметров, чтобы найти оптимальные параметры для разных продуктов.
В целом, это относительно простая тенденция, следующая за торговой стратегией. Он использует CCI для определения направления тренда и чувствителен к изменениям цен, в сочетании с фильтрацией EMA для генерации сигналов. Стратегия имеет некоторые преимущества, но также и риски. Благодаря оптимизации параметров и использованию других индикаторов стабильность и производительность могут быть еще улучшены. В целом он обеспечивает простой и надежный шаблон тренда для квантовой торговли.
/*backtest start: 2023-10-02 00:00:00 end: 2023-11-01 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("CCI with EMA Strategy", overlay=false, pyramiding=1, default_qty_type= strategy.percent_of_equity, default_qty_value = 100, calc_on_order_fills=false, slippage=0,commission_type=strategy.commission.percent,commission_value=0.07) length = input(20, minval=1) src = input(close, title="Source") cciSellPoint = input(0, title = 'CCI Sell Point', type = input.integer) cciBuyPoint = input(0, title = 'CCI Buy Buy Point', type = input.integer) lengthcci = input(12,"length cci ema", minval=1) ma = sma(src, length) cci = (src - ma) / (0.015 * dev(src, length)) cciema=ema(cci,lengthcci) plot(cci, "CCI", color=#996A15) plot(cciSellPoint, title = 'CCI Sell Point', color = color.red, linewidth = 1, style = plot.style_cross, transp = 35) plot(cciBuyPoint, title = 'CCI Buy Point', color = color.green, linewidth = 1, style = plot.style_cross, transp = 35) plot(cciema, title = 'CCI EMA', color = color.green, linewidth = 1, transp = 35) band1 = hline(100, "Upper Band", color=#C0C0C0, linestyle=hline.style_dashed) band0 = hline(-100, "Lower Band", color=#C0C0C0, linestyle=hline.style_dashed) fill(band1, band0, color=#9C6E1B, title="Background") startLongTrade= cciema >cciBuyPoint startShortTrade= cciema <cciSellPoint //exitLong = cciema <cciSellPoint //exitShort = cciema >cciBuyPoint strategy.entry("long",strategy.long, when = startLongTrade ) //strategy.close( "long", when=exitLong) strategy.entry("short",strategy.short,when=startShortTrade ) //strategy.close("short", when=exitShort)