Estrategia de seguimiento de tendencias basada en Ichimoku Kinko Hyo


Fecha de creación: 2023-12-11 15:00:29 Última modificación: 2023-12-11 15:00:29
Copiar: 0 Número de Visitas: 666
1
Seguir
1621
Seguidores

Estrategia de seguimiento de tendencias basada en Ichimoku Kinko Hyo

Descripción general

Esta estrategia se basa en el diseño de los indicadores técnicos Ichimoku, que utilizan un método de negociación de seguimiento de tendencias y brechas equilibradas para capturar tendencias de precios medianas y largas y obtener ganancias estables.

Principio de estrategia

La estrategia utiliza las cinco líneas de la tabla de equilibrio a primera vista - la línea de giro, la línea de referencia, la línea de avance, la línea de liderazgo y la línea de retardo - para determinar la tendencia del precio y la resistencia de soporte. Las reglas de juicio específicas son las siguientes:

  1. Cuando el precio de cierre cruza la línea de referencia y la línea de referencia se mueve de manera irregular, se genera una señal de compra.
  2. Cuando el precio de cierre se cruza por debajo de la línea de referencia y la línea de referencia se mueve de manera irregular, se genera una señal de venta.
  3. La liquidez es mejor cuando el precio de cierre es más alto que el precio de la nube, lo que permite la creación de depósitos.
  4. Cuando el precio de cierre es inferior a la brecha, la liquidez es baja y se prohíbe la construcción de depósitos.
  5. La línea de retraso en el precio de cierre genera una señal de compra.
  6. La línea de retraso en la brecha de cierre generó una señal de venta.

La hora de entrada final se decidirá después de la evaluación integral de las señales de negociación anteriores.

Análisis de las ventajas

La estrategia tiene las siguientes ventajas:

  1. Utiliza una tabla de equilibrio de primera vista para juzgar las tendencias, puede filtrar el ruido del mercado y bloquear las tendencias de la línea media y larga.
  2. En combinación con el análisis de la situación de la liquidez, se puede evitar el riesgo de creación de depósitos.
  3. La línea de retardo sirve como señal de confirmación para evitar falsas brechas.
  4. Las reglas son sencillas, claras y fáciles de aplicar.

Análisis de riesgos

La estrategia también tiene los siguientes riesgos:

  1. La configuración incorrecta de los parámetros puede causar oportunidades de negociación perdidas.
  2. El retraso en la determinación de la tendencia mutada no puede detener la pérdida en el tiempo.
  3. El riesgo de pérdidas de las posiciones múltiples es mayor.

Para los riesgos mencionados anteriormente, se puede resolver mediante la configuración de parámetros de optimización, en combinación con otros indicadores para juzgar el cambio de tendencia y el estricto stop loss.

Dirección de optimización

La estrategia también puede ser optimizada en los siguientes aspectos:

  1. Optimización de los parámetros de la tabla de equilibrio de primera vista, buscando la combinación óptima.
  2. Aumentar los filtros de los indicadores de precios y cantidades para evitar desviaciones de tendencias.
  3. El punto de inflexión se determina en combinación con el índice de volatilidad.
  4. Un modelo de aprendizaje automático para determinar el estado de las tendencias.

Resumir

Esta estrategia utiliza una tabla de equilibrio de primera vista para determinar la tendencia de los precios y la situación de la liquidez, y utiliza un modelo de seguimiento de tendencias para filtrar eficazmente el ruido y capturar la tendencia de la línea media larga, con un menor riesgo de retirada y adecuado para la tenencia de la línea media larga. Al optimizar aún más la configuración de los parámetros, agregar indicadores de filtración auxiliares y explorar señales de cambio de tendencia, se puede mejorar el factor de beneficio de la estrategia.

