Preisüberschreitung des gleitenden Durchschnitts nach Strategie

Schriftsteller:ChaoZhang, Datum: 2024-01-26 15:18:29
Tags:

img

Übersicht

Diese Strategie erzeugt Kauf- und Verkaufssignale basierend auf der Kreuzung des Preises mit einem gleitenden Durchschnitt. Sie bietet verschiedene Arten von gleitenden Durchschnitten und einen Toleranzparameter, um falsche Ausbrüche zu filtern.

Strategie Logik

Die Strategie berechnet einen gleitenden Durchschnitt mit einer Länge N basierend auf dem Schlusskurs. Zu den typischen gleitenden Durchschnittsarten gehören der einfache gleitende Durchschnitt (SMA), der exponentielle gleitende Durchschnitt (EMA), der gewichtete gleitende Durchschnitt (WMA) usw. Dann wird ein Toleranzniveau festgelegt, z. B. 5%, und Oberband (1,05 Mal gleitender Durchschnitt) und Unterband (0,95 Mal gleitender Durchschnitt) werden berechnet. Wenn der Schlusskurs über den oberen Band überschreitet, wird ein Kaufsignal generiert. Wenn der Schlusskurs unter dem unteren Band überschreitet, wird ein Verkaufssignal generiert. Dies hilft, einige falsche Ausbrüche zu filtern.

Vorteile

  • Wirksam verfolgt die Preisentwicklung unter Verwendung des gleitenden Durchschnitts
  • Bietet verschiedene gleitende Durchschnittsarten für flexible Kombinationen
  • Toleranzparameter hilft, falsche Ausbrüche zu filtern und unnötige Trades zu vermeiden
  • Kann nur kurz gehen, geeignet für Abwärtstrends

Risiken

  • Gleitende Durchschnitte haben einen Verzögerungseffekt, können Preiswendepunkte verpassen
  • Nicht geeignet für Marktumgebungen mit Bandbreite
  • Fehlende Toleranzparameter können gültige Signale filtern
  • Kurzgeschäft mit höheren Risiken, erfordert umsichtige Operationen

Optimierungsrichtlinien

  • Optimierung der Parameter für den Typ und die Länge des gleitenden Durchschnitts
  • Versuche verschiedene Toleranzparameter
  • Hinzufügen anderer Indikatoren zu Filtersignalen
  • Verwenden Sie Positionsgrößenstrategien

Schlussfolgerung

Im Großen und Ganzen ist dies eine typische Trendfolgestrategie. Sie verwendet die Beziehung zwischen Preis und gleitendem Durchschnitt, um Trends zu bestimmen, mit einer gewissen Flexibilität. Durch Parameteroptimierung und richtige Signalfilterung kann sie eine anständige Quant-Strategie werden.


/*backtest
start: 2023-12-26 00:00:00
end: 2024-01-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/
// © RafaelPiccolo

//@version=4
strategy("Price X MA Cross", overlay=true)

typ = input("HMA", "MA Type", options=["SMA", "EMA", "WMA", "HMA", "VWMA", "RMA", "TEMA"])
len = input(100, minval=1, title="Length")
src = input(close, "Source", type=input.source)
tol = input(0, minval=0, title="Tolerance (%)", type=input.float)
shortOnly = input(false, "Short only")

tema(src, len)=>
    ema1 = ema(src, len)
    ema2 = ema(ema1, len)
    ema3 = ema(ema2, len)
    return = 3 * (ema1 - ema2) + ema3

getMAPoint(type, len, src)=>
    return = type == "SMA" ? sma(src, len) : type == "EMA" ? ema(src, len) : type == "WMA" ? wma(src, len) : type == "HMA" ? hma(src, len) : type == "VWMA" ? vwma(src, len) : type == "RMA" ? rma(src, len) : tema(src, len)

ma = getMAPoint(typ, len, src)
upperTol = ma * (1 + tol/100)
lowerTol = ma * (1 - tol/100)

longCondition = crossover(close, upperTol)
shortCondition = crossunder(close, lowerTol)

if (shortCondition)
    strategy.entry("Short", strategy.short)

if (longCondition)
    if (shortOnly)
        strategy.close("Short")
    else
        strategy.entry("Long", strategy.long)

plot(ma, "Moving Average", close > ma ? color.green : color.red, linewidth = 2)
t1 = plot(tol > 0 ? upperTol : na, transp = 70)
t2 = plot(tol > 0 ? lowerTol : na, transp = 70)
fill(t1, t2, color = tol > 0 ? color.blue : na)


Mehr