
Die Dreifach-SMA-Strategie ist eine Strategie, bei der Trends und Eingänge anhand von einfachen Moving Averages aus drei verschiedenen Perioden beurteilt werden. Sie kann Trends automatisch verfolgen und Positionen aufbauen, indem sie Rückschlüsse in Trends nutzen.
Die Strategie nutzt drei unterschiedliche Perioden von SMAs als Hauptindikator für Trends, darunter 200-, 400- und 600-Perioden von SMAs. Der Preis wird als Aufwärtstrend beurteilt, wenn er oberhalb der drei SMAs liegt, umgekehrt als Aufwärtstrend.
Die Strategie kombiniert die Verwendung eines Close-Preises und eines StochClose-Oszillators als Indikator für die Eingänge. Es wird nur signalisiert, wenn der Preis mit der Richtung des Triple SMA übereinstimmt. Der StochClose-Indikator wird verwendet, um zu bestimmen, ob ein Über- oder Überverkauf vorliegt.
Der Stop-Loss-Standard ist ein Stop-Loss, wenn der Preis den niedrigsten SMA erreicht.
Die Strategie kann mit maximal 10 Aufschlägen eingesetzt werden. Es gibt drei verschiedene Stop-Points: 1%, 2% und 6%.
Der größte Vorteil der Triple-SMA-Strategie besteht darin, dass die Richtung und Stärke des Trends durch die Kombination von drei verschiedenen SMA-Perioden besser beurteilt werden kann. Es hat eine stärkere Fähigkeit, falsche Signale zu filtern als ein einzelner SMA.
In Kombination mit dem Stoch-Close-Indikator, um zu beurteilen, ob ein Überkauf oder Überverkauf stattfindet, kann es vermieden werden, in der Nähe eines Trendwendepunktes zu treten, was zu einer Verringerung der Anzahl falscher Einträge führt.
Die Stop-Standard ist einfach und unmittelbar, wobei der langsamste SMA als Stop-Line verwendet wird, um ein zu frühzeitiges Stoppen zu vermeiden.
Die Zulassung von Gewinne ermöglicht es der Strategie, Trends kontinuierlich zu verfolgen und zu profitieren.
Das Hauptrisiko dieser Strategie besteht darin, dass die drei SMAs nicht unbedingt alle Falschsignale vollständig filtern können, und es kann zu Verlusten kommen, wenn nach einem Preisbruch keine Trendwende mehr gebildet wird. Dies geschieht in der Regel in der Nähe von wichtigen Unterstützungsresistenzen.
Darüber hinaus kann der StochClose-Indikator selbst falsche Signale erzeugen, was zu unangemessenen Einträgen führt. Dies geschieht in der Regel in Zeiten von Preisschwankungen.
Um diese Risiken zu verringern, kann die Periodizität des SMA angepasst werden; oder andere Indikatoren für die Kombinationsbeurteilung, wie KDJ, MACD usw., können hinzugefügt werden, um die Qualität des eingehenden Signals sicherzustellen.
Diese Strategie kann in folgenden Bereichen optimiert werden:
Erhöhung oder Anpassung der Anzahl der SMA-Zyklen, um die für die jeweilige Sorte geeigneten Zyklusparameter zu finden
Hinzufügen anderer Indikatoren für die Kombinationsbeurteilung, wie KDJ, MACD usw., um die Qualität der Einträge zu verbessern
Optimierung der Stop-Loss-Standards, um sie besser an die Schwankungsbreite des Marktes anzupassen
Optimierung der Anzahl und des Anteils der Akquisitionen, um die geeignetste Akquisitionsstrategie zu finden
Verschiedene Sorten-Parameter testen, um die Strategie-Parameter für mehr Sorten umfassend zu nutzen
Die Dreifach-SMA-Strategie ist insgesamt eine sehr praktische Trend-Tracking-Strategie. Durch die Kombination von drei unterschiedlichen SMA-Perioden und StochClose-Indikatoren erzielt sie eine bessere Trend-Ermittlung und vermeidet Fehlsignale. Gleichzeitig wird eine angemessene Aufstockung erlaubt, so dass die Trends stets in den Profit eingebunden sind.
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(title="Tripla Sma with entries based on sma price closes ", shorttitle="TRIPLE SMA STRATEGY", overlay=true) ////resolution=""
len = input(200, minval=1, title="sma 1 length")
len1 = input(400, minval=1, title="sma 2 length")
len2 = input(600, minval=1, title="sma 3 length")
src = input(close, title="Source")
////////////////////////////////////////////
smma = 0.0
smma := na(smma[1]) ? sma(src, len) : (smma[1] * (len - 1) + src) / len
up = smma > smma [1]
down =smma < smma[1]
mycolor = up ? #64b5f6 : down ? #d32f2f : na
fastma = sma(hl2, 1)
fastplot = plot(fastma, color=#000000, transp=100, title='sma on candle')
slowplot = plot(smma, color=mycolor, transp=55, title='sma1')
////////////////////////////////////////////
smma1 = 0.0
smma1 := na(smma1[1]) ? sma(src, len1) : (smma1[1] * (len1 - 1) + src) / len1
up2 = smma1 > smma1 [1]
down2 =smma1 < smma1[1]
mycolor2 = up2 ? #64b5f6 : down2 ? #d32f2f : na
slowplot2 = plot(smma1, color=mycolor2, transp=45, title='sma2')
////////////////////////////////////////////
smma2 = 0.0
smma2 := na(smma2[1]) ? sma(src, len2) : (smma2[1] * (len2 - 1) + src) / len2
up3 = smma2 > smma2 [1]
down3 =smma2 < smma2[1]
mycolor3 = up3 ? #64b5f6 : down3 ? #d32f2f : na
slowplot3 = plot(smma2, color=mycolor3, transp=35, title='sma3')
////////////////////////////////////////////////////////////////////////////////////////
//Fill gaps
fillData = smma > fastma
fillData2 = smma < fastma
fillDtat = smma1 > smma
fillDtat2 = smma1 < smma
fillDat = smma2 > smma1
fillDat2 = smma2 < smma1
fillCol1 = fillData ? #ef5350 : fillData2 ? #64b5f6 : na
fillCol2 = fillDtat ? #ef5350 : fillDtat2 ? #64b5f6 : na
fillCol3 = fillDat ? #ef5350 : fillDat2 ? #64b5f6 : na
fill(slowplot, fastplot, color=fillCol1, transp=90, title="sma1 fill")
fill(slowplot, slowplot2, color=fillCol2, transp=80, title="sma2 fill")
fill(slowplot2, slowplot3, color=fillCol3, transp=60, title="sma3 fill")
uc = (close > smma) and (close > smma1)
dc = (close < smma) and (close < smma1)
barColor = uc ? #64b5f6 : dc ? #e91e63 : #b2b5be
barcolor(color=barColor)
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//StochClose from @trendinvestpro
periods = input(50, minval=1, title="length for the oscillator")
smooth = input(5, minval=1, title="oscillator smoothing")
hhc=highest(close,periods)
llc=lowest(close,periods)
StochClose = sma((close-llc)/(hhc-llc)*100, smooth)
shortline = input(95, minval=0, title="signal when oscillator crosses above")
longline = input(5, minval=0, title="signal when oscillator crosses below")
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
longs = close > smma2
shorts = close < smma2
long = longs == true and crossunder(StochClose, longline)
short = shorts == true and crossover(StochClose, shortline)
stoplong = close < smma and close < smma1 and close < smma2
stopshort = close > smma and close > smma1 and close > smma2
p1 = strategy.position_avg_price / 100 / syminfo.mintick
maxx = input(2500, title="max orders filled on a day", minval=0)
takeprofit1 = input(1, title="take profit level 1", minval=0)
takeprofit2 = input(2, title="take profit level 2", minval=0)
takeprofit3 = input(6, title="take profit level 3", minval=0)
takeprofitqt1 = input(30, title="take profit quantity first", minval=0)
takeprofitqt2 = input(30, title="take profit quantity second", minval=0)
takeprofitqt3 = input(30, title="take profit quantity third", minval=0)
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////Strategy entries/////////////////////////////////////////////////////////////////////////////////////////
// strategy.risk.max_intraday_filled_orders(maxx)
strategy.entry("long", strategy.long, when=long)
strategy.exit("tpl1", "long", qty_percent = takeprofitqt1, profit = takeprofit1 * p1)
strategy.exit("tpl2", "long", qty_percent = takeprofitqt2, profit = takeprofit2 * p1)
strategy.exit("tpl3", "long", qty_percent = takeprofitqt3, profit = takeprofit3 * p1)
strategy.close("long", when=stoplong == true)
strategy.entry("short", strategy.short, when=short)
strategy.exit("tpl1", "short", qty_percent = takeprofitqt1, profit = takeprofit1 * p1)
strategy.exit("tpl2", "short", qty_percent = takeprofitqt2, profit = takeprofit2 * p1)
strategy.exit("tpl3", "short", qty_percent = takeprofitqt3, profit = takeprofit3 * p1)
strategy.close("short", when=stopshort == true)