Cette stratégie conçoit un système de trading quantitatif basé sur l'indicateur Ichimoku Cloud, principalement pour les actifs ayant de bonnes tendances.
Le nuage Ichimoku se compose de la ligne de conversion, de la ligne de base, de la portée principale 1, de la portée principale 2 et des graphiques en nuage. Les signaux de trading de cette stratégie proviennent de la relation entre le prix et les graphiques en nuage. Plus précisément, un signal d'achat est généré lorsque le prix dépasse la portée principale 1; un signal de vente est généré lorsque le prix dépasse la portée principale 1.
Cette stratégie définit également un stop loss et un take profit basé sur l'indicateur ATR. L'indicateur ATR peut capturer efficacement le degré de fluctuation du marché. Le stop loss est défini à 2 fois l'ATR et le take profit est défini à 4 fois l'ATR. Cela peut contrôler efficacement une seule perte et verrouiller certains profits.
Enfin, la stratégie adopte un mécanisme d'arrêt de perte de suivi. Plus précisément, pour les positions longues, elle utilisera 2 fois l'ATR comme amplitude de rappel pour ajuster la ligne d'arrêt de perte en temps réel pour verrouiller les bénéfices; pour les positions courtes, elle utilisera 2 fois l'ATR comme amplitude de rappel pour ajuster la ligne d'arrêt de perte en temps réel pour verrouiller les bénéfices.
Solution aux risques correspondants:
En général, cette stratégie est une stratégie de suivi de tendance stable. Jugez la direction de la tendance en fonction de l'indicateur de nuage Ichimoku; définissez un stop loss et prenez un profit en utilisant l'indicateur ATR; utilisez un stop loss de suivi pour verrouiller les profits. Les avantages sont de logique simple, facile à comprendre; une seule perte peut être contrôlée; la tendance peut être suivie efficacement. Mais il existe également certains risques de sensibilité des paramètres et de rupture du stop loss. En optimisant continuellement les paramètres et la stratégie elle-même, une meilleure performance peut être obtenue.
/*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)