Ichimoku-Wolken-Trend folgt der Strategie

Schriftsteller:ChaoZhang, Datum: 2024-02-01 11:34:23
Tags:

img

I. Strategiebezeichnung: Ichimoku Cloud Trend nach Strategie

II. Überblick über die Strategie

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.

III. Strategieprinzip

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.

IV. Vorteile

(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.

V. Risiken

(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.

VI. Erweiterungsbereiche

(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.

VII. Schlussfolgerung

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())


Mehr