La estrategia de rastreo de nubes del octágono

El autor:¿ Qué pasa?, Fecha: 2023-12-20 15:08:22
Las etiquetas:

img

Resumen general

Se trata de una estrategia cuantitativa de seguimiento de tendencias basada en el indicador Ichimoku, que consiste principalmente en la construcción de posiciones largas y cortas en condiciones específicas para rastrear las tendencias del mercado, combinada con ciertos mecanismos de stop loss para controlar los riesgos.

Principio de la estrategia

El núcleo de esta estrategia es construir señales comerciales basadas en el indicador Ichimoku con ciertas configuraciones de parámetros. El indicador Ichimoku consta de cuatro líneas: la línea de conversión, la línea base, el intervalo líder A y el intervalo rezagado B. La línea de conversión es comúnmente conocida como el Tenkan-sen y la línea base se llama el Kijun-sen. Esta estrategia establece diferentes parámetros para que Tenkan-sen y Kijun-sen generen señales comerciales de cruz dorada y cruz muerta. Además, también incorpora breakouts de nubes como una condición auxiliar para desencadenar entradas.

Concretamente, la estrategia sigue principalmente las siguientes reglas comerciales:

  1. Ir largo cuando el precio se rompe por encima del Tenkan-sen y deja la nube;

  2. Cierre posiciones largas cuando el precio cae por debajo del Tenkan-sen;

  3. Ir corto cuando el precio se rompe por debajo del Kijun-sen y entra en la nube;

  4. Cierra posiciones cortas cuando el precio vuelva a subir por encima del Tenkan-sen.

A través de tales principios comerciales largos y cortos, la estrategia puede capturar eficazmente los movimientos de tendencia en el mercado.

Análisis de ventajas

En comparación con otras estrategias de negociación de promedios móviles comunes, esta estrategia tiene las siguientes ventajas:

  1. Un juicio de tendencia más preciso basado en Ichimoku. Ichimoku consiste en múltiples promedios móviles, lo que lo hace más confiable para el reconocimiento de tendencias y el filtrado del ruido de los MA individuales.

  2. Mejor efecto de filtro con líneas múltiples.

  3. Los riesgos controlables: establecer una línea de stop loss permite un control oportuno de la stop loss y el riesgo.

  4. Las operaciones menos desfavorables en comparación con otras estrategias de tendencia reducen las pérdidas de extracción.

  5. Ajuste flexible de los parámetros: los parámetros se pueden ajustar para adaptarse a las diferentes condiciones del mercado.

Riesgos y optimización

Todavía hay algunos riesgos a tener en cuenta para esta estrategia:

  1. Pérdidas de float en los mercados de rango limitado.

  2. Inadecuado reconocimiento de la reversión de tendencia. Debilidad en la identificación de reversiones de tendencia a corto plazo, puede perder oportunidades o encontrar reversiones repentinas.

  3. Los parámetros diferentes pueden afectar significativamente el rendimiento, lo que requiere una amplia experiencia histórica.

Los siguientes aspectos pueden optimizarse para hacer frente a los riesgos anteriores:

  1. Añadir indicadores de volatilidad para detectar mercados que no están en tendencia y pausar la estrategia.

  2. Incorpore señales adicionales de reversión como cruces de promedios móviles.

  3. Utilice el aprendizaje automático para la optimización automática de parámetros en lugar del ajuste manual.

  4. Establecer líneas de stop loss dinámicas basadas en la volatilidad del mercado.

Conclusión

En general, esta estrategia aprovecha la fortaleza de Ichimoku en la captura de movimientos de tendencia.


/*backtest
start: 2022-12-13 00:00:00
end: 2023-12-19 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title="RENKO ICHIMOKU STRATEGY", shorttitle="RENKO ICHIMOKU STRATEGY", overlay=true)
ro = open
rc = close

tenkanSenPeriods = input(10, minval=1, title="Tenkan-sen"),
kijunSenPeriods = input(30, minval=1, title="Kijun-sen")
SenkouSpanBPeriods = input(60, minval=1, title="Senkou Span B"),
displacement = input(30, minval=1, title="Chikou Span (Displacement)")

donchian(len) => avg(lowest(len), highest(len))

tenkanSen = donchian(tenkanSenPeriods)
kijunSen = donchian(kijunSenPeriods)
SenkouSpanA = avg(tenkanSen, kijunSen)
SenkouSpanB = donchian(SenkouSpanBPeriods)

plot(tenkanSen, color=#0496ff, linewidth=2, title="Tenkan-sen")
// plot(kijunSen, color=#991515, title="Kijun-sen")
// plot(close, offset = -displacement, color=#459915, title="Chikou Span")

p1 = plot(SenkouSpanA, offset = displacement, color=green, title="Senkou Span A")
p2 = plot(SenkouSpanB, offset = displacement, color=red, title="Senkou Span B")
fill(p1, p2, color = SenkouSpanA > SenkouSpanB ? green : red)

// Entry/Exit Signals
tk_cross_bull = tenkanSen > kijunSen
tk_cross_bear = tenkanSen < kijunSen

price_below_tenkan = open < tenkanSen and close < tenkanSen
price_above_tenkan = open > tenkanSen and close > tenkanSen

price_below_kinjun = close < kijunSen
price_above_kinjun = close > kijunSen

tekan_above_kinjun = tenkanSen > kijunSen
tekan_below_kinjun = tenkanSen < kijunSen

ss_high = max(SenkouSpanA[displacement-1], SenkouSpanB[displacement-1])
ss_low = min(SenkouSpanA[displacement-1], SenkouSpanB[displacement-1])
price_inside_kumo = close > ss_high and close < ss_low

price_below_kumo = rc[1] < ro[1] and rc[0] < ro[0] and rc[1] < ss_low 
price_above_kumo = rc[1] > ro[1] and rc[0] > ro[0] and rc[1] > ss_high 

cs_cross_bull = mom(close, displacement-1) > 0
cs_cross_bear = mom(close, displacement-1) < 0

bullish = cs_cross_bull and not price_inside_kumo
bearish = cs_cross_bear and not price_inside_kumo



strategy.entry("Long", strategy.long, when=price_above_kumo and price_above_tenkan )
strategy.close("Long", when=price_below_tenkan )

strategy.entry("Short", strategy.short, when=price_below_kumo and price_below_tenkan )
strategy.close("Short", when=price_above_tenkan )

// longCondition = crossover(sma(close, 14), sma(close, 28))
// if (longCondition)
//     strategy.entry("My Long Entry Id", strategy.long)

// shortCondition = crossunder(sma(close, 14), sma(close, 28))
// if (shortCondition)
//     strategy.entry("My Short Entry Id", strategy.short)

Más.