Stratégie de négociation quantitative basée sur le Cloud Ichimoku

Auteur:ChaoZhang est là., Date: 2024-01-12 14:20:43 Je vous en prie.
Les étiquettes:

img

Résumé

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.

Principe de stratégie

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.

Analyse des avantages

  1. Basé sur l'indicateur du graphique des nuages Ichimoku, il peut capturer efficacement les tendances
  2. Avec le stop loss et le profit basé sur ATR, il peut contrôler les risques
  3. Adopter un mécanisme de stop-loss de trailing pour bien sécuriser les bénéfices
  4. La logique de la stratégie est simple et claire, facile à comprendre et à vérifier
  5. la paramétrisation est disponible, les paramètres peuvent être ajustés en fonction des différents marchés

Analyse des risques

  1. Les cartes de nuages Ichimoku sont très sensibles aux paramètres, les paramètres incorrects peuvent manquer des opportunités de trading ou générer de mauvais signaux
  2. Si l'amplitude de la perte d'arrêt est trop élevée, la perte d'arrêt peut se produire prématurément
  3. Les stocks forts peuvent franchir la ligne de stop-loss ou la ligne de stop-loss suivante donnée par l'indicateur ATR.
  4. Les coûts de transaction auront également une certaine incidence sur la rentabilité

Solution aux risques correspondants:

  1. Optimiser les paramètres des cartes de nuages Ichimoku pour trouver les paramètres les plus appropriés
  2. Évaluer l'amplitude raisonnable de la perte de freinage, ni trop grande ni trop petite
  3. Pour les actions fortes, assouplir de manière appropriée la fourchette de stop loss
  4. Choisissez des courtiers à faible commission

Directions d'optimisation

  1. Combiner d'autres indicateurs techniques pour le filtrage des signaux afin de réduire les transactions erronées
  2. Optimiser les paramètres basés sur des données historiques/un backtest
  3. Les paramètres pour les différentes variétés peuvent être optimisés séparément
  4. Considérez la possibilité d'ajuster dynamiquement l'amplitude de la perte d'arrêt
  5. Combiner des algorithmes pour faire de l'ingénierie de fonctionnalités pour créer des signaux de trading plus fiables

Résumé

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)


Plus de