Die Dual Moving Average Crossover Strategie ist eine typische Trendfolgestrategie. Sie berechnet zwei gleitende Durchschnitte mit unterschiedlichen Perioden und verwendet deren Crossover als Handelssignale, um die Richtung und Dynamik der Markttrends zu erfassen.
Die Strategie basiert hauptsächlich auf zwei gleitenden Durchschnitten. Der erste gleitende Durchschnitt hat eine kürzere Periode und kann schneller auf Preisänderungen reagieren. Der zweite gleitende Durchschnitt hat eine längere Periode und kann etwas Rauschen filtern. Wenn der kurzfristige gleitende Durchschnitt über den langfristigen gleitenden Durchschnitt überschreitet, gilt er als Kaufsignal. Wenn der kurzfristige gleitende Durchschnitt unter dem langfristigen gleitenden Durchschnitt überschreitet, gilt er als Verkaufssignal.
Insbesondere berechnet diese Strategie einen 10-Perioden exponentiellen gleitenden Durchschnitt (Preis1) und einen 20-Perioden exponentiellen gleitenden Durchschnitt (Preis2). Wenn die Eröffnungs- und Schlusskosten der aktuellen Bar beide höher als die beiden gleitenden Durchschnitte sind, wird ein Kaufsignal generiert. Wenn die Eröffnungs- und Schlusskosten beide niedriger als die beiden gleitenden Durchschnitte sind, wird ein Verkaufssignal generiert.
Dieses Design ermöglicht einen früheren Eintrag, wenn sich ein Trend zu bilden beginnt und dem Trend folgt.
Die Strategie ist relativ einfach und praktisch und erfasst Trends mit Dual-MA-Crossover, was sie zu einer grundlegenden Quant-Strategie macht.
/*backtest start: 2022-11-14 00:00:00 end: 2023-11-20 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 //study(title="MA River CC v1", overlay = true) strategy("MA River CC v1", overlay=true) src = input(close, title="Source") price = request.security(syminfo.tickerid, timeframe.period, src) ma1 = input(10, title="1st MA Length") type1 = input("EMA", "1st MA Type", options=["SMA", "EMA"]) ma2 = input(20, title="2nd MA Length") type2 = input("EMA", "2nd MA Type", options=["SMA", "EMA"]) price1 = if (type1 == "SMA") sma(price, ma1) else ema(price, ma1) price2 = if (type2 == "SMA") sma(price, ma2) else ema(price, ma2) //plot(series=price, style=line, title="Price", color=black, linewidth=1, transp=0) plot(series=price1, style=line, title="1st MA", color=blue, linewidth=2, transp=0) plot(series=price2, style=line, title="2nd MA", color=green, linewidth=2, transp=0) buy_entry = (open>price1 and open>price2) and (close>price1 and close>price2) sell_entry = (open<price1 and open<price2) and (close<price1 and close<price2) buy_close = sell_entry sell_close = buy_entry //longCondition = crossover(price1, price2) if(buy_entry) strategy.entry("Long", strategy.long) if(sell_entry) strategy.entry("Short", strategy.short) strategy.close("Long" , when=buy_close) strategy.close("Short",when=sell_close)