Dies ist eine Trendfolgestrategie, die den Ichimoku Cloud-Indikator zur Trendidentifizierung und den RSI-Indikator zur Signalfilterung verwendet.
Die Strategie setzt hauptsächlich auf den Ichimoku-Cloud-Indikator, um die Trendrichtung zu bestimmen. Die Ichimoku-Cloud besteht aus der Konversionslinie, der Basislinie, der führenden Spanne 1, der führenden Spanne 2 und der Verzögerungsspanne.
Die Strategie prüft zunächst, ob der Preis durch die Wolkenlinien bricht. Ein Aufwärtstrend wird identifiziert, wenn die Verzögerungsspanne über die Wolke geht, während ein Abwärtstrend identifiziert wird, wenn die Verzögerungsspanne unter die Wolke geht. Nach Beginn des Trends verfolgt die Strategie die Beziehung des Preises zur Wolke, um die anhaltende Trendrichtung zu bestimmen. Der Aufwärtstrend bleibt intakt, wenn die Verzögerungsspanne über der Wolke liegt und umgekehrt.
Neben der Trendidentifizierung erzeugt die Strategie auch Kauf- und Verkaufssignale, wenn die Konversionslinie und die Basislinie ein goldenes Kreuz und ein Todeskreuz haben. Diese Handelssignale werden nur akzeptiert, wenn sie sich mit der Trendrichtung ausrichten. Zum Beispiel wird das goldene Kreuz zwischen Konversionslinie und Basislinie nur während eines Aufwärtstrends berücksichtigt.
Schließlich wird der RSI-Indikator verwendet, um die Handelssignale zu filtern. Nur Kaufsignale mit RSI unter dem Überverkaufsniveau und Verkaufssignale mit RSI über dem Überkaufsniveau werden akzeptiert. Dies hilft, falsche Ausbrüche zu einem gewissen Grad zu filtern.
Die nicht-offsettierte Ichimoku-Cloud kann Trendveränderungen rechtzeitig erkennen, ohne Umkehrmöglichkeiten zu verpassen.
Mehrere Bedingungen arbeiten zusammen, um falsche Ausbruchssignale effektiv auszufiltern
RSI verhindert unerwünschten Markteintritt bei Überkauf und Überverkauf
Die Strategie ist mit Blick auf zukünftige Daten optimiert und kann auch im Live-Handel gute Ergebnisse erzielen
Die Verwendung von zukünftigen Daten kann Fehler verursachen und erfordert Code-Optimierung vor Live-Handel
Die Ichimoku Cloud ist empfindlich auf Parameter und erfordert Parameter-Tuning für verschiedene Produkte
Bessere Ergebnisse beim Handel mit einem einzigen Produkt.
Viele Regeln für die Identifizierung von Trends erfordern angemessene Rückprüfungsperioden für die Validierung
Parameter können optimiert werden, um die beste Kombination zu finden. Kann den Handel mit bestimmten Produkten in Betracht ziehen oder Positionsgrößen reduzieren, um Risiken im Live-Handel zu kontrollieren. Stop-Loss-Strategien können auch eingeführt werden, um den Verlust pro Handel zu begrenzen.
Die Strategie kann in folgenden Bereichen weiter optimiert werden:
Optimieren Sie die Ichimoku Cloud-Parameter, um die besten Einstellungen für verschiedene Handelsprodukte zu finden
Hinzufügen von Stop-Loss-Strategien, um den Verlust pro Handel auf ein akzeptables Niveau zu begrenzen
Einführung von Positionsgrößenstrategien zur präzisen Steuerung des Gesamtrisikos
Mehr technische Indikatoren wie Volatilität und Volumen für eine umfassende Signalüberprüfung hinzufügen
Optimieren Sie Eingabeverfahren wie Bestätigungs- oder Pullback-Einträge für eine bessere Ausführung
Ausführung einer Vorwärtsoptimierung zur Bestimmung der optimalen Bollinger-Bands-Rückblicksperiode auf der Grundlage der Produktmerkmale
Zusammenfassend ist dies eine ziemlich robuste Trendfolgestrategie. Es verwendet die Ichimoku Cloud zur Trendidentifizierung und die Konversionslinie / Basislinie kreuzt für Handelssignale, gefiltert durch RSI. Es gibt noch viel Raum für Optimierung durch Parameter-Tuning, Stop-Loss, Positionsgröße usw. Die Logik ist klar und leicht zu verstehen. Es berücksichtigt sowohl Trend als auch Risiken. Dies ist eine Strategie, die es wert ist, im Live-Handel überprüft zu werden.
/*backtest start: 2022-10-31 00:00:00 end: 2023-02-20 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © KryptoNight //@version=4 // comment/uncomment Study/Strategy to easily switch modes // study("Ichimoku Kinko Hyo Cloud - no offset - no repaint - RSI filter - alerts", shorttitle="IchiCloud + RSI - alerts", overlay=true) // ============================================================================== Strategy mode - uncomment to activate strategy("Ichimoku Kinko Hyo Cloud - no offset - no repaint - RSI filter - strategy", shorttitle="IchiCloud + RSI - Strategy Tester Mode", overlay=true, pyramiding = 0, currency = currency.USD, initial_capital = 10000, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, calc_on_every_tick = true, calc_on_order_fills = true, commission_type = strategy.commission.percent, commission_value = 0.075) // ============================================================================== // ------------------------------------------------------------------------------ ichiCloud_offset = input(false, title="Standard Ichimoku Cloud") // with the visual offset ichiCloud_noOffset = input(true, title="Ichimoku Cloud - no offset - no repaint") // without the visual offset conversion_prd = input(9, minval=1, title="Conversion Line Period - Tenkan-Sen") baseline_prd = input(26, minval=1, title="Base Line Period - Kijun-Sen") baselineA_prd = input(52, minval=1, title="Base Line Period - Kijun-Sen (auxiliary)") leadingSpan_2prd = input(52, minval=1, title="Lagging Span 2 Periods - Senkou Span B") displacement = input(26, minval=0, title="Displacement: (-) Chikou Span; (+) Senkou Span A") extra_bars = input(1, minval=0, title="Displacement: additional bars") laggingSpan_src = input(close, title="Lagging Span price source - Chikou-Span") donchian(len) => avg(lowest(len), highest(len)) displ = displacement-extra_bars // ------------------------------------------------------------------------------ // OFFSET: conversion = donchian(conversion_prd) // Conversion Line - Tenkan-Sen (9 Period) baseline = donchian(baseline_prd) // Base Line - Kijun-Sen (26 Period) baselineA = donchian(baselineA_prd) // Base Line Period - Kijun-Sen (auxiliary) leadingSpanA = avg(conversion, baseline) leadingSpanB = donchian(leadingSpan_2prd) laggingSpan = laggingSpan_src // Color - bullish, bearish col_cloud = leadingSpanA>=leadingSpanB ? color.green : color.red // Cloud Lines spanA = plot(ichiCloud_offset? leadingSpanA : na, offset=displ, title="Offset: Lead Line 1 - Senkou Span A cloud", color=color.green) spanB = plot(ichiCloud_offset? leadingSpanB : na, offset=displ, title="Offset: Lead Line 2 - Senkou Span B cloud", color=color.red) fill(spanA, spanB, color=col_cloud, transp=80, title="Offset: Ichimoku Cloud - Leading Span 1 & 2 based coloring") // Other Lines conversion_p = plot(ichiCloud_offset? conversion : na, title="Offset: Conversion Line - Tenkan-Sen", color=#0496ff) standard_p = plot(ichiCloud_offset? baseline : na, title="Offset: Base Line - Kijun-Sen", color=#991515) standardA_p = plot(ichiCloud_offset? baselineA : na, title="Offset: Base Line - Kijun-Sen (auxiliary)", color=color.teal) lagging_Span_p = plot(ichiCloud_offset? laggingSpan : na, offset=-displ, title="Offset: Chikou Span (Lagging Span)", color=#459915) // ------------------------------------------------------------------------------ // NO OFFSET: conversion_noOffset = conversion[displ] // Conversion Line - Tenkan-Sen (9 Period) baseline_noOffset = baseline[displ] // Base Line - Kijun-Sen (26 Period) baselineA_noOffset = baselineA[displ] // Base Line Period - Kijun-Sen (auxiliary) leadingSpanA_noOffset = leadingSpanA[displ*2] leadingSpanB_noOffset = leadingSpanB[displ*2] laggingSpan_noOffset = laggingSpan[0] // Color - bullish, bearish col_cloud_noOffset = leadingSpanA_noOffset>=leadingSpanB_noOffset ? color.green : color.red // Cloud Lines spanA_noOffset = plot(ichiCloud_noOffset? leadingSpanA_noOffset : na, title="No offset: Lead Line 1 - Senkou Span A cloud", color=color.green, transp=0) spanB_noOffset = plot(ichiCloud_noOffset? leadingSpanB_noOffset : na, title="No offset: Lead Line 2 - Senkou Span B cloud", color=color.red, transp=0) fill(spanA_noOffset, spanB_noOffset, color=col_cloud_noOffset, transp=80, title="No offset: Ichimoku Cloud - Leading Span 1 & 2 based coloring") // Other Lines conversion_p_noOffset = plot(ichiCloud_noOffset? conversion_noOffset : na, title="No offset: Conversion Line - Tenkan-Sen", color=#0496ff, transp=0) baseline_p_noOffset = plot(ichiCloud_noOffset? baseline_noOffset : na, title="No offset: Base Line - Kijun-Sen", color=#991515, transp=0) baselineA_p_noOffset = plot(ichiCloud_noOffset? baselineA_noOffset : na, title="No offset: Base Line - Kijun-Sen (auxiliary)", color=color.teal, transp=0) laggingSpan_p_noOffset = plot(ichiCloud_noOffset? laggingSpan_noOffset : na, title="No offset: Chikou Span (Lagging Span)", color=#459915, transp=0) // ============================================================================== // Conditions & Alerts (based on the lines without offset) maxC = max(leadingSpanA_noOffset,leadingSpanB_noOffset) minC = min(leadingSpanA_noOffset,leadingSpanB_noOffset) // Trend start signals: crosses between Chikou Span (Lagging Span) and the Cloud (Senkou Span A, Senkou Span B) uptrend_start = crossover(laggingSpan_noOffset,maxC) downtrend_start = crossunder(laggingSpan_noOffset,minC) // Trends uptrend = laggingSpan_noOffset>maxC // Above Cloud downtrend = laggingSpan_noOffset<minC // Below Cloud // No trend: choppy trading - the price is in transition notrend = maxC>=laggingSpan_noOffset and laggingSpan_noOffset>=minC // Confirmations uptrend_confirm = crossover(leadingSpanA_noOffset,leadingSpanB_noOffset) downtrend_confirm = crossunder(leadingSpanA_noOffset,leadingSpanB_noOffset) // Signals - crosses between Conversion Line (Tenkan-Sen) and Base Line (Kijun-Sen) bullish_signal = crossover(conversion_noOffset,baseline_noOffset) bearish_signal = crossunder(conversion_noOffset,baseline_noOffset) // Various alerts alertcondition(uptrend_start, title="Uptrend Started", message="Uptrend Started") alertcondition(downtrend_start, title="Downtrend Started", message="Downtrend Started") alertcondition(uptrend_confirm, title="Uptrend Confirmed", message="Uptrend Confirmed") alertcondition(downtrend_confirm, title="Downtrend Confirmed", message="Downtrend Confirmed") alertcondition(bullish_signal, title="Buy Signal", message="Buy Signal") alertcondition(bearish_signal, title="Sell Signal", message="Sell Signal") rsi_OBlevel = input(50, title="RSI Filter: Overbought level (0 = off)") rsi_OSlevel = input(100,title="RSI Filter: Oversold level (100 = off)") rsi_len = input(14,title="RSI Length") rsi_src = input(close,title="RSI Price source") rsi = rsi(rsi_src,rsi_len) // Strategy ------------------------------- long_signal = bullish_signal and uptrend and rsi<=rsi_OSlevel // breakout filtered by the rsi exit_long = bearish_signal and uptrend short_signal = bearish_signal and downtrend and rsi>=rsi_OBlevel // breakout filtered by the rsi exit_short = bullish_signal and downtrend // Strategy alerts alertcondition(long_signal, title="Long Signal - Uptrend", message="Long Signal - Uptrend") alertcondition(exit_long, title="Long Exit Signal - Uptrend", message="Long Exit Signal - Uptrend") alertcondition(short_signal, title="Long Signal - Downtrend", message="Long Signal - Downtrend") alertcondition(exit_short, title="Short Exit Signal - Downtrend", message="Short Exit Signal - Downtrend") // Plot areas for trend and transition color_trend = uptrend? #00FF00 : downtrend? #FF0000 : notrend? color.new(#FFFFFF, 50) : na fill(spanA_noOffset, spanB_noOffset, color=color_trend, transp=90, title="No offset: Ichimoku Cloud - Lagging Span & Cloud based coloring") plotshape(ichiCloud_noOffset?uptrend_start:na, title="No offset: Uptrend Started", color=color.green, style=shape.circle, location=location.belowbar, size=size.tiny, text="Up") plotshape(ichiCloud_noOffset?downtrend_start:na, title="No offset: Downtrend Started", color=color.red, style=shape.circle,location=location.abovebar, size=size.tiny, text="Down") plotshape(ichiCloud_noOffset?uptrend_confirm:na, title="No offset: Uptrend Confirmed", color=color.green, style=shape.circle, location=location.belowbar, size=size.small, text="Confirm Up") plotshape(ichiCloud_noOffset?downtrend_confirm:na, title="No offset: Downtrend Confirmed", color=color.red, style=shape.circle, location=location.abovebar, size=size.small, text="Confirm Down") plotshape(ichiCloud_noOffset?long_signal:na, title="No offset: Long Signal", color=#00FF00, style=shape.triangleup, location=location.belowbar, size=size.small, text="Long") plotshape(ichiCloud_noOffset?exit_long:na, title="No offset: Exit Long Signal", color=color.fuchsia, style=shape.triangledown, location=location.abovebar, size=size.small, text="Exit long") plotshape(ichiCloud_noOffset?short_signal:na, title="No offset: Short Signal", color=#FF0000, style=shape.triangledown, location=location.abovebar, size=size.small, text="Short") plotshape(ichiCloud_noOffset?exit_short:na, title="No offset: Exit Short Signal", color=color.fuchsia, style=shape.triangleup, location=location.belowbar, size=size.small, text="Exit short") // ============================================================================== Strategy Component - uncomment to activate if (long_signal) strategy.entry("Long",strategy.long) if (exit_long) strategy.close("Long") if (short_signal) strategy.entry("Short",strategy.short) if (exit_short) strategy.close("Short") // ==============================================================================