Diese Strategie erzeugt Handelssignale, indem sie verschiedene Arten von gleitenden Durchschnitten (Simple Moving Average SMA, Exponential Moving Average EMA, Hull Moving Average HMA und Weighted Moving Average VWMA) berechnet und Kreuzungspunkte zwischen ihnen erkennt, um den Markttrend zu bestimmen und ihm zu folgen.
Die Kernidee dieser Strategie besteht darin, den Markttrend zu beurteilen, indem zwei gleitende Durchschnitte verglichen werden. Insbesondere ermöglicht es die Konfiguration von zwei MA mit verschiedenen Arten und Längen durch Eingabeparameter. Der erste MA hat einen längeren Zeitraum, um den Haupttrend darzustellen, während der zweite MA einen kürzeren Zeitraum für den aktuellen kurzfristigen Trend hat.
Wenn der kurzfristige MA den langfristigen MA von unten überschreitet, signalisiert er, dass sich der kurzfristige Trend stärkt und der Markt in einen Aufwärtstrend eintritt. Daher wird an diesem Übergangspunkt ein Kaufsignal generiert. Umgekehrt, wenn der kurzfristige MA unter den langfristigen MA überschreitet, deutet er darauf hin, dass der kurzfristige Trend schwächt und der Markt nach unten umkehrt. Entsprechend wird dann ein Verkaufssignal generiert.
Durch die Erkennung solcher MA-Kreuzungen folgt diese Strategie dem Markttrend für den Handel.
Lösungen:
Diese Strategie basiert auf der klassischen Idee, MA-Crossover für die Erkennung von großen Trends zu verwenden. Mit flexiblen MA-Kombinationen ist sie einfach zu implementieren und für die algorithmische Handelsautomation geeignet.
/*backtest start: 2023-12-31 00:00:00 end: 2024-01-30 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 //study(title="MA Crossover Strategy", overlay = true) strategy("MA Crossover Strategy", overlay=true) src = input(close, title="Source") price = request.security(syminfo.tickerid, timeframe.period, src) ma1 = input(25, title="1st MA Length") type1 = input("HMA", "1st MA Type", options=["SMA", "EMA", "HMA", "VWMA"]) ma2 = input(7, title="2nd MA Length") type2 = input("HMA", "2nd MA Type", options=["SMA", "EMA", "HMA", "VWMA"]) f_hma(_src, _length)=> _return = wma((2*wma(_src, _length/2))-wma(_src, _length), round(sqrt(_length))) price1 = if (type1 == "SMA") sma(price, ma1) else if (type1 == "EMA") ema(price, ma1) else if (type1 == "VWMA") vwma(price, ma1) else f_hma(price, ma1) price2 = if (type2 == "SMA") sma(price, ma2) else if (type2 == "EMA") ema(price, ma2) else if (type2 == "VWMA") vwma(price, ma2) else f_hma(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) longCondition = crossover(price1, price2) if (longCondition) strategy.entry("Long", strategy.long) shortCondition = crossunder(price1, price2) if (shortCondition) strategy.entry("Short", strategy.short)