Diese Strategie erzeugt Handelssignale basierend auf der Differenz zwischen zwei gleitenden Durchschnitten mit unterschiedlichen Zeitrahmen. Sie berechnet einen schnelleren SMA und einen langsameren SMA und erzeugt Kaufsignale, wenn der schnelle SMA von unten über den langsamen SMA überschreitet, und Verkaufssignale, wenn der schnelle SMA von oben unter den langsamen SMA überschreitet.
Die Kernlogik dieser Strategie besteht darin, zwei gleitende Durchschnitte, SMA ((len1) und SMA ((len2), und ihre Differenz zu berechnen. Hier repräsentiert len1 den Zeitraum des schnelleren MA und len2 den langsameren MA. Der schnellere MA reagiert schneller auf Preisänderungen, während der langsamere MA den langfristigen Trend besser widerspiegelt.
Wenn der schnellere MA über den langsameren MA von unten überschreitet, zeigt dies an, dass der kurzfristige Preis über den langfristigen Trend steigt und somit ein Long-Eintrag getätigt werden kann.
Um falsche Signale auszufiltern, verwendet die Strategie auch out3 als Handelssignallinie, die die glättete Differenz zwischen dem schnelleren MA und dem Preismittelpunkt darstellt.
Insbesondere hält die lange Variable positive Werte, wenn out3 über dif geht, was Kaufsignale gibt. Die kurze Variable hält negative Werte, wenn out3 unter dif geht, was Verkaufssignale erzeugt. Strategie.Eintrag lang, wenn langes Signal auftritt, und Strategie.Schließen schließt lang, wenn kurzes Signal auftritt.
Dies ist eine sehr einfache und intuitive Strategie, um Trends zu verfolgen. Es verwendet die Überschneidung von zwei MAs unterschiedlicher Perioden, um Trendumkehrpunkte zu identifizieren, die zuverlässiger sein können als ein einzelnes MA-System. Der Filter der Handelssignallinie hilft auch, falsche Signale in unruhigen Märkten zu einem gewissen Grad zu vermeiden.
Im Gegensatz zum Stop-Loss verfolgt es eine Trend-Folge-Mentalität, um Gewinne während längerer Trends zu maximieren, ohne ausgesetzt zu werden.
Diese Strategie hat nur wenige Parameter und ist leicht zu verstehen und einzustellen, was sie als Algo-Handelsstrategie für Anfänger eignet.
Das größte Risiko dieser Strategie ist die unsachgemäße Auswahl von MA-Perioden, die zu schlechten Signalen führen. Wenn len1 zu lang ist, werden frühe Trendbewegungen verpasst; wenn zu kurz, steigen die Whipsaws. Wenn len2 zu lang ist, werden Positionsanpassungen verzögert; wenn zu kurz, kann es durch Marktlärm gestört werden.
Die Parameter können optimiert werden, indem verschiedene len1 und len2 Werte ausprobiert werden, um die beste Kombination zu finden. Adaptive MA können auch getestet werden, um Perioden dynamisch zu ändern. Der Filter kann auch verbessert werden, um falsche Signale weiter zu reduzieren.
Trendfolgende Strategien sollten auch Verluste bei einzelnen Trades durch Stop-Loss oder Positionsgröße kontrollieren.
Die Dual-MA-Crossover-Strategie ist ein typischer Trend, der dem Vertreter folgt. Sein einfaches Dual-MA-Crossover-System liefert stetige Signale, während der Filter hilft, Lärm zu vermeiden. Mit optimierten MA-Perioden kann es eine gute Leistung erzielen. Die Strategie dient gut als Anfänger-Algo-Handelsstrategie zum Lernen.
/*backtest start: 2022-10-10 00:00:00 end: 2023-10-16 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //by afrazium //@version=3 strategy(title="SMA Diff strat", shorttitle="SMAD STR", overlay=false, initial_capital=1, precision=8, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.1, calc_on_order_fills= false, calc_on_every_tick=false, pyramiding=0) len1 = input(50, minval=1, title="Length1"), len2 = input(100, minval=1, title="Length2"), smo = input(1, minval=1, title="Smoothing") src = input(ohlc4, title="Source") mid = src expr1 = sma(src, len1), expr2 = sma(src, len2) dif = (expr1 - expr2), out1 = (mid - expr1), out2 = (mid - expr2), out3 = sma(out1, smo) long = crossover(out3, dif) ? out3 : na, short = crossunder(out3, dif) ? out3 : na plot(out3, color=black, linewidth=2), hline(0) clr = out2 >= out1 ? lime : red, plot(dif, color=clr, linewidth=2) plot(long, title = 'Crossover', color = green, style = circles, linewidth=4), plot(short, title = 'Crossunder', color = red, style = circles, linewidth=4) strategy.entry("buy", strategy.long, when=crossover(out1, dif)) strategy.close("buy", when=crossunder(out1, dif)) //plot(out2, color=blue, linewidth=2) //A = plot(mid/10, color=red, linewidth=1, transp=100), B = plot(mid/20, color=red, linewidth=1, transp=100) //C = plot(-mid/10, color=green, linewidth=1, transp=100), D = plot(-mid/20, color=green, linewidth=1, transp=100) //fill(A, B, color=red), fill(C, D, color=green)