Diese Strategie wählt dynamisch verschiedene Arten von gleitenden Durchschnitten über mehrere Zeitrahmen aus, um Handelssignale zu generieren.
Die Strategie ermöglicht die Auswahl aus SMA, EMA, TEMA, WMA und HMA gleitenden Durchschnitten, mit anpassbaren Periodenlängen.
Insbesondere definiert die Strategie zunächst den Backtest-Zeitraum anhand von Eingabeparametern und berechnet dann fünf Arten gleitender Durchschnitte:
Der entsprechende gleitende Durchschnitt wird auf der Grundlage der Auswahl gezeichnet.
Durch die Kombination verschiedener Arten von gleitenden Durchschnitten kann die Strategie Preisdaten glätten und Marktlärm filtern, um zuverlässigere Handelssignale zu generieren.
Die Risiken können verringert werden, indem
Die Strategie kann in mehreren Aspekten verbessert werden:
Hinzufügen anderer Filter für stabilere Signale
z. B. Volumenindikatoren, um falsche Ausbrüche ohne Volumenbestätigung zu vermeiden.
Optimierung der Ein- und Ausstiegslogik
Preiskanäle festlegen und Verluste stoppen, um unnötige Verluste zu reduzieren.
Dynamische gleitende Durchschnittsperioden
Bei starken Trends länger und bei Konsolidierungen kürzer.
Verbesserung des Geldmanagements
Anpassung der Positionsgrößen anhand von Abzügen und Gewinngewinnung.
Die Strategie kombiniert verschiedene gleitende Durchschnitte über Zeitrahmen hinweg, um relativ stabile Trendfolgenwirkungen zu generieren.
/*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 )