Stratégie de trading quantitative basée sur le graphique en nuage Ichimoku


Date de création: 2024-01-12 14:20:43 Dernière modification: 2024-01-12 14:20:43
Copier: 0 Nombre de clics: 680
1
Suivre
1617
Abonnés

Stratégie de trading quantitative basée sur le graphique en nuage Ichimoku

Aperçu

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.

Principe de stratégie

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.

Analyse des forces stratégiques

  1. Les indicateurs basés sur le nuage d’Ichimoku permettent de capturer efficacement les tendances
  2. Le stop loss combiné avec l’indicateur ATR permet de maîtriser le risque
  3. Le système de suivi des pertes permet de bien verrouiller les bénéfices
  4. La logique de la stratégie est simple, claire, facile à comprendre et à vérifier.
  5. Paramétrisation, paramètres qui peuvent être ajustés en fonction des différents marchés

Analyse des risques

  1. Les diagrammes de nuages d’Ichimoku sont sensibles aux paramètres, et une configuration inappropriée peut entraîner des opportunités manquées ou des signaux erronés.
  2. Tracking Stop Loss peut être prématuré si le paramètre est trop grand
  3. Les actions fortes peuvent franchir la ligne de stop indiquée par l’indicateur ATR ou suivre la ligne de stop
  4. Les coûts de transaction ont aussi une influence sur la rentabilité.

Les solutions pour faire face aux risques:

  1. Optimiser les paramètres de l’image de nuage d’Ichimoku pour trouver le réglage le plus approprié
  2. Évaluer le stop loss de suivi raisonnable, ni trop ni trop peu
  3. La marge de freinage peut être allégée pour les actions fortes.
  4. Choisissez un courtier avec des frais de transaction peu élevés

Orientation de l’optimisation de la stratégie

  1. Filtrage des signaux en combinaison avec d’autres indicateurs techniques pour réduire les erreurs de transaction
  2. Optimisation des paramètres basée sur les données historiques / retrospectives
  3. Les paramètres de différentes variétés peuvent être optimisés séparément
  4. Il est possible d’envisager un ajustement dynamique du stop loss
  5. La fonctionnalité est conçue en combinaison avec des algorithmes pour créer des signaux de transaction plus fiables.

Résumer

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.

Code source de la stratégie
/*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)