Ichimoku bewegliche Durchschnitts-Crossover-Strategie

Schriftsteller:ChaoZhang, Datum: 2023-12-19 15:40:53
Tags:

img

Übersicht

Die Ichimoku Moving Average Crossover Strategie identifiziert lange und kurze Signale durch Berechnung einer Reihe von gleitenden Durchschnitten und Erkennung von Kurskreuzen.

Strategie Logik

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.

Vorteile

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.

Risiken

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.

Möglichkeiten zur Verbesserung

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.

Schlussfolgerung

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

Mehr