
Cette stratégie est basée sur l’indicateur de diagramme de l’Ichimoku Cloud et a conçu un système de trading quantifié, principalement pour les actifs qui ont une bonne tendance. La stratégie intègre des fonctions telles que le stop loss, le stop loss et le suivi du stop loss, dans le but de réaliser un profit stable.
Le diagramme Ichimoku est composé de la ligne de conversion, de la ligne de référence, de la ligne de front 1, de la ligne de front 2 et du diagramme de la nuée. Les signaux de négociation de cette stratégie proviennent de la relation entre le prix et le diagramme de la nuée.
La stratégie définit également des arrêts et des arrêts de perte basés sur l’indicateur ATR. L’indicateur ATR permet de capturer efficacement la volatilité du marché. Le stop loss est 2 fois l’ATR et le stop stop est 4 fois l’ATR.
Enfin, cette stratégie utilise un mécanisme de suivi des arrêts. En particulier, pour les ordres en surplus, le double de l’ATR est utilisé comme rétractation, afin d’ajuster en temps réel la ligne de stop-loss pour verrouiller les bénéfices; pour les ordres en libre-service, le double de l’ATR est utilisé comme rétractation, afin d’ajuster en temps réel la ligne de stop-loss pour verrouiller les bénéfices.
Les solutions pour faire face aux risques:
Cette stratégie est généralement une stratégie de suivi de tendance stable. La direction de la tendance est déterminée par les indicateurs du diagramme de l’Ichimoku. Le paramètre ATR est utilisé pour définir les arrêts de perte. Le suivi des arrêts de perte est utilisé pour bloquer les bénéfices.
/*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)