Die Ressourcen sind geladen. Beförderung...

Gradueller gleitender Durchschnittswert nach Strategie

Schriftsteller:ChaoZhang, Datum: 2023-10-26 17:08:43
Tags:

img

Übersicht

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.

Strategie Logik

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

Vorteile

  1. Mehrere Marktbewertungen erfassen wichtige Trendwechselpunkte.

  2. Oszillatorkombinationen vermeiden das Verfolgen von Höchstwerten und den Verkauf von Tiefwerten.

  3. Die SL-Regeln berücksichtigen sowohl Trends als auch Cashflows und kontrollieren so die Risiken wirksam.

  4. Optimierte Parameter durch umfangreiches Backtesting, anpassungsfähig an die meisten Marktumgebungen.

  5. Durchschnittliche Handelsfrequenz, stabile Signale, geeignet für die langfristige Trendverfolgung.

Risiken

  1. Plötzliche Abstürze können SL-Range verhindern, SL sollte erweitert werden.

  2. Zu viele Signale während der Rangierungsmärkte, Parameter sollten angepasst werden.

  3. Zu lange Halten kann Verluste verstärken, kürzere MAs können schneller SL nehmen.

  4. Backtest-Überanpassung, echte Handelsergebnisse warten auf Validierung.

Verbesserungen

  1. Optimierung der Parameter für höhere Renditen und geeignete Frequenz.

  2. Hinzufügen von Algorithmen für maschinelles Lernen zur dynamischen Optimierung von Parametern.

  3. Aufbau eines anpassungsfähigen SL-Mechanismus auf der Grundlage unterschiedlicher Marktbedingungen.

  4. Fügen Sie mehr Filter hinzu, um bessere Eintrittssignale zu bestimmen.

  5. Einbeziehung von Positionsgrößenstrategien zur Kontrolle der Größe der einzelnen Einsätze.

Schlussfolgerung

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)

Mehr