
A estratégia baseia-se no Índice de Gráfico da Nuvem de Ichimoku, um sistema de negociação quantitativa projetado principalmente para ativos com boa tendência. A estratégia combina funções como stop loss, stop loss e tracking stop loss, com o objetivo de obter um lucro estável.
O gráfico da nuvem Ichimoku é composto por uma linha de conversão, uma linha de referência, uma linha de frente 1, uma linha de frente 2 e um gráfico da nuvem. Os sinais de negociação para esta estratégia vêm da relação entre o preço e o gráfico da nuvem.
Esta estratégia também estabelece um stop loss e um stop loss baseado no indicador ATR. O indicador ATR pode efetivamente capturar a volatilidade do mercado. O stop loss é 2 vezes o ATR e o stop loss é 4 vezes o ATR. Isso pode efetivamente controlar perdas individuais e bloquear parte dos lucros.
Finalmente, a estratégia usa um mecanismo de rastreamento de stop loss. Concretamente, para fazer pedidos em excesso, será usado o dobro do ATR como retração, ajustando a linha de stop loss em tempo real para bloquear o lucro; Para fazer pedidos em branco, será usado o dobro do ATR como retração, ajustando a linha de stop loss em tempo real para bloquear o lucro.
A solução para o risco:
Esta estratégia é, em geral, uma estratégia de acompanhamento de tendências estável. A orientação da tendência é baseada nos indicadores do gráfico da nuvem Ichimoku; O indicador ATR define o stop loss; O lucro é bloqueado com o stop loss.
/*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)