Estrategia de negociación cuántica basada en la nube Ichimoku

El autor:¿ Qué pasa?, Fecha: 2024-01-12 14:20:43
Las etiquetas:

img

Resumen general

Esta estrategia diseña un sistema de negociación cuantitativo basado en el indicador Ichimoku Cloud, principalmente para activos con buenas tendencias.

Principio de la estrategia

La nube Ichimoku se compone de una línea de conversión, una línea base, un intervalo de liderazgo 1, un intervalo de liderazgo 2 y gráficos de nube. Las señales de negociación de esta estrategia provienen de la relación entre el precio y los gráficos de la nube.

Esta estrategia también establece stop loss y take profit basados en el indicador ATR. El indicador ATR puede capturar efectivamente el grado de fluctuación del mercado. La stop loss se establece en 2 veces el ATR, y la take profit se establece en 4 veces el ATR. Esto puede controlar efectivamente la pérdida única y bloquear algunas ganancias.

Por último, la estrategia adopta un mecanismo de stop loss de seguimiento. Específicamente, para las posiciones largas, utilizará 2 veces el ATR como la amplitud de callback para ajustar la línea de stop loss en tiempo real para bloquear las ganancias; para las posiciones cortas, utilizará 2 veces el ATR como la amplitud de callback para ajustar la línea de stop loss en tiempo real para bloquear las ganancias.

Análisis de ventajas

  1. Basado en el indicador de gráfico de nubes de Ichimoku, puede capturar efectivamente las tendencias
  2. Con el stop loss y take profit basado en ATR, puede controlar los riesgos
  3. Adopte el mecanismo de stop loss para asegurar las ganancias
  4. La lógica de la estrategia es simple y clara, fácil de entender y verificar
  5. la parametrización está disponible, los parámetros se pueden ajustar de acuerdo con diferentes mercados

Análisis de riesgos

  1. Los mapas de la nube de Ichimoku son muy sensibles a la configuración de parámetros, configuraciones incorrectas pueden perder oportunidades comerciales o generar señales incorrectas
  2. Si la amplitud de la pérdida de detención posterior se establece demasiado grande, la pérdida de detención puede producirse prematuramente
  3. Las acciones fuertes pueden romper la línea de stop loss o la línea de stop loss posterior dada por el indicador ATR.
  4. Los costes de transacción también tendrán cierto impacto en la rentabilidad

Soluciones a los riesgos correspondientes:

  1. Optimice los parámetros de los mapas de la nube de Ichimoku para encontrar la configuración más adecuada
  2. Evaluar la amplitud razonable de la pérdida de parada de tracción, ni demasiado grande ni demasiado pequeña
  3. Para las acciones fuertes, relajar adecuadamente el intervalo de stop loss
  4. Elige corredores con comisiones bajas

Direcciones de optimización

  1. Combinar otros indicadores técnicos para el filtrado de señales para reducir las operaciones erróneas
  2. Optimizar los parámetros basados en datos históricos/probas de retroceso
  3. Los parámetros para las diferentes variedades se pueden optimizar por separado
  4. Considere ajustar dinámicamente la amplitud de la pérdida de parada
  5. Combinar algoritmos para hacer ingeniería de características para construir señales comerciales más confiables

Resumen de las actividades

En general, esta estrategia es una estrategia de seguimiento de tendencia estable. Juzga la dirección de la tendencia basada en el indicador de la nube Ichimoku; establece stop loss y toma ganancias utilizando el indicador ATR; usa stop loss de seguimiento para bloquear ganancias. Las ventajas son lógicas simples, fáciles de entender; se puede controlar una sola pérdida; se puede rastrear la tendencia de manera efectiva. Pero también hay algunos riesgos de que se rompa la sensibilidad de los parámetros y la pérdida de stop. Al optimizar continuamente los parámetros y la estrategia en sí, se puede obtener un mejor rendimiento.


/*backtest
start: 2023-01-05 00:00:00
end: 2024-01-11 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Ichimoku Cloud Strategy with SL, TP, and Trailing Stop", overlay=true)

conversionPeriods = input(9, "Conversion Line Length")
basePeriods = input(26, "Base Line Length")
laggingSpan2Periods = input(52, "Leading Span B Length")
displacement = input(26, "Lagging Span")
atrLength = input(14, title="ATR Length")

donchian(len) => math.avg(ta.lowest(len), ta.highest(len))
conversionLine = donchian(conversionPeriods)
baseLine = donchian(basePeriods)
leadLine1 = math.avg(conversionLine, baseLine)
leadLine2 = donchian(laggingSpan2Periods)

// Plot the Ichimoku Cloud components
plot(conversionLine, color=color.blue, title="Conversion Line")
plot(baseLine, color=color.red, title="Base Line")
plot(leadLine1, color=color.green, title="Leading Span A")
plot(leadLine2, color=color.orange, title="Leading Span B")
plot(leadLine1 > leadLine2 ? leadLine1 : leadLine2, color=color.green, title="Kumo Cloud Upper Line")
plot(leadLine1 < leadLine2 ? leadLine1 : leadLine2, color=color.red, title="Kumo Cloud Lower Line")

// ATR for stop loss and take profit
atrValue = ta.atr(atrLength)
stopLoss = atrValue * 2
takeProfit = atrValue * 4

// Strategy entry and exit conditions
longCondition = ta.crossover(close, leadLine1) and close > leadLine2
shortCondition = ta.crossunder(close, leadLine1) and close < leadLine2

// Plot buy and sell signals
plotshape(series=longCondition ? leadLine1 : na, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(series=shortCondition ? leadLine1 : na, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)

// Execute strategy orders with stop loss and take profit
strategy.entry("Buy", strategy.long, when=longCondition)
strategy.close("Buy", when=shortCondition) // Close buy position when sell condition is met
strategy.entry("Sell", strategy.short, when=shortCondition)
strategy.close("Sell", when=longCondition) // Close sell position when buy condition is met

// Trailing stop
strategy.cancel("Trailing Stop")
var float trailingStopPrice = na
if (longCondition)
    trailingStopPrice := math.max(trailingStopPrice, close - atrValue * 2)
    strategy.exit("Trailing Stop", from_entry="Buy", trail_offset=atrValue * 2, trail_price=trailingStopPrice)
else if (shortCondition)
    trailingStopPrice := math.min(trailingStopPrice, close + atrValue * 2)
    strategy.exit("Trailing Stop", from_entry="Sell", trail_offset=atrValue * 2, trail_price=trailingStopPrice)


Más.