Diese Strategie verwendet mehrere Ichimoku Cloud-Signale, um eine reine Trendfolgestrategie zu entwerfen, die darauf abzielt, mittelfristige bis langfristige Trends zu erfassen, Konsolidierungen auszufiltern und starke Trendrichtungen zu folgen.
Diese Strategie verwendet hauptsächlich Tenkan-sen, Kijun-sen, Chikou-Span und andere Schlüsselindikatoren aus der Ichimoku-Cloud.
Zusammenfassend ist die Kernlogik: Bestätigen Sie den mittelfristigen Trend -> Warten Sie auf starke Trendwiederholungssignale -> Betreten Sie den Trend -> Verlassen Sie den Trend mit einem Stop-Loss.
Um den mittelfristigen Trend zu bestimmen, verwendet es die Beziehung zwischen dem führenden und dem zurückbleibenden Span (über dem führenden grünen Span, der den Aufwärtstrend signalisiert und umgekehrt).
Dies filtert kurz- bis mittelfristige Konsolidierungen aus und ermöglicht es, starke Trends für eine konsequente Überleistung an den Märkten zu erfassen.
(1) Die Verwendung der Ichimoku-Cloud zur Bestimmung der mittelfristigen und langfristigen Trendrichtung ist für die Bestimmung der wichtigsten Richtungskante von Vorteil.
(2) Tenkan-sen/Kijun-sen-Kreuzungen und Veränderungen des Preisverhältnisses mit der Cloud ermöglichen es, Konsolidierungen effektiv auszufiltern und starke Trends frühzeitig zu erfassen.
(3) Der Trailing Stop Loss Exit Mechanismus ermöglicht es, große Trends zu bewältigen und gleichzeitig isolierte Verluste effektiv zu kontrollieren.
(4) Durch die Kombination verschiedener Ichimoku-Signale entsteht ein robustes System, das Trends reibungslos verfolgt.
(1) Systemrisiko einer falschen Identifizierung eines größeren Trends: Wenn der größere Trend falsch diagnostiziert wird, sind alle nachfolgenden Maßnahmen mit einem falschen Richtungsrisiko verbunden.
(2) Risiko durch schlecht gewählten Eintrittszeitpunkt: Unangemessene Eintrittszeitpunkte führen zu negativen Preisschwankungen.
(3) Risiko durch zu enge Stopps: Extreme Kursbewegungen können zu unvorhergesehenen Verlusten führen.
(4) Hohe Handelsfrequenz führt zu übermäßigen Transaktionskosten.
(1) Versuche verschiedene Kombinationen von Ichimoku-Eingabeperioden, um optimale Parameter zu finden.
(2) Optimierung der Eingangsfilter, um eine hohe Qualität der Eingaben zu gewährleisten.
(3) Anpassen der Stoppdistanz, um das Risiko-Gewinn-Verhältnis auszugleichen.
(4) Zusätzliche Gewinnziele auf der Grundlage von Preis-Schlüssel-Indikator-Distanzen, um adaptive Gewinnnahme-Mechanismen zu schaffen.
Diese Ichimoku Cloud Trend Following Strategie synthetisiert mehrere Ichimoku-Signale, um Trends, Zeiteinträge und Trail Stops zu diagnostizieren.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("Ichimoku trendfollowing", overlay=true, initial_capital=1000, commission_type=strategy.commission.cash_per_order, commission_value=0.04, slippage=2) //*************************** // INPUT BACKTEST RANGE * //*************************** FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12) FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) FromYear = input(defval = 2010, title = "From Year", minval = 2000) ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12) ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31) ToYear = input(defval = 9999, title = "To Year", minval = 2000) start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window window() => true //*************** //* ICHIMOKU * //*************** //inizializzazione parametri,, tenkanPeriods = input(9, minval=1, title="Tenkan-Sen") kinjunPeriods = input(26, minval=1, title="Kinjun-Sen") senkouSpanBPeriods = input(52, minval=1, title="Senkou Span B") displacement = input(26, minval=1, title="-ChinkouSpan/+SenkouSpan A") //definizione Tenkan-Sen (9 Period), Kinjun-Sen (26 Period), Chinkou Span (Lagging Line) averageHighLow(period) => avg(lowest(period), highest(period)) tenkan= averageHighLow(tenkanPeriods) kinjun = averageHighLow(kinjunPeriods) senkouSpanA = avg(tenkan, kinjun) senkouSpanB = averageHighLow(senkouSpanBPeriods) //definisco il colore della kumo in base al trend. senkouSpan1Above = senkouSpanA >= senkouSpanB ? 1 : na senkouSpan2Below = senkouSpanA <= senkouSpanB ? 1 : na span1plotU = senkouSpan1Above ? senkouSpanA : na span2plotU = senkouSpan1Above ? senkouSpanB : na span1plotD = senkouSpan2Below ? senkouSpanA : na span2plotD = senkouSpan2Below ? senkouSpanB : na col = senkouSpanA >= senkouSpanB ? lime : red //plots Ichimoku plot(tenkan, title = 'Tenkan-Sen', linewidth=1, color=blue) plot(kinjun, title = 'Kinjun-Sen', linewidth=1, color=red) plot(close, title = 'Chinkou Span', linewidth=1, offset = -displacement, color=aqua) plot( senkouSpanA, title = 'Senkou Span A', style=line, linewidth=1, offset = displacement, color=lime) plot(senkouSpanB, title = 'Senkou Span B', style=line, linewidth=1, offset = displacement, color=red) //Cloud Lines Plot p1 = plot(span1plotU ? span1plotU : na, title = 'Senkou Span A Above Senkou Span B', style=linebr, linewidth=1, offset = displacement, color=col) p2 = plot(span2plotU ? span2plotU : na, title = 'Senkou Span B (52 Period) Below Span A Cloud', style=linebr, linewidth=1, offset = displacement, color=col) p3 = plot(span1plotD ? span1plotD : na, title = 'Senkou Span A (26 Period) Below Span B Cloud', style=linebr, linewidth=1, offset = displacement, color=col) p4 = plot(span2plotD ? span2plotD : na, title = 'Senkou Span B (52 Period) Above Span A Cloud', style=linebr, linewidth=1, offset = displacement, color=col) //Fills that color cloud based on Trend. fill(p1, p2, color=lime, transp=70, title='Kumo (Cloud)') fill(p3, p4, color=red, transp=70, title='Kumo (Cloud)') //*********************************************** //* condizioni ingresso ed uscita mercato * //*********************************************** isKumoRialzista = senkouSpanA >= senkouSpanB ? true : false isSopraKumo = (close > max(senkouSpanA[displacement], senkouSpanB[displacement])) isSottoKumo = (close < min(senkouSpanA[displacement], senkouSpanB[displacement])) isChinkouSpanSopra = high[displacement]<close isChinkouSpanSotto = low[displacement]>close filtroLong=isSopraKumo and isChinkouSpanSopra filtroShort=isSottoKumo and isChinkouSpanSotto //rimbalzato su kijun quando i prezzi stavano ritracciando e il trend era già in atto(tenkan >kijun x entrare long isPullBackLijunEntryLong = kinjun<tenkan and low<kinjun and (close>kinjun) isPullBackLijunEntryShort =kinjun>tenkan and high>kinjun and (close<kinjun) //Breackout Kumo isBreackoutKumoEntryLong = crossover(close, max(senkouSpanA[displacement], senkouSpanB[displacement])) and (close>tenkan) and (close>kinjun) isBreackoutKumoEntryShort = crossunder(close, min(senkouSpanA[displacement], senkouSpanB[displacement])) and (close<tenkan) and (close<kinjun) ConditionEntryLong = (isPullBackLijunEntryLong or isBreackoutKumoEntryLong ) and filtroLong ConditionEntryShort = (isPullBackLijunEntryShort or isBreackoutKumoEntryLong ) and filtroShort isExitLong = close<kinjun isExitShort = close>kinjun //ingressi ed uscite Mercato strategy.entry ("Long",long=true, when = window() and ConditionEntryLong) strategy.entry ("Short",long=false, when = window() and ConditionEntryShort) strategy.close(id="Long", when=isExitLong) strategy.close(id="Short", when=isExitShort) strategy.close_all(when=not window())