Die Gradual Moving Average Trend Following Strategy verwendet mehrere gleitende Durchschnitte verschiedener Zeiträume, um Preistrendänderungen zu erfassen, kombiniert mit Oszillatoranzeigen, um Überkauf- und Überverkaufsgebiete zu bestimmen, um einen Trend zu niedrigen Käufen und hohen Verkäufen nach der Handelsstrategie zu bilden.
Die Strategie verwendet mehrere Sätze von gleitenden Durchschnitten, wie 18-, 26-, 36-Perioden-MAs, um Preistrends zu erfassen. Wenn kürzere MAs über längere MAs kreuzen, signalisiert sie einen Aufwärtstrend, also geht es lang. Wenn kürzere MAs unter längere MAs kreuzen, zeigt sie einen Abwärtstrend an, also geht es kurz.
In der Zwischenzeit werden Oszillatorindikatoren wie MACD, RSI, EFI verwendet, um überkaufte und überverkaufte Bedingungen zu identifizieren. Zum Beispiel bedeutet ein Wechsel von MACD von negativ zu positiv, dass man lang geht, während ein Wechsel von positiv zu negativ kurz geht. Ein Rückzug des RSI von hohen Niveaus ist ein Signal für ein Shorting, während ein Rebound von niedrigen Niveaus ein Signal für ein Longing ist.
Eintrittsregeln:
Lang: Kurz-MA-Crossover nach oben Langer MA UND MACD>0 UND RSI erholt sich von Tiefstständen UND EFI<0
Kurz: Kurzer MA-Crossover nach unten Länger MA UND MACD<0 UND RSI zieht sich von Höchstwerten UND EFI>0 zurück
Stop-Loss-Regeln:
Langes SL: EFI über dem Schwellenwert UND Preissenkungen unterhalb der angegebenen MA
Kurz SL: EFI unterhalb der Schwelle UND Preiserhöhungen über der angegebenen MA
Mehrere Marktbewertungen erfassen wichtige Trendwechselpunkte.
Oszillatorkombinationen vermeiden das Verfolgen von Höchstwerten und den Verkauf von Tiefwerten.
Die SL-Regeln berücksichtigen sowohl Trends als auch Cashflows und kontrollieren so die Risiken wirksam.
Optimierte Parameter durch umfangreiches Backtesting, anpassungsfähig an die meisten Marktumgebungen.
Durchschnittliche Handelsfrequenz, stabile Signale, geeignet für die langfristige Trendverfolgung.
Plötzliche Abstürze können SL-Range verhindern, SL sollte erweitert werden.
Zu viele Signale während der Rangierungsmärkte, Parameter sollten angepasst werden.
Zu lange Halten kann Verluste verstärken, kürzere MAs können schneller SL nehmen.
Backtest-Überanpassung, echte Handelsergebnisse warten auf Validierung.
Optimierung der Parameter für höhere Renditen und geeignete Frequenz.
Hinzufügen von Algorithmen für maschinelles Lernen zur dynamischen Optimierung von Parametern.
Aufbau eines anpassungsfähigen SL-Mechanismus auf der Grundlage unterschiedlicher Marktbedingungen.
Fügen Sie mehr Filter hinzu, um bessere Eintrittssignale zu bestimmen.
Einbeziehung von Positionsgrößenstrategien zur Kontrolle der Größe der einzelnen Einsätze.
Die Gradual Moving Average Trend Following Strategy verfolgt die wichtigsten Trends effektiv, indem sie die Trendrichtung mit mehreren MAs identifiziert und auf gefilterte Signale eingeht, wodurch stabile Gewinne durch langfristiges Halten erzielt werden.
/*backtest start: 2023-09-25 00:00:00 end: 2023-10-25 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © murdocksilva //@version=5 strategy("Daily_Mid Term_Consulting BOLT") //calculo longuitud longuitud = input(58, title= "longitud_sma") px = ta.sma(close, 1) px2 = ta.sma(low, 1) Length1 = input.int(18) Length2 = input.int(18) Length3 = input.int(26) Length4 = input.int(36) Length5 = input.int(78) Length6 = input.int(1) Length7 = input.int(1500) Length8 = input.int(58) Length9 = input.int(3000) Length10 = input.int(2) Length11 = input.int(14) ma1 = ta.sma(low, Length1) ma2 = ta.sma(high, Length2) ma3 = ta.sma(close, Length3) ma4 = ta.sma(close, Length4) ma5 = ta.sma(close, Length5) ma6 = ta.sma(close, Length6) ma7 = ta.sma(close, Length7) ma8 = ta.sma(close, Length8) ma9 = ta.sma(close, Length9) ma10 = ta.sma(close, Length10) ma11 = ta.sma(close, Length11) // calculo EFI efi = (close[1]-close) * volume / 1000 efi_indicador = (efi[1] + efi) / 2 //Variable RSI - calculo desv estandar b = (px-ma10)*(px-ma10) b2 = (px[1]-ma10[1])*(px[1]-ma10[1]) c = b + b2 c2 = c / 2 desv = math.sqrt(c2)/10 //calculo MACD macd = ma4 - ma5 //calculo RSI rsi = ta.rsi(close, 9) // calculo Divergencia ma = ta.sma(close, longuitud) dist = close - ma porcentaje = dist * 100 / close ma_dista = ta.sma(porcentaje, 333) //condición de entrada y salida long long = ma1[1] < ma1 and ma2[1] < ma2 and macd > 0 and px > ma3 and efi_indicador < 9 and px > ma7 and macd[1] < macd clong = efi_indicador > 22000 and px < ma8 strategy.entry("BUY", strategy.long, when = long) strategy.close("BUY", when = clong) //condición de entrada y salida short short = ma1[1] > ma1 and ma2[1] > ma2 and macd < 0 and px < ma3 and efi_indicador > 9 and macd[1] > macd cshort = efi_indicador < 14000 and px > ma8 and ma11 > desv strategy.entry("SELL", strategy.short, when = short) strategy.close("SELL", when = cshort) //SL Y TP //strategy.exit("long exit", "Daily_Mid Term_Consulting BOLT", profit = close * 40 / syminfo.mintick, loss = close * 0.02 / syminfo.mintick) //strategy.exit("shot exit", "Daily_Mid Term_Consulting BOLT", profit = close * 40 / syminfo.mintick, loss = close * 0.02 / syminfo.mintick) // GRAFICA smas plot(ma1, color=color.new(color.orange, 0)) plot(ma2, color=color.new(color.orange, 0)) plot(ma3, color=color.new(color.orange, 0)) plot(ma4, color=color.new(color.orange, 0)) plot(ma5, color=color.new(color.orange, 0)) plot(ma6, color=color.new(color.green, 0)) plot(ma7, color=color.new(color.orange, 0)) plot(ma8, color=color.new(color.orange, 0)) plot(ma9, color=color.new(color.orange, 0)) //GRAFICA MACD plot(macd, color=color.new(color.red, 0), style = plot.style_columns) //GRAFICA DIVERGENCIA plot(porcentaje, style = plot.style_columns) //GRAFICA MA DIVERGENCIA plot(ma_dista, color=color.new(color.white, 0)) //GRAFICA MA DIVERGENCIA plot(desv, color=color.new(color.blue, 0)) //GRAFICA EFI plot(efi_indicador, color=color.new(color.yellow, 0)) // GRAFICA RSI l1 = hline(70, color=color.new(color.green, 0)) l2 = hline(30, color=color.new(color.green, 0)) plot(rsi, color=color.new(color.white, 0)) //prueba 1 stop loss and take profit //sl = 0.05 //tp = 0.1 //calculo de precio para sl y tp //longstop=strategy.position_avg_price*(1-sl) //longprofit=strategy.position_avg_price*(1+tp) //shortstop=strategy.position_avg_price*(1+sl) //shortprofit=strategy.position_avg_price*(1-tp) //if (long) // strategy.exit("BUY", strategy.long) //sl and tp long|short //if strategy.entry("BUY", strategy.long) //if strategy.position_avg_price > 0 //strategy.exit("BUY", limit = longprofit, stop = longstop) //if strategy.position_avg_price < 0 //strategy.exit("SELL", limit = shortprofit, stop=shortstop)