
Esta estrategia combina señales de negociación bilaterales del TSI y el CCI mejorado, y abre y cierra posiciones frecuentemente con un método de arbitraje con el objetivo de obtener ganancias más estables y continuas. La lógica clave es que el indicador TSI tenga una línea de oro y una línea de muerte de línea media rápida y lenta, combinada con la línea de señal de espacio múltiple del indicador HMACCI para determinar la dirección de compra y venta del mercado.
La estrategia se basa principalmente en la combinación de los dos indicadores TSI y HMACCI.
El indicador TSI contiene una media rápida y una media lenta para determinar las señales de compra y venta. Cuando la línea rápida se rompe de abajo hacia arriba, se toma como una señal de compra y, en cambio, se vende. De esta manera, se puede capturar con mayor sensibilidad las tendencias de cambio en el mercado.
El indicador HMACCI utiliza el promedio móvil de Hull en lugar del precio en sí, basado en el indicador CCI tradicional, para filtrar parte del ruido y determinar el intervalo de sobreventa y sobreventa. El intervalo de sobreventa y sobreventa puede confirmar nuevamente la dirección de la señal del indicador TSI.
La lógica clave de la estrategia es combinar los resultados de estos dos indicadores y establecer ciertas condiciones adicionales para filtrar las señales de error, como el precio de cierre de la línea K anterior y el precio máximo y mínimo antes de varios ciclos, para controlar la calidad de la señal de reversión.
En cuanto a la apertura de posiciones, si se cumplen las condiciones, cada vez que la línea K se cierre, se abrirá la posición al precio de mercado y se hará más vacío. De esta manera, se obtendrán ganancias más estables, pero se necesitará asumir el riesgo de arbitraje.
En cuanto al stop-loss, se establecen paradas flotantes y paradas de ganancias. Esto permite controlar el riesgo de operaciones unilaterales.
Es una estrategia de arbitraje de alta frecuencia más estable y confiable. Las principales ventajas son:
Los principales riesgos a tener en cuenta son:
El riesgo puede reducirse de la siguiente manera:
La estrategia aún tiene mucho margen de mejora, principalmente en lo que se refiere a:
La estrategia en general es una estrategia de arbitraje bilateral estable, confiable y con una alta tasa de tolerancia a los errores. Combina el juicio de tendencia y el indicador de reversión para obtener ganancias estables a través de la apertura de posiciones bilaterales frecuentes. Al mismo tiempo, la estrategia en sí tiene un gran espacio y potencial de optimización, es una idea de comercio de alta frecuencia que vale la pena estudiar en profundidad.
/*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())