Strategie für das gleitende Durchschnittswert eines Polygons

Schriftsteller:ChaoZhang, Datum: 31.10.2023
Tags:

img

Übersicht

Die Polygon Moving Average Strategie konstruiert ein Polygon mit mehreren gleitenden Durchschnitten verschiedener Perioden und verwendet den Durchbruch des Polygons als Handelssignale.

Strategie Logik

Die Strategie erstellt mehrere EMAs, wie 3-Perioden-, 7-Perioden- und 13-Perioden-EMAs, um einen Polygonkanal zu bilden. Wenn der Preis über die EMAs bricht, wird ein langes Signal generiert. Wenn der Preis unter die EMAs bricht, wird ein kurzes Signal generiert. Dies hilft, viele falsche Ausbrüche zu vermeiden.

Der Code bestimmt die Durchbruchssignale, indem er den Schlusskurs mit den EMAs verglichen wird, unter Verwendung von Bedingungen wie close>ema1 und ema1>ema2 und ema2>ema3. Die Zeitbedingung time_cond wird hinzugefügt, um den Backtestzeitraum zu begrenzen.

Vorteile

Der größte Vorteil dieser Strategie ist die Fähigkeit, die Haupttrendrichtung effektiv zu erfassen, indem mehrere gleitende Durchschnitte als Filter verwendet werden, um Lärm zu vermeiden.

Risiken und Lösungen

Das Hauptrisiko besteht darin, dass diese Strategie Trendschwankungen nicht erkennt und zu Verlusten bei Trendschwankungen führen kann. Unangemessene MA-Perioden-Einstellungen können auch zu Überhandels- oder Nachlasssignalen führen. Die Risiken können durch Optimierung von MA-Kombinationen, Hinzufügen von Umkehrindikatoren, Erweiterung des Stop-Loss-Bereichs usw. reduziert werden.

Optimierungsrichtlinien

Die Strategie kann in folgenden Aspekten optimiert werden:

  1. Optimieren Sie die MA-Perioden, um die beste Kombination zu finden.

  2. Fügen Sie Umkehrindikatoren wie RSI und MACD hinzu, um die Geschäfte rechtzeitig zu beenden.

  3. Optimieren Sie den Stop-Loss-Bereich und den Offset, um vorzeitigen Stop-Loss zu verringern.

  4. Optimierung der Parameter für verschiedene Produkte zur Verbesserung der Anpassungsfähigkeit.

Zusammenfassung

Die Polygon Moving Average-Strategie ist im Allgemeinen ein zuverlässiges und effektives Trendfolgensystem. Seine größte Stärke ist die Erfassung des Haupttrends und gleichzeitig das Filtern von Rauschen. Aber es hat einige Einschränkungen bei der Identifizierung von Umkehrungen. Wir können es durch Parameteroptimierung, Hinzufügen von Hilfsindikatoren usw. verbessern. Es ist für Märkte mit offensichtlichen Trends geeignet und kann bei richtiger Verwendung stabile Gewinne generieren.


/*backtest
start: 2023-09-30 00:00:00
end: 2023-10-30 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/
// © Crypto-Oli

//@version=4
strategy("BLANK Strategy + TSL", initial_capital=5000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, pyramiding=1, commission_value=0.075, overlay=true)

////////////////////////////////////////////////////////////////////////////////
// BACKTESTING RANGE
 
// From Date Inputs
fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2019, title = "From Year", minval = 1970)
 
// To Date Inputs
toDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2020, title = "To Year", minval = 1970)
 
// Calculate start/end date and time condition
startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true
 
////////////////////////////////////////////////////////////////////////////////


/// YOUR INPUTS BELOW - DELET EXAPLES ///


ema1=ema(close,input(3))
ema2=ema(close,input(7))
ema3=ema(close,input(13))


/// PLOTS IF YOU NEED BELOW - DELET EXAPLES ///


plot(ema1, "EMA1", color.yellow)
plot(ema2, "EMA2", color.white)
plot(ema3, "EMA3", color.blue)


/// YOUR CONDITIONS BELOW - DELET EXAPLES ///


longCondition = close>ema1 and ema1>ema2 and ema2>ema3 and time_cond
shortCondition = close<ema1 and ema1<ema2 and ema2<ema3 and time_cond

/// EXECUTION ///


if (longCondition)
    strategy.entry("Long", strategy.long)
strategy.exit("Long Exit", "Long", trail_points = close * 0.05 / syminfo.mintick, trail_offset = close * 0.02 / syminfo.mintick)

if (shortCondition)
    strategy.entry("Short", strategy.short)
strategy.exit("Short Exit", "Short", trail_points = close * 0.05 / syminfo.mintick, trail_offset = close * 0.02 / syminfo.mintick)

Mehr