Эта стратегия сочетает в себе двусторонние торговые сигналы ТСИ и улучшенные индикаторы CCI и использует подход хеджирования для часто открывающихся и закрывающихся позиций, направленный на достижение более стабильной непрерывной прибыли. Ключевой логикой является золотой крест и мертвый крест быстро и медленно движущихся средних показателей ТСИ, в сочетании с сигналами покупки и продажи индикатора HMACCI для определения направления рынка. Риски контролируются путем ограничения условий открытия, в то время как устанавливаются логики остановки убытков и получения прибыли.
Стратегия в основном основана на сочетании показателей ТСОС и HMACCI.
Индикатор TSI содержит быструю скользящую среднюю и медленную для определения торговых сигналов. Когда быстрая линия проходит через медленную линию вверх, это сигнал покупки, и наоборот для сигналов продажи. Это может более чувствительно улавливать изменения рыночных тенденций.
Показатель HMACCI основан на традиционном индикаторе CCI, использующем скользящую среднюю стоимость вместо самой цены, которая может отфильтровывать некоторый шум и оценивать зоны перекупки и перепродажи.
Ключевая логика стратегии заключается в объединении суждений этих двух индикаторов и установлении определенных дополнительных условий для фильтрации ложных сигналов, таких как изучение цены закрытия предыдущих баров и максимальной и минимальной цены в течение нескольких периодов для контроля качества сигналов обворота.
Для открытия позиций, если условия выполнены, рыночные ордера размещаются каждый раз, когда бар закрывается, идя как длинные, так и короткие.
Для получения прибыли и стоп-лосса устанавливаются плавающие стоп-лосы и закрытие всех ордеров при достижении целевой прибыли.
Это относительно стабильная и надежная стратегия хеджирования высокой частоты.
Основными рисками являются:
Риски могут быть уменьшены путем:
По-прежнему существует большое пространство для оптимизации этой стратегии, в основном:
В целом эта стратегия является стабильной, надежной стратегией хеджирования с высокой терпимостью к ошибкам. Она сочетает в себе индикаторы тренда и обратного движения, получая устойчивую прибыль за счет частой двунаправленной торговли. Кроме того, сама стратегия имеет большой потенциал для оптимизации и представляет собой полезную идею для дальнейшего исследования.
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the suns bipolarity //©SeaSide420 //@version=4 strategy(title="TSI HMA CCI", default_qty_type=strategy.cash,default_qty_value=1000,commission_type=strategy.commission.percent,commission_value=0.001) long = input(title="TSI Long Length", type=input.integer, defval=25) short = input(title="TSI Short Length", type=input.integer, defval=25) signal = input(title="TSI Signal Length", type=input.integer, defval=13) length = input(33, minval=1, title="HMACCI Length") src = input(open, title="Price Source") ld = input(50, minval=1, title="Line Distance") CandlesBack = input(8,minval=1,title="Candles Look Back") StopLoss= input(3000,minval=1, title="Stop Loss") TargetProfitAll= input(3000,minval=1, title="Target Profit Close All") FromMonth=input(defval=1,title="FromMonth",minval=1,maxval=12) FromDay=input(defval=1,title="FromDay",minval=1,maxval=31) FromYear=input(defval=2020,title="FromYear",minval=2020) ToMonth=input(defval=1,title="ToMonth",minval=1,maxval=12) ToDay=input(defval=1,title="ToDay",minval=1,maxval=31) ToYear=input(defval=9999,title="ToYear",minval=2017) start=timestamp(FromYear,FromMonth,FromDay,00,00) finish=timestamp(ToYear,ToMonth,ToDay,23,59) window()=>true ul = (ld) ll = (ld-ld*2) ma = hma(src, length) cci = (src - ma) / (0.015 * dev(src, length)) price = close 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)*10 tsi_value2=ema(tsi_value/10, signal)*10 cc = color.white ct = color.new(color.gray, 90) if cci<ll or cci[1]<ll cc:=color.red if cci>ul or cci[1]>ul cc:=color.green if cci<ul and cci>ll cc:=color.new(color.yellow, 90) ccc = color.white if cci>ul ccc:=color.green if cci<cci[1] and cci<ul and cci>ll ccc:=color.red if cci<ll ccc:=color.red if cci>cci[1] and cci>ll and cci<ul ccc:=color.green tsiplot= plot(tsi_value, color=color.lime) tsiplot2=plot(tsi_value2, color=color.red) colorchange2 =tsi_value>tsi_value2?color.lime:color.orange fill(tsiplot, tsiplot2, color=colorchange2, title="TSIBackground", transp=50) band1 = hline(ul, "Upper Band 1", color=ct, linestyle=hline.style_dashed) band0 = hline(ll, "Lower Band 1", color=ct, linestyle=hline.style_dashed) fill(band1, band0, color=cc, title="MidBandBackground", transp=0) band2 = hline(ul, "Upper Band 2", color=ct, linestyle=hline.style_dashed) band3 = hline(ll, "Lower Band 2", color=ct, linestyle=hline.style_dashed) cciplot2 = plot(cci, "CCIvHMA 2", color=color.black, transp=0, linewidth=5) cciplot = plot(cci, "CCIvHMA", color=ccc, transp=0, linewidth=3) hline(0, title="Zero") hline(420, title="420") hline(-420, title="-420") fill(cciplot, cciplot2, color=ccc, title="CCIBackground", transp=0) LongCondition=cci>cci[1] and cci>ll and src>src[CandlesBack] and tsi_value>tsi_value2 ShortCondition=cci<cci[1] and cci<ul and src<src[CandlesBack] and tsi_value<tsi_value2 plotshape(LongCondition, title="BUY", style=shape.circle, location=location.top, color=color.green) plotshape(ShortCondition, title="SELL", style=shape.circle, location=location.top, color=color.red) if strategy.openprofit>TargetProfitAll strategy.close_all(when=window(),comment="close all profit target") if LongCondition and strategy.openprofit>-1 strategy.order("BUY", strategy.long,when=window()) if ShortCondition and strategy.openprofit>-1 strategy.order("SELL", strategy.short,when=window()) strategy.exit("SL exit a sell", "SELL", loss = StopLoss,when=window()) strategy.exit("SL exit a buy", "BUY", loss = StopLoss,when=window())