Quant Trading Strategie auf Basis der Ichimoku Cloud

Schriftsteller:ChaoZhang, Datum: 2024-01-12 14:20:43
Tags:

img

Übersicht

Diese Strategie entwirft ein quantitatives Handelssystem, das auf dem Ichimoku Cloud-Indikator basiert, hauptsächlich für Vermögenswerte mit guten Trends.

Strategieprinzip

Die Ichimoku-Cloud besteht aus Konversionslinie, Basislinie, Leading-Span 1, Leading-Span 2 und Cloud-Charts. Die Handelssignale dieser Strategie stammen aus der Beziehung zwischen Preis und Cloud-Charts. Insbesondere wird ein Kaufsignal erzeugt, wenn der Preis über die Leading-Span 1 überschreitet. Ein Verkaufssignal wird erzeugt, wenn der Preis unter die Leading-Span 1 überschreitet. Darüber hinaus dient die Leading-Span 2 auch als Hilfsbewertungsindikator.

Diese Strategie setzt auch Stop-Loss und Take-Profit basierend auf dem ATR-Indikator. Der ATR-Indikator kann den Grad der Marktfluktuation effektiv erfassen. Der Stop-Loss ist auf das 2-fache des ATR und der Take-Profit auf das 4-fache des ATR festgelegt. Dies kann den einzelnen Verlust effektiv kontrollieren und einige Gewinne einfangen.

Schließlich setzt die Strategie einen Trailing-Stop-Loss-Mechanismus ein. Insbesondere für Long-Positionen verwendet sie das 2-fache des ATR als Callback-Amplitude, um die Stop-Loss-Linie in Echtzeit anzupassen, um Gewinne zu erzielen; für Short-Positionen verwendet sie das 2-fache des ATR als Callback-Amplitude, um die Stop-Loss-Linie in Echtzeit anzupassen, um Gewinne zu erzielen.

Analyse der Vorteile

  1. Basierend auf dem Ichimoku Cloud Chart Indikator, kann es effektiv Trends erfassen
  2. Mit ATR-basierten Stop Loss und Take Profit kann es Risiken kontrollieren
  3. Einführung eines Stop-Loss-Mechanismus, um die Gewinne zu sichern
  4. Die Strategie ist einfach und klar, leicht zu verstehen und zu überprüfen
  5. Parametrierung ist verfügbar, die Parameter können je nach verschiedenen Märkten angepasst werden

Risikoanalyse

  1. Ichimoku-Wolkenkarten sind sehr empfindlich gegenüber Parameter-Einstellungen, unsachgemäße Einstellungen können Handelsmöglichkeiten verpassen oder falsche Signale erzeugen
  2. Wenn die Amplitude des nachfolgenden Stoppverlustes zu groß eingestellt ist, kann ein vorzeitiger Stoppverlust auftreten
  3. Starke Aktien können die von dem ATR-Indikator angegebene Stop-Loss-Linie oder die Trailing-Stop-Loss-Linie durchbrechen
  4. Die Transaktionskosten werden sich auch auf die Rentabilität auswirken

Lösungen für entsprechende Risiken:

  1. Optimieren Sie die Parameter der Ichimoku-Cloud-Karten, um die am besten geeigneten Einstellungen zu finden
  2. Bewertet die angemessene Amplitude des Stop-Loss, weder zu groß noch zu klein
  3. Bei starken Aktien sollte der Stop-Loss-Bereich angemessen gelockert werden.
  4. Wählen Sie Makler mit niedrigen Provisionen

Optimierungsrichtlinien

  1. Kombination anderer technischer Indikatoren zur Signalfilterung zur Verringerung falscher Trades
  2. Optimierung der Parameter auf der Grundlage historischer Daten/Backtests
  3. Parameter für verschiedene Sorten können separat optimiert werden
  4. Überlegen Sie, ob Sie die Amplitude des Stoppverlustes dynamisch anpassen
  5. Kombination von Algorithmen, um Feature Engineering durchzuführen, um zuverlässigere Handelssignale zu erstellen

Zusammenfassung

Im Allgemeinen ist diese Strategie eine stabile Trendverfolgungsstrategie. Beurteilen Sie die Trendrichtung basierend auf dem Ichimoku-Cloud-Indikator; setzen Sie Stop-Loss und nehmen Sie Gewinn mit dem ATR-Indikator; verwenden Sie Trailing-Stop-Loss, um Gewinne zu erzielen. Die Vorteile sind einfach logisch, leicht zu verstehen; Einzelverlust kann kontrolliert werden; Trend kann effektiv verfolgt werden. Es gibt aber auch einige Risiken, dass Parameterempfindlichkeit und Stop-Loss durchbrochen werden. Durch die kontinuierliche Optimierung von Parametern und der Strategie selbst kann eine bessere Leistung erzielt werden.


/*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)


Mehr