Código Fuente de la Estrategia
/*backtest
start: 2022-12-04 00:00:00
end: 2023-12-10 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("My Ichimoku Strat", overlay=true,default_qty_type=strategy.percent_of_equity, default_qty_value=100, initial_capital=1000, currency=currency.EUR)
// === BACKTEST RANGE ===
FromMonth = input(defval = 1, title = "From Month", minval = 1)
FromDay   = input(defval = 1, title = "From Day", minval = 1)
FromYear  = input(defval = 2017, title = "From Year", minval = 2014)
ToMonth   = input(defval = 1, title = "To Month", minval = 1)
ToDay     = input(defval = 1, title = "To Day", minval = 1)
ToYear    = input(defval = 9999, title = "To Year", minval = 2014)

// === SERIES SETUP ===
//**** Inputs *******
KijunSenLag = input(6,title="KijunSen Lag",minval=1)

//Kijun-sen
//Support resistance line, buy signal when price crosses it
KijunSen = sma((high+low)/2,26)
buy2 = crossover(close,KijunSen) and (rising(KijunSen,KijunSenLag) or falling(KijunSen,KijunSenLag))
sell2= crossunder(close,KijunSen) and (rising(KijunSen,KijunSenLag) or falling(KijunSen,KijunSenLag))


//Tenkan-Sen
TenkanSen = sma((high+low)/2,9)

//Senkou Span A 
SenkouSpanA = (KijunSen + TenkanSen)/2

//Senkou Span B 
SenkouSpanB = sma((high+low)/2,52)

//Cloud conditions : ignore buy if price is under the cloud
// Huge cloud means safe support and resistance. Little cloud means danger.
buy3 = close > SenkouSpanA and close > SenkouSpanB
sell3 = close < SenkouSpanA and close < SenkouSpanB


//Chikou Span
//Buy signal : crossover(ChikouSpan,close)
//Sell Signal : crossunder(ChikouSpan,close)
ChikouSpan = close
buy1=crossover(ChikouSpan,close[26])
sell1=crossunder(ChikouSpan,close[26])

plotshape(buy1,style=shape.diamond,color=lime,size=size.small)
plotshape(sell1,style=shape.diamond,color=orange,size=size.small)

//Alerts

buyCompteur = -1
buyCompteur := nz(buyCompteur[1],-1)
buyCompteur := buy2 or buy3 ? 1 : buyCompteur
buyCompteur := buyCompteur > 0 ? buyCompteur + 1 : buyCompteur
buyCompteur := sell2 or sell3 ? -1 : buyCompteur

sellCompteur = -1
sellCompteur := nz(sellCompteur[1],-1)
sellCompteur := sell2 or sell3 ? 1 : sellCompteur
sellCompteur := sellCompteur > 0 ? sellCompteur + 1 : sellCompteur
sellCompteur := buy2 or buy3 ? -1 : sellCompteur

sell= sell2 and sell3 or (sell1 and buyCompteur <= 8)
buy=buy2 and buy3 or (buy1 and sellCompteur <=8)
plotchar(buy,char='B',size=size.small,color=lime)
plotchar(sell,char='S',size=size.small,color=orange)

//plots
plot(KijunSen,title="Kijun-Sen",color=blue,linewidth=4)
plot(TenkanSen,title="Tenkan-Sen",color=red,linewidth=2)
cloudA = plot(SenkouSpanA,title="cloud A", color=lime,offset=26,linewidth=2)
cloudB = plot(SenkouSpanB,title="cloud B", color=orange,offset=26,linewidth=2)
plot(ChikouSpan,title="lag span",color=fuchsia, linewidth=2,offset=-26)
//plot()
fill(cloudA,cloudB,color=SenkouSpanA>SenkouSpanB?lime:orange)
//plot(close,color=silver,linewidth=4)

// === ALERTS ===
strategy.entry("L", strategy.long, when=(buy and (time > timestamp(FromYear, FromMonth, FromDay, 00, 00)) and (time < timestamp(ToYear, ToMonth, ToDay, 23, 59))))
strategy.close("L", when=(sell and (time < timestamp(ToYear, ToMonth, ToDay, 23, 59))))