Ichimoku Kumo Wendungsstrategie

Schriftsteller:ChaoZhang, Datum: 2023-10-27 16:36:59
Tags:

img

Übersicht

Die Ichimoku Kumo Twist Strategie nutzt die Konversionslinie, die Basislinie und die führenden Spanlinien des Ichimoku-Indikators, um Handelssignale als Trendfolgestrategie zu konstruieren. Sie identifiziert kurzfristige und mittelfristige Trendumkehrpunkte, indem sie nach Wendungen in den Ichimoku-Wolken Ausschau hält, um niedrigere Risiko-Breakout-Punkte und Überkauf/Überverkaufsmöglichkeiten zu finden. Die Strategie kann sowohl für den Intraday-Handel als auch für den mehrwöchigen Zwischenhandel verwendet werden.

Strategie Logik

Die Strategie verwendet hauptsächlich drei Ichimoku-Linien die Konversionslinie, die Basislinie und die führende Spanne 1, zusammen mit den hohen und niedrigen Preisen der Kerzen, um die oberen und unteren Wolkengrenzen zu berechnen. Die Konversionslinie berechnet den Mittelpunkt des Höchst- und Tiefpunkts der letzten 9 Kerzen und repräsentiert den kurzfristigen Durchschnitt. Die Basislinie berechnet den Mittelpunkt des Höchst- und Tiefpunkts der letzten 26 Kerzen als langfristigen Durchschnitt. Die führende Spanne 1 ist der Durchschnitt der Konversions- und Basislinien. Die führende Spanne 2 ist der Mittelpunktpreis der letzten 52 Kerzen.

Kaufsignale werden erzeugt, wenn die führende Spanne 1 über die führende Spanne 2 kreuzt, während Verkaufssignale erzeugt werden, wenn die führende Spanne 1 unter die führende Spanne 2 kreuzt. Die Handelsstrategie verfolgt einfach die bullischen und bärischen Kreuzungen der kurz- und mittelfristigen Mittel, um Trendänderungen zu erfassen.

Analyse der Vorteile

  • Die Ichimoku Cloud Twist Strategie kombiniert sowohl kurzfristige als auch mittelfristige Trends, die effektiv Trendumkehrpunkte erkennen können.

  • Mittelreversionsbasierte Strategien haben eine gewisse Verzögerung, um Lärm zu filtern.

  • Die Nutzung der Wolken zur Messung der Trendstärke ermöglicht bessere Ein- und Ausgänge.

  • Keine Parameteroptimierung erforderlich - die Standard-Ichimoku-Parameter funktionieren gut.

Risikoanalyse

  • Ichimoku hat ziemlich komplexe Innenräume und ist nicht sehr empfindlich gegenüber Parametertweaks, die eine Überoptimierung erschweren.

  • Es kann mehrere falsche Signale während der Bereichsgebundenen Märkte geben.

  • Abweichungen zwischen den kurz- und mittelfristigen Trends können zu Strategieproblemen führen.

  • Stop-Loss ist unerlässlich, um das Risiko zu kontrollieren, sonst sind große Rücknahmen möglich.

Möglichkeiten zur Verbesserung

  • Versuche verschiedene Kombinationen von Umwandlung und Ausgangszeiträumen, um ein optimales Gleichgewicht zu finden.

  • Fügen Sie Filter mit anderen Indikatoren hinzu, um zu vermeiden, dass Signale in ungünstigen Formationen aufgenommen werden.

  • Einbeziehen Sie Stop-Loss-Strategien wie dynamische oder Trailing-Stops.

  • Optimierung der Positionsgröße anhand der Marktbedingungen.

  • Für realistischere Ergebnisse werden Handelsprovisionen in Backtests hinzugefügt.

Zusammenfassung

Insgesamt ist die Ichimoku Cloud Twist-Strategie eine moderate Trend-Folge-Strategie. Sie kann effektiv Trendwende identifizieren und Positionen in Übereinstimmung mit der Trendrichtung einnehmen. Für den langfristigen Einsatz ist jedoch eine Überwachung erforderlich und strenge Risikokontrollen sind erforderlich. Kontinuierliche Verbesserungen bei Parameter-Tuning, Eingangsfiltern, Stop-Loss-Mechaniken und mehr können die Stabilität und Rentabilität dieser Strategie weiter verbessern.


