
Эта стратегия объединяет три показателя: индекс относительной силы (TSI), индекс товарного пути (CCI) и Холл-движущееся среднее (Hull MA) в одну стратегию торговли, которая может отслеживать длинную линию торгов на любой торговый вид в течение 1 часа или более.
Стратегия основана на двух показателях, TSI и CCI, которые определяют тенденции рынка и перепродажи, а также Hull MA, которая определяет среднесрочную тенденцию цены, и все три в совокупности являются основными условиями для создания позиций.
В частности, когда ТСИ проходит медленную линию на быстрой линии, когда показатель CCI проходит +20&&n1 повышается, делается больше; когда ТСИ проходит медленную линию под быстрой линией, когда показатель CCI проходит -20&&n1 снижается, делается пусто. Hull MA используется для фильтрации среднесрочных тенденций, только когда цена ниже Hull MA, и только когда цена выше Hull MA.
Таким образом, с помощью подтверждения различных циклических показателей можно эффективно отфильтровать ложные прорывы и отслеживать средне-длинные тенденции.
Это относительно стабильная и эффективная стратегия отслеживания трендов, которая имеет следующие преимущества:
Использование ТСИ для более надежного определения долгосрочных тенденций, чтобы избежать помех от шума рынка в краткосрочной перспективе;
Включение индекса CCI позволяет выявить перепродажи и отфильтровать ложные сигналы.
Hull MA делает ставки более точными, что значительно повышает вероятность получения прибыли.
Интеграция различных параметров может повысить надежность сигнала и снизить вероятность помех.
Флексибилизация параметров стратегии может быть адаптирована к различным рыночным циклам.
Несмотря на высокую стабильность этой стратегии, существуют определенные риски, о которых следует помнить:
В то же время, по мнению экспертов, ситуация может резко измениться, что может привести к значительным потерям.
TSIDiff и показатели CCI могут иметь ложные сигналы и задержки, пропускать части точки входа;
Неправильная настройка параметров также может привести к слишком высокой частоте транзакций или снижению качества сигнала.
Ответ:
а) соответствующие корректировки стоп-стоп и контроль за единичными убытками;
повышение точности сигналов в сочетании с подтверждением других показателей, если это необходимо;
В соответствии с параметрами рыночной корректировки, стратегия должна быть стабильной.
Эта стратегия также может быть оптимизирована в следующих аспектах:
Попробуйте различные комбинации параметров, чтобы найти наиболее подходящий показатель.
Присоединение алгоритмов машинного обучения для адаптивной оптимизации параметров;
Добавление модуля управления капиталом, чтобы повысить стабильность прибыли;
Вместе с фильтрами повышается вероятность выигрыша стратегии.
Это будет основным направлением оптимизации в будущем.
Эта стратегия использует три показателя: 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)