
Diese Strategie ermöglicht die Erzeugung von Handelssignalen durch die dynamische Auswahl verschiedener Arten von Moving Averages, die in Kombination mit mehreren Zeiträumen erzeugt werden.
Die Strategie erlaubt die Auswahl der fünf Moving Average-Indikatoren SMA, EMA, TEMA, WMA und HMA und setzt die Periodengröße der Mittelwertlinie fest. Die Strategie zeichnet verschiedene Arten von Mittelwerten nach der gewählten Dynamik. Wenn der Schlusskurs steigt, brechen Sie die Mittelwertlinie; wenn der Schlusskurs fällt, brechen Sie die Mittelwertlinie.
Insbesondere definiert die Strategie zunächst den Rückmesszyklus anhand der Eingabeparameter. Dann werden fünf Mittelwertindikatoren berechnet:
Entsprechend der Auswahl wird eine entsprechende Mittellinie gezeichnet. Wenn der Schlusskurs über der Mittellinie liegt, wird mehr gemacht; wenn der Schlusskurs unter der Mittellinie liegt, wird leer gemacht.
Die Strategie erzeugt ein zuverlässiges Handelssignal, indem sie die Verwendung verschiedener Arten von Mittellinien in Kombination mit Preisdaten ausgleicht, Marktlärm filtert und die Längen der Mittellinien-Zyklen anpasst, um Trends in verschiedenen Zyklen zu handeln.
Das Risiko kann durch Optimierung der folgenden Aspekte verringert werden:
Die Strategie kann in folgenden Richtungen optimiert werden:
Zum Beispiel kann ein Quantitätsindikator hinzugefügt werden, der nur dann ein Handelssignal erzeugt, wenn die Transaktionsmenge größer ist, um einige falsche Durchbrüche zu filtern.
Es kann ein Kanal eingerichtet werden, der nur dann betreten wird, wenn der Preis den Kanal durchbricht. Es kann eine Stop-Loss-Linie eingerichtet werden, die nach dem Berühren der Stop-Loss-Linie platziert wird. Dies kann unnötige Verluste verringern.
Die Perioden können je nach Marktentwicklung angepasst werden, wobei die langfristigen Mittelwerte bei deutlicheren Trends und die kurzfristigen Mittelwerte bei der Bilanzierung verwendet werden.
Die Positionsgröße kann je nach Auszahlung angepasst werden, die Position kann bei Auszahlung reduziert und bei Gewinnung moderat erhöht werden.
Durch die Kombination mehrerer Gleichgewichtsindikatoren in Kombination mit mehreren Zeitzyklen erzeugt die Strategie eine relativ stabile Trend-Tracking-Effekt. Die Strategie hat einen großen Optimierungsraum und kann in Bezug auf Einstiegs-Filter, Ausstiegsmethoden und Parameteroptimierungen verbessert werden, so dass die Strategie in der Realität bessere Ergebnisse erzielt.
/*backtest
start: 2022-10-20 00:00:00
end: 2023-10-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy("MA_strategy ", shorttitle="MA_strategy", overlay=true, initial_capital=100000)
qty = input(100000000, "Buy quantity")
testStartYear = input(2017, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testStartHour = input(0, "Backtest Start Hour")
testStartMin = input(0, "Backtest Start Minute")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,testStartHour,testStartMin)
testStopYear = input(2099, "Backtest Stop Year")
testStopMonth = input(1, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)
testPeriodBackground = input(title="Color Background?", type=bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)
testPeriod() =>
time >= testPeriodStart and time <= testPeriodStop ? true : false
ma1 = input( "SMA",title="Select MA", options=["SMA", "EMA","TEMA", "WMA","HMA"])
len1 = input(7, minval=1, title="Period")
s=sma(close,len1)
e=ema(close,len1)
xEMA1 = ema(close, len1)
xEMA2 = ema(xEMA1, len1)
xEMA3 = ema(xEMA2, len1)
t = 3 * xEMA1 - 3 * xEMA2 + xEMA3
f_hma(_src, _length)=>
_return = wma((2 * wma(_src, _length / 2)) - wma(_src, _length), round(sqrt(_length)))
h = f_hma(close, len1)
w = wma(close, len1)
ma = ma1 == "SMA"?s:ma1=="EMA"?e:ma1=="WMA"?w:ma1=="HMA"?h:ma1=="TEMA"?t:na
buy= close>ma
sell= close<ma
alertcondition(buy, title='buy', message='buy')
alertcondition(sell, title='sell', message='sell')
ordersize=floor(strategy.equity/close)
if testPeriod()
strategy.entry("long",strategy.long,ordersize,when=buy)
strategy.close("long", when = sell )