
Эта стратегия объединяет двусторонние торговые сигналы TSI и улучшенного показателя CCI, используя арбитраж для частого открытия позиций с целью достижения более стабильной и устойчивой прибыли. Ключевой логикой является быстрое и медленное среднелинейное форк и мертвый форк в показателе TSI, в сочетании с многолинейной сигнальной линией показателя HMACCI, чтобы определить направление покупки и продажи на рынке.
Стратегия основана на сочетании двух показателей: TSI и HMACCI.
Индекс TSI содержит быструю среднюю линию и медленную среднюю линию для определения сигнала купли-продажи. Когда быстрая линия прорывает медленную линию снизу вверх, это является сигналом покупки, а наоборот - сигналом продажи. Таким образом, можно более чувствительно улавливать изменяющиеся тенденции рынка.
Индекс HMACCI основан на традиционном индикаторе CCI, используя Hull Moving Average вместо самой цены, чтобы отфильтровать часть шума, чтобы определить перекуп и перепродажу. Перекуп и перепродажа могут вновь подтвердить направление сигнала индикатора TSI.
Ключевая логика стратегии состоит в том, чтобы объединить результаты этих двух показателей и установить определенные дополнительные условия для фильтрации ошибочных сигналов, таких как закрытие цены на одной из K-линий и минимальная цена на наивысшей цене до нескольких циклов, чтобы контролировать качество обратного сигнала.
В случае открытия позиции, если условия выполнены, открывается позиция по рыночной цене при закрытии линии K, а также делается дополнительное разрыв. Таким образом, можно получить более стабильную прибыль, но необходимо взять на себя риск арбитража.
С точки зрения стоп-стоп-убытков, установлены плавающие стоп-убытки и полный плавный прибыль. Это хорошо контролирует риск односторонней торговли.
Это более стабильная и надежная стратегия высокочастотного арбитража. Основные преимущества:
Основные риски, о которых следует помнить:
Риски можно снизить следующими способами:
В этой стратегии есть много возможностей для оптимизации, и основные направления:
Эта стратегия в целом является стабильной, надежной, с высоким уровнем допущения ошибок. Она объединяет тенденционное суждение и обратный индикатор, чтобы получить стабильную прибыль от частого открытия позиций. В то же время, стратегия сама по себе имеет сильное оптимизируемое пространство и потенциал, это высокочастотная торговая идея, которая заслуживает глубокого изучения.
/*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())