Adaptiver gleitender Durchschnitt und gewichteter gleitender Durchschnitt

Schriftsteller:ChaoZhang, Datum: 2024-01-23 14:13:55
Tags:

img

Übersicht

Diese Strategie erzeugt Handelssignale basierend auf dem Adaptive Indicator for Moving Averages (AIOMA) und dem gewichteten gleitenden Durchschnitt (WMA).

Name der Strategie

AIOMA-WMA Adaptive Crossover-Strategie

Strategie Logik

Die Strategie umfaßt folgende Hauptbestandteile:

  1. Berechnung des AIOMA-Indikators

    • Berechnen Sie eine Reihe von exponentiellen gleitenden Durchschnitten (EMA) mit einer angegebenen Länge
    • Verknüpfen Sie diese EMAs, um glatte Werte zu erzeugen
    • Die endgültige AIOMA ist ein EMA des letzten glatten Wertes
  2. Berechnung des WMA-Indikators

    • Berechnung der WMA mit der angegebenen Länge
  3. Erzeugung von Signalen

    • Kaufsignal, wenn WMA über AIOMA kreuzt
    • Verkaufssignal, wenn die WMA unter der AIOMA überschreitet
  4. Handelslogik

    • Eingabe einer Long-Position bei Kaufsignal
    • Eintritt in eine Leerposition bei Verkaufssignal
    • Schließposition bei Rückwärts-Kreuzungssignalen

Vorteile

  1. Die Verwendung von zwei verschiedenen Arten von gleitenden Durchschnitten verbessert die Signalgenauigkeit
  2. AIOMA reduziert falsche Signale durch mehrere exponentielle Glättungen
  3. WMA als Hauptindikator reagiert schneller auf Preisänderungen, um Trends frühzeitig zu erfassen
  4. Einfache Handelslogik, leicht zu verstehen und umzusetzen

Risiken

  1. Übermäßige Verzögerung aufgrund mehrfacher EMA-Gleichstellungen
  2. WMA ist anfällig für falsche Signale aus kurzfristigen Kursschwankungen
  3. Keine Stop-Loss-Logik, kann zu großen Verlusten führen

Kann Risiken durch Parameteroptimierung, Hinzufügen von Stop Loss, Filtern mit anderen Indikatoren usw. reduzieren.

Verbesserungsbereiche

  1. Verschiedene Parameterkombinationen testen, um optimale Werte zu finden
  2. Trigger-Stop-Loss-Aufträge zusammen mit Eintrittssignalen
  3. Filtersignale mit Volatilitätsindikatoren
  4. Einbeziehung von Positionsgrößenstrategien

Schlussfolgerung

Diese Strategie kombiniert die Stärken von AIOMA und WMA, indem Crossovers zur Erzeugung von Handelssignalen verwendet werden. Im Vergleich zu einzelnen gleitenden Durchschnitten verbessert sie die Signalqualität. Weitere Verbesserungen wie Parameteroptimierung, Stop-Loss-Strategien, Volatilitätsfilterung usw. können es zu einem robusten Handelssystem machen.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © SDTA

//@version=5
strategy("AIOMA-WMA Strategy", overlay=true)

// Parametreler
aioma_length = input(14, "AIOMA Length")
wma_length = input(21, "WMA Length")

// AIOMA hesaplama
length1 = aioma_length
ema1 = ta.ema(close, length1)
length2 = aioma_length
ema2 = ta.ema(ema1, length2)
length3 = aioma_length
ema3 = ta.ema(ema2, length3)
length4 = aioma_length
ema4 = ta.ema(ema3, length4)
aioma = ta.ema(ema4, aioma_length)

// WMA hesaplama
wma = ta.wma(close, wma_length)

// Kesişim kontrolü
cross_up = ta.crossover(wma, aioma)
cross_down = ta.crossunder(wma, aioma)

// İşlem fonksiyonu
enterTrade(dir, price, signalText, color) =>
    if dir
        strategy.entry("Enter", strategy.long)
        label.new(x = bar_index, y = price, text = signalText, color = color, textcolor = color, style = label.style_label_up, size = size.small, tooltip = "Entry Signal")
    else if not dir
        strategy.entry("Exit", strategy.short)
        label.new(x = bar_index, y = price, text = signalText, color = color, textcolor = color, style = label.style_label_down, size = size.small, tooltip = "Exit Signal")

// Long pozisyon girişi
if cross_up
    enterTrade(true, low, "Buy Signal", color.green)

// Short pozisyon girişi
if cross_down
    enterTrade(false, high, "Sell Signal", color.red)

// Pozisyon kapatma
if cross_up and strategy.position_size > 0
    strategy.close("Enter")
if cross_down and strategy.position_size < 0
    strategy.close("Exit")

// Grafiğe plot
plot(aioma, color=color.blue, linewidth=2, title="AIOMA")
plot(wma, color=color.red, linewidth=2, title="WMA")


Mehr