Estrategia de arbitraje bilateral basada en los indicadores TSI y HMACCI


Fecha de creación: 2024-01-23 11:26:14 Última modificación: 2024-01-23 11:26:14
Copiar: 0 Número de Visitas: 575
1
Seguir
1617
Seguidores

Estrategia de arbitraje bilateral basada en los indicadores TSI y HMACCI

Descripción general

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.

Principio de estrategia

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.

Ventajas estratégicas

Es una estrategia de arbitraje de alta frecuencia más estable y confiable. Las principales ventajas son:

  1. Combinación de dos indicadores para evitar las señales falsas
  2. Cada línea K abre posiciones, con operaciones de arbitraje frecuentes y fluctuaciones de ganancias y pérdidas más suaves
  3. Estricta lógica de apertura de posición y condiciones de cierre de pérdidas para controlar el riesgo
  4. La combinación de tendencia y juicio inverso, con una alta tolerancia a errores
  5. Preferencias no orientadas para todo tipo de situaciones de mercado
  6. Los parámetros se pueden ajustar de forma espacial y optimizarse para diferentes variedades

Análisis de riesgos

Los principales riesgos a tener en cuenta son:

  1. Las transacciones de alta frecuencia generan más pérdidas de comisiones
  2. La posibilidad de no ser atrapado en un arbitraje
  3. La configuración incorrecta de los parámetros puede provocar una entrada en el campo demasiado intensa
  4. La posibilidad de grandes pérdidas unilaterales en el corto plazo es insostenible.

El riesgo puede reducirse de la siguiente manera:

  1. Ajuste adecuado de la frecuencia de apertura de depósitos para reducir el impacto de las comisiones
  2. Optimización de los parámetros indicadores para garantizar la calidad de la señal
  3. Aumentar el Stop Loss, pero con más pérdidas de riesgo
  4. Prueba de la configuración de los parámetros de las diferentes variedades

Dirección de optimización

La estrategia aún tiene mucho margen de mejora, principalmente en lo que se refiere a:

  1. Optimización y prueba de parámetros como el ciclo, la duración, etc.
  2. Prueba diferentes combinaciones de indicadores, como el MACD, el BOLL, etc.
  3. Modificación de la lógica de apertura de la posición para establecer condiciones de filtración más estrictas
  4. Optimización de las estrategias de stop loss para lograr un stop loss dinámico y exitoso
  5. Intentar métodos de aprendizaje automático para encontrar un rango de parámetros más estable
  6. Pruebas de variedades y períodos de tiempo
  7. La combinación de indicadores de tendencias evita que las tendencias sean demasiado radicales.

Resumir

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.

Código Fuente de la Estrategia
/*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())