Dynamische Trendprognose für mehrere Perioden kombiniert mit einer Filterstrategie für gleitende Durchschnittswerte

EMA SMA ML AI PREDICTION Trend FILTER BACKTEST
Erstellungsdatum: 2025-02-20 14:03:44 zuletzt geändert: 2025-02-27 17:38:36
Kopie: 1 Klicks: 345
2
konzentrieren Sie sich auf
319
Anhänger

Dynamische Trendprognose für mehrere Perioden kombiniert mit einer Filterstrategie für gleitende Durchschnittswerte Dynamische Trendprognose für mehrere Perioden kombiniert mit einer Filterstrategie für gleitende Durchschnittswerte

Überblick

Die Strategie ist ein Trend-Tracking-System, das traditionelle technische Analysen und moderne KI-Methoden kombiniert. Sie verwendet hauptsächlich den Index-Moving Average (EMA) und den Simple Moving Average (SMA) als Trendfilter, während ein Prognosemodell zur Optimierung der Einstiegszeit eingeführt wird. Die Strategie wurde speziell für die Tageslinie optimiert, um mittel- und langfristige Markttrends zu erfassen.

Strategieprinzip

Die Kernlogik der Strategie besteht aus drei Hauptkomponenten:

  1. Trendscheidungssystem - Nutzung von 200-Perioden-EMA und SMA als Haupttrendfilter, um die aktuelle Trendrichtung durch die Position des Preises in Bezug auf die Durchschnittslinie zu bestimmen
  2. Prognose-Module - mit erweiterbaren Prognose-Komponenten, derzeit mit Simulationsprognose, nachträglich ersetzbar durch Machine-Learning-Modelle
  3. Positionsmanagement - Festlegung von 4 K-Linien-Positionsperioden zur Kontrolle der Zeit und des Risikos

Die Erzeugung von Handelssignalen erfordert die Einheitlichkeit der Trendrichtung und der Prognose, d.h.:

  • Mehrköpfige Signale: Der Preis liegt über den EMA und SMA und die Prognose ist positiv
  • Blank Signal: Preis liegt unterhalb der EMA und SMA und wird negativ erwartet

Strategische Vorteile

  1. Klare Struktur - Strategie-Logik ist einfach, intuitiv, leicht zu verstehen und zu pflegen
  2. Risikokontrolle - Risiken werden durch die Festlegung der Positionszyklus und die doppelte Mittellinien-Filterung wirksam kontrolliert
  3. Skalierbarkeit - Prognose-Module sind flexibel konzipiert und bieten Zugang zu verschiedenen Prognose-Modellen, je nach Bedarf
  4. Anpassungsfähigkeit - Anpassungsfähigkeit der Parameter an unterschiedliche Marktumgebungen
  5. Moderate Frequenz der Operationen - Operationen auf der Tageszeile reduzieren die Transaktionskosten und den Stress

Strategisches Risiko

  1. Trendwechselrisiko - an einem Trendwechselpunkt kann es zu Folgeverlusten kommen
  2. Parameter-Sensitivität - Die Wahl der Durchschnitts- und Haltungsphase hat einen großen Einfluss auf die Strategie
  3. Modellabhängigkeit - die Genauigkeit der Prognose-Module beeinflusst die Strategiewirkung
  4. Schlupfpunkt-Effekte - Operationen auf der Tageszeilenstufe können größere Schlupfpunkte aufweisen
  5. Marktumfeldabhängigkeit - in einem turbulenten Markt kann es schlecht laufen

Richtung der Strategieoptimierung

  1. Prognose-Modell-Upgrade - Einführung eines maschinellen Lernmodells anstelle der vorhandenen Zufallsprognose
  2. Dynamische Positionshaltephase - Positionshaltezeit, die dynamisch an Marktschwankungen angepasst wird
  3. Stop-Loss-Optimierung - Erhöhung der dynamischen Stop-Loss-Mechanismen zur Steigerung der Risikokontrolle
  4. Positionsverwaltung - Einführung einer auf Volatilität basierenden Positionsverwaltung
  5. Mehrdimensionale Filterung - Hilfsindikatoren wie erhöhte Transaktionsmenge, Schwankungen

Zusammenfassen

Durch die Kombination von traditioneller technischer Analyse und modernen Prognosemethoden wurde ein robustes Trend-Tracking-System aufgebaut. Die Hauptvorteile liegen in der Logikklarheit, der Risikokontrolle und der starken Skalierbarkeit. Durch die Optimierung der Strategie, insbesondere durch Verbesserungen der Prognose-Modelle und der Risikokontrolle, wird die Stabilität und Profitabilität der Strategie weiter verbessert.

Strategiequellcode
/*backtest
start: 2024-02-21 00:00:00
end: 2025-02-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("My Strategy", overlay=true)

// Parameters (adjust as needed)
neighborsCount = 8
maxBarsBack = 2000
featureCount = 5
useDynamicExits = true
useEmaFilter = true
emaPeriod = 200
useSmaFilter = true
smaPeriod = 200

// Moving Average Calculations
ema = ta.ema(close, emaPeriod)
sma = ta.sma(close, smaPeriod)

// Trend Conditions
isEmaUptrend = close > ema
isEmaDowntrend = close < ema
isSmaUptrend = close > sma
isSmaDowntrend = close < sma

// Model Prediction (Replace with your real model)
// Here a simulation is used, replace it with real predictions
prediction = math.random() * 2 - 1 // Random value between -1 and 1

// Entry Signals
isNewBuySignal = prediction > 0 and isEmaUptrend and isSmaUptrend
isNewSellSignal = prediction < 0 and isEmaDowntrend and isSmaDowntrend

// Exit Signals
var int barsHeld = 0
var bool in_position = false
var int entry_bar = 0

if isNewBuySignal and not in_position
    in_position := true
    entry_bar := bar_index
    barsHeld := 1
else if isNewSellSignal and not in_position
    in_position := true
    entry_bar := bar_index
    barsHeld := 1
else if in_position
    barsHeld := barsHeld + 1
    if barsHeld == 4
        in_position := false

endLongTradeStrict = barsHeld == 4 and isNewBuySignal[1]
endShortTradeStrict = barsHeld == 4 and isNewSellSignal[1]

// Backtest Logic
var float totalProfit = 0
var float entryPrice = na
var int tradeDirection = 0

if isNewBuySignal and tradeDirection <= 0
    entryPrice := close
    tradeDirection := 1
    strategy.entry("Long", strategy.long)

if isNewSellSignal and tradeDirection >= 0
    entryPrice := close
    tradeDirection := -1
    strategy.entry("Short", strategy.short)

if (endLongTradeStrict and tradeDirection == 1) or (endShortTradeStrict and tradeDirection == -1)
    exitPrice = close
    profit = (exitPrice - entryPrice) / entryPrice
    if tradeDirection == -1
        profit := (entryPrice - exitPrice) / entryPrice

    totalProfit := totalProfit + profit
    tradeDirection := 0
    strategy.close_all()

plot(close, color=color.blue)
plot(ema, color=color.orange)
plot(sma, color=color.purple)