Die Ichimoku Moving Average Crossover Strategie identifiziert lange und kurze Signale durch Berechnung einer Reihe von gleitenden Durchschnitten und Erkennung von Kurskreuzen.
Die Ichimoku-Strategie verwendet ein spezialisiertes System, das aus 5 gleitenden Durchschnittslinien besteht, nämlich die Konversionslinie, die Basislinie, den führenden Span 1, den führenden Span 2 und den zurückliegenden Span. Insbesondere zeigt die Konversionslinie die jüngste Kursdynamik, die Basislinie zeigt den mittelfristigen bis langfristigen Trend, die führenden Linien kombinieren die Konversion und die Basis, um zukünftige Bewegungen vorherzusagen, und die zurückliegende Span zeigt vergangene Preise als Referenz an. Handelssignale werden generiert, wenn der Preis durch die Basislinie bricht. Die Strategie enthält auch Körperfilter und Kerzenstangenfarben, um falsche Pausen zu vermeiden.
Die Ichimoku-Strategie vereint die Stärken verschiedener technischer Indikatoren in ein System. Sie verschmilzt Konzepte von gleitenden Durchschnitten, Preiskanälen, Volumenbestätigung usw. und bildet eine systematische Methodik. Dies gewährleistet die Genauigkeit und Richtbarkeit der Handelssignale. Im Vergleich zu Single-Indicator-Strategien reduziert sie falsche Signale erheblich und erhöht die Gewinnfaktoren.
Ichimoku-Strategie ist ein Trendfolgensystem mit relativ langen Handelsintervallen. Dies bedeutet, dass kurzfristige Kursschwankungen nicht erfasst werden können. Auch gleitende Durchschnitte scheitern, wenn die Preise heftig schwanken. Solche Situationen können zu falschen Signalen und Verlusten führen. Es ist ratsam, Stops zu verwenden, um Risiken zu kontrollieren.
Die Ichimoku-Strategie kann in folgenden Bereichen verbessert werden: 1) Anpassung der Durchschnittsparameter für verschiedene Zeiträume und Produkte; 2) Einbeziehung von Volumenindikatoren zur Bestätigung von Preis-Volumen-Beziehungen; 3) Einführung von Machine-Learning-Modellen zur Verfeinerung der Signaldetermination; 4) Hinzufügung von mehr Filtern zur Verringerung der falschen Handelswahrscheinlichkeit.
Die stabile und zuverlässige Ichimoku Moving Average Crossover Strategie eignet sich als Kernstrategie in Kombination mit anderen Algorithmen.
/*backtest start: 2023-11-18 00:00:00 end: 2023-12-18 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2018 //@version=3 strategy(title = "Noro's Ichimoku Strategy v1.0", shorttitle = "Ichimoku str 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0) //Settings needlong = input(true, defval = true, title = "Long") needshort = input(true, defval = true, title = "Short") conversionPeriods = input(9, minval = 1, title = "Conversion Periods") basePeriods = input(26, minval = 1, title = "Base Periods") laggingSpan2Periods = input(52, minval = 1, title = "Lagging Span") usebf = input(true, defval = true, title = "Use body filter") usecf = input(true, defval = true, title = "Use color filter") fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year") toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year") frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month") tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month") fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day") today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day") //Ichimoku donchian(len) => avg(lowest(len), highest(len)) conversionLine = donchian(conversionPeriods) baseLine = donchian(basePeriods) leadLine1 = avg(conversionLine, baseLine) leadLine2 = donchian(laggingSpan2Periods) //Lines plot(conversionLine, color=red, title="Conversion Line") plot(baseLine, color=blue, title="Base Line") plot(close, offset = -basePeriods, color=green, title="Lagging Span") p1 = plot(leadLine1, offset = basePeriods, color=green, title="Lead 1") p2 = plot(leadLine2, offset = basePeriods, color=red, title="Lead 2") fill(p1, p2) //Body Filter nbody = abs(close - open) abody = sma(nbody, 10) body = nbody > abody / 3 or usebf == false //Color Filter bar = close > open ? 1 : close < open ? -1 : 0 gb = bar == 1 or usecf == false rb = bar == -1 or usecf == false //Signals up = low > baseLine and rb and body dn = high < baseLine and gb and body //Trading if up //if strategy.position_size < 0 // strategy.close_all() strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if dn //if strategy.position_size > 0 // strategy.close_all() strategy.entry("Short", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if time > timestamp(toyear, tomonth, today, 23, 59) strategy.close_all()