Eine Strategie für den Handel mit doppelten gleitenden Durchschnitten

Schriftsteller:ChaoZhang, Datum: 2023-11-27 15:32:57
Tags:

img

Übersicht

Diese Strategie erzeugt Kauf- und Verkaufssignale basierend auf der Überquerung von zwei gleitenden Durchschnitten mit unterschiedlichen Parameter-Einstellungen. Wenn der kürzere Zeitraum gleitende Durchschnitt über den längeren Zeitraum gleitenden Durchschnitt von unten kreuzt, wird ein Kaufsignal erzeugt. Wenn der kürzere Zeitraum gleitende Durchschnitt unter den längeren Zeitraum gleitenden Durchschnitt von oben kreuzt, wird ein Verkaufssignal erzeugt.

Strategie Logik

Die Strategie wird in Pine-Schrift geschrieben. Zuerst definiert sie zwei gleitende Durchschnitte, genannt p1 und p2, mit anpassbarem Typ, Länge und Preisquelle durch Eingabe. Hier repräsentiert p1 den kürzeren Zeitraum MA und p2 repräsentiert den längeren Zeitraum MA.

Die Crossover- und Crossunder-Funktionen werden verwendet, um den Crossover zwischen den beiden MAs zu erkennen. Wenn p1 von unten über p2 kreuzt, wird ein Kaufsignal generiert. Wenn p1 von oben unter p2 kreuzt, wird ein Verkaufssignal generiert.

Um Trades auszuführen, tritt die Strategie bei Auslösung von Signalen mit strategy.entry in Long- oder Short-Positionen ein. Ist die ShortOnly-Eingabe aktiviert, werden nur Verkaufssignale gehandelt.

Analyse der Vorteile

Zu den Vorteilen dieser Strategie gehören:

  1. Klare Regeln, leicht verständlich und umsetzbar
  2. MA-Crossover ist ein klassisches und weithin bekanntes Handelssignal
  3. Sehr anpassungsfähige MA-Typen, -Längen und Preisquellen
  4. Kann nur Signale mit niedrigerer Handelsfrequenz verkaufen

Risikoanalyse

Diese Strategie birgt auch einige Risiken:

  1. Bei unruhigen Märkten kann es zu mehreren ungültigen Kreuzungen kommen, was zu einem Überhandel führt.
  2. Die Parameter müssen für verschiedene Produkte und Zeitrahmen optimiert werden.
  3. Nicht in der Lage, die Trendrichtung zu bestimmen, kann gegen den Trend handeln.

Die Risiken können durch Anpassung der MA-Längen, Hinzufügen von Filterbedingungen usw. verringert werden.

Möglichkeiten zur Verbesserung

Die Strategie kann in folgenden Aspekten verbessert werden:

  1. Verwenden Sie VWAP oder typischen Preis als Preisquelle, um Crossover-Signale zuverlässiger zu machen.

  2. Hinzufügen einer Gültigkeitsdauer, um kurzfristige falsche Kreuzungen zu vermeiden.

  3. Die Risikopositionen werden in der Tabelle 060 angegeben, wobei die Risikopositionen in der Tabelle 060 angegeben werden.

  4. Parameteroptimierung durch Kurvenanpassung, um optimale Kombinationen zu finden.

  5. Betrachten Sie nur Signale in Richtung höherer Zeitrahmen.

Zusammenfassung

Die Doppel-MA-Crossover-Strategie ist leicht zu verstehen und umzusetzen und erzeugt Handelssignale von zwei MA-Crossovers mit hoher Anpassbarkeit.


/*backtest
start: 2022-11-20 00:00:00
end: 2023-11-26 00:00:00
period: 1d
basePeriod: 1h
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("Double MA Cross", overlay=true)

type1 = input("SMA", "MA Type 1", options=["SMA", "EMA", "WMA", "HMA", "VWMA", "RMA", "TEMA"])
len1 = input(10, minval=1, title="Length 1")
src1 = input(close, "Source 1", type=input.source)

type2 = input("SMA", "MA Type 2", options=["SMA", "EMA", "WMA", "HMA", "VWMA", "RMA", "TEMA"])
len2 = input(50, minval=2, title="Length 2")
src2 = input(close, "Source 2", type=input.source)

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

getPoint(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)

p1 = getPoint(type1, len1, src1)
p2 = getPoint(type2, len2, src2)

shortCondition = crossunder(p1, p2)
longCondition = crossover(p1, p2)

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

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

plot(p1, "MA 1", p1 < p2 ? color.red : color.green)
plot(p2, "MA 2", color.blue)


Mehr