
Esta estrategia, basada en el indicador de gráficos en la nube de Ichimoku, diseña un sistema de comercio cuantitativo, principalmente para activos con una buena tendencia. La estrategia combina funciones como stop loss, stop loss y tracking stop loss, con el objetivo de lograr un beneficio estable.
El gráfico de la nube de Ichimoku está formado por la línea de conversión, la línea de referencia, la línea de frontera 1, la línea de frontera 2 y el gráfico de la nube. Las señales de transacción de esta estrategia provienen de la relación entre el precio y el gráfico de la nube. En concreto, se produce una señal de compra cuando el precio sube cruzando la línea de frontera 1 y se produce una señal de venta cuando el precio baja cruzando la línea de frontera 1. Además, la línea de frontera 2 también sirve como un indicador auxiliar de juicio.
Esta estrategia también establece paradas y paradas de pérdidas basadas en el indicador ATR. El indicador ATR puede capturar eficazmente la volatilidad del mercado. El parón es 2 veces el ATR y el parón es 4 veces el ATR. Esto puede controlar eficazmente las pérdidas individuales y bloquear parte de las ganancias.
Finalmente, la estrategia utiliza un mecanismo de seguimiento de los estancamientos. En concreto, para hacer más órdenes, se utiliza el doble de ATR como retroceso y se ajusta la línea de detención en tiempo real para bloquear los beneficios; para hacer órdenes aéreas, se utiliza el doble de ATR como retroceso y se ajusta la línea de detención en tiempo real para bloquear los beneficios.
Resolvemos el riesgo:
En general, esta estrategia es una estrategia de seguimiento de tendencias estable. La dirección de la tendencia se basa en los indicadores de la gráfica en la nube de Ichimoku; el uso de los indicadores ATR para establecer paradas de pérdidas; La adopción de paradas de seguimiento para bloquear ganancias.
/*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)