Эта стратегия объединяет индикаторы Relative Strength Index (TSI), Commodity Channel Index (CCI) и Hull Moving Average (Hull MA), чтобы сформировать торговую стратегию отслеживания трендов.
Стратегия в основном использует индикаторы ТСО и ТПП для оценки направления тренда и ситуации перекупки/перепродажи на рынке, а также Hull MA для определения промежуточной тенденции цен, и все три объединены в качестве основных условий для открытия позиций.
В частности, когда быстрая линия ТСИ пересекает медленную линию, индикатор CCI пересекает более +20 && n1 поднимается, идет в длинный путь; когда быстрая линия ТСИ пересекает ниже медленной линии, индикатор CCI пересекает ниже -20 && n1 падает, идет в короткий путь.
При подтверждении с помощью индикаторов в разных циклах ложные прорывы могут быть эффективно отфильтрованы для отслеживания среднесрочных и долгосрочных тенденций.
Это относительно стабильная и эффективная стратегия отслеживания тенденций, имеющая следующие основные преимущества:
Использование ТСОС для оценки долгосрочного направления тренда является более надежным, избегая помех от краткосрочного шума рынка;
Добавление показателя CCI может подтвердить явления перекупки/перепродажи и отфильтровать некоторые ложные сигналы;
Суждение Hull MA
Интеграция индикаторов с различными параметрами может повысить надежность сигналов и уменьшить вероятность помех.
Гибкие параметры стратегии могут быть оптимизированы для различных рыночных циклов.
Несмотря на то, что стратегия относительно стабильна, все еще существуют определенные риски:
Рынок может испытывать резкие переломы, которые не могут быть быстро остановлены в связи с убытками, что может привести к относительно большим убыткам;
Указатели ТСИ Диф и ТСИ могут иметь ложные сигналы и задержки, отсутствующие в некоторых точках входа;
Неправильное настройка параметров может также привести к чрезмерно высокой частоте торговли или снижению качества сигнала.
Контрмеры:
Соответственно регулировать стоп-потери для контроля одиночных потерь;
подтвердить с помощью других показателей, чтобы улучшить точность сигнала;
Корректировать параметры в соответствии с рынком для обеспечения стабильности стратегии.
Стратегия также может быть оптимизирована в следующих аспектах:
Попробуйте различные комбинации показателей параметров, чтобы найти наилучшее совпадение;
внедрение алгоритмов машинного обучения для адаптивной оптимизации параметров;
Увеличить модуль управления капиталом для более стабильной прибыли;
Включите больше фильтров, чтобы увеличить ставку победы стратегии.
Это будут основные направления для будущих оптимизаций.
Эта стратегия всесторонне использует индикаторы TSI, CCI и Hull MA для формирования относительно стабильной и эффективной стратегии отслеживания тренда. Она успешно использует преимущества многоциклических индикаторов для улучшения качества сигнала. Следующим шагом будет дальнейшее повышение стабильности и рентабельности стратегии путем оптимизации параметров, улучшения фильтра и других средств.
/*backtest start: 2022-11-21 00:00:00 end: 2023-11-27 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(title="TSI CCI Hull", shorttitle="TSICCIHULL", default_qty_type=strategy.percent_of_equity, default_qty_value=100, calc_on_order_fills= false, calc_on_every_tick=true, pyramiding=0) long = input(title="Long Length", type=input.integer, defval=50) short = input(title="Short Length", type=input.integer, defval=50) signal = input(title="Signal Length", type=input.integer, defval=25) price=input(title="Source",type=input.source,defval=open) Period=input(25, minval=1) lineupper = input(title="Upper Line", type=input.integer, defval=100) linelower = input(title="Lower Line", type=input.integer, defval=-100) p=price length= Period double_smooth(src, long, short) => fist_smooth = ema(src, long) ema(fist_smooth, short) pc = change(price) double_smoothed_pc = double_smooth(pc, long, short) double_smoothed_abs_pc = double_smooth(abs(pc), long, short) tsi_value = 100 * (double_smoothed_pc / double_smoothed_abs_pc) keh = tsi_value*5 > linelower ? color.red : color.lime teh = ema(tsi_value*5, signal*5) > lineupper ? color.red : color.lime meh = ema(tsi_value*5, signal*5) > tsi_value*5 ? color.red : color.lime i1=plot(tsi_value*5, title="TSI Value", color=color.black, linewidth=1,transp=100) i2=plot(ema(tsi_value*5, signal*5), title="TSI Signal", color=color.black, linewidth=1,transp=100) fill(i1,i2,color=meh,transp=85) plot(cross(tsi_value*5, ema(tsi_value*5, signal*5)) ? tsi_value*5 : na, style=plot.style_circles, color=color.black, linewidth=10) plot(cross(tsi_value*5, ema(tsi_value*5, signal*5)) ? tsi_value*5 : na, style=plot.style_circles, color=color.white, linewidth=8,transp=0) plot(cross(tsi_value*5, ema(tsi_value*5, signal*5)) ? tsi_value*5 : na, style=plot.style_circles, color=meh, linewidth=5) n2ma = 2 * wma(p, round(length / 2)) nma = wma(p, length) diff = n2ma - nma sqn = round(sqrt(length)) n1 = wma(diff, sqn) cci = (p - n1) / (0.015 * dev(p, length)) c = cci > 0 ? color.lime : color.red c1 = cci > 20 ? color.lime : color.silver c2 = cci < -20 ? color.red : color.silver cc=plot(cci, color=c, title="CCI Line", linewidth=2) cc2=plot(cci[1], color=color.gray, linewidth=1,transp=100) fill(cc,cc2,color=c,transp=85) plot(cross(20, cci) ? 20 : na, style=plot.style_cross,title="CCI cross UP", color=c1, linewidth=2,transp=100,offset=-2) plot(cross(-20, cci) ? -20 : na, style=plot.style_cross,title="CCI cross down", color=c2, linewidth=2,transp=100,offset=-2) TSI1=ema(tsi_value*5, signal*5) TSI2=ema(tsi_value*5, signal*5)[2] hullma_smoothed = wma(2*wma(n1, Period/2)-wma(n1, Period), round(sqrt(Period))) //plot(hullma_smoothed*200) longCondition = TSI1>TSI2 and hullma_smoothed<price and cci>0 if (longCondition and cci>cci[1] and cci > 0 and n1>n1[1]) strategy.entry("Buy Here", strategy.long) shortCondition = TSI1<TSI2 and hullma_smoothed>price and cci<0 if (shortCondition and cci<cci[1] and cci < 0 and n1<n1[1]) strategy.entry("Sell Here", strategy.short)