/*backtest
start: 2022-10-20 00:00:00
end: 2023-10-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title="Ichimoku Kumo Twist Strategy (Presets)", shorttitle="Kumo Twist Strategy", overlay=true)

xlowest_(src, len) =>
    x = src
    for i = 1 to len - 1
        v = src[i]
        if (na(v))
            break
        x := min(x, v)
    x

xlowest(src, len) =>
    na(src[len]) ? xlowest_(src, len) : lowest(src, len)

xhighest_(src, len) =>
    x = src
    for i = 1 to len - 1
        v = src[i]
        if (na(v))
            break
        x := max(x, v)
    x

xhighest(src, len) =>
    na(src[len]) ? xhighest_(src, len) : highest(src, len)

dropn(src, n) =>
    na(src[n]) ? na : src

ichiConversionPeriods(presets) =>
    if presets == "Crypto Doubled"
        20
    else
        if presets == "Crypto Singled"
            10
        else
            if presets == "Standard Doubled"
                18
            else
                9

ichiBasePeriods(presets) =>
    if presets == "Crypto Doubled"
        60
    else
        if presets == "Crypto Singled"
            30
        else
            if presets == "Standard Doubled"
                52
            else
                26

ichiLaggingSpan2Periods(presets) =>
    if presets == "Crypto Doubled"
        120
    else
        if presets == "Crypto Singled"
            60
        else
            if presets == "Standard Doubled"
                104
            else
                52

ichiDisplacement(presets) =>
    if presets == "Crypto Doubled"
        30
    else
        if presets == "Crypto Singled"
            30
        else
            if presets == "Standard Doubled"
                26
            else
                26

scaling = input(title="Scaling", options=["Linear", "Log"], defval="Linear")
presets = input(title="Presets",  options=["Crypto Doubled", "Crypto Singled", "Standard Doubled", "Standard Singled"], defval="Crypto Doubled")
dropCandles = input(1, minval=0, title="Drop first N candles")
showClouds = input(false, "Show Clouds")
stoploss = input(true, title="Stop Loss")

conversionPeriods = ichiConversionPeriods(presets)
basePeriods = ichiBasePeriods(presets)
laggingSpan2Periods = ichiLaggingSpan2Periods(presets)
displacement = ichiDisplacement(presets)
logScaling = scaling == "Log"

lows = dropn(low, dropCandles)
highs = dropn(high, dropCandles)

lowsp = logScaling ? log(lows) : lows
highsp = logScaling ? log(highs) : highs

donchian(len) =>
    avg(xlowest(lowsp, len), xhighest(highsp, len))

conversionLine = donchian(conversionPeriods)
baseLine = donchian(basePeriods)
leadLine1 = avg(conversionLine, baseLine)
leadLine2 = donchian(laggingSpan2Periods)

golong = crossover(leadLine1, leadLine2)
goshort = crossunder(leadLine1, leadLine2)

strategy.entry("Buy", strategy.long, when=golong, stop=(stoploss ? high+syminfo.mintick : na))
strategy.entry("Sell", strategy.short, when=goshort, stop=(stoploss ? low-syminfo.mintick : na))

conversionLinep = logScaling ? exp(conversionLine) : conversionLine
baseLinep = logScaling ? exp(baseLine) : baseLine
leadLine1p = logScaling ? exp(leadLine1) : leadLine1
leadLine2p = logScaling ? exp(leadLine2) : leadLine2

plot(showClouds ? conversionLinep : na, color=#0496ff, title="Conversion Line")
plot(showClouds ? baseLinep : na, color=#991515, title="Base Line")

p1 = plot(showClouds ? leadLine1p : na, offset = displacement, color=green, title="Lead 1")
p2 = plot(showClouds ? leadLine2p : na, offset = displacement, color=red, title="Lead 2")
fill(p1, p2, color = showClouds ? (leadLine1p > leadLine2p ? green : red) : na)


Mehr