Dynamische, adaptive Kaufman-Strategie mit gleitendem Durchschnitt und Trendfolge


Erstellungsdatum: 2024-02-26 16:36:30 zuletzt geändert: 2024-02-26 16:36:30
Kopie: 0 Klicks: 666
1
konzentrieren Sie sich auf
1617
Anhänger

Dynamische, adaptive Kaufman-Strategie mit gleitendem Durchschnitt und Trendfolge

Überblick

Die Strategie basiert auf dem Kaufman Adaptive Moving Average (KAMA) Design und kann die Handelsposition dynamisch anpassen und automatisch die Markttrends verfolgen. Die Hauptfunktionen der Strategie sind:

  1. Dynamische Berechnung der Transaktionsschrittlänge (in Punkten), Anpassung an die Marktfluktuation
  2. Erzeugung von Kauf- und Verkaufssignalen in Richtung KAMA
  3. Ein Stop-Loss-Distanz wird nach dem Signal eingestellt und entsprechend der Preisbewegung angepasst.
  4. Optional Warte auf ein Bestätigungssignal für den K-Schluss und Filter falsche Signale

Durch die Verwendung dieser Funktionen versucht die Strategie, zusätzliche Gewinne aus dem Trend zu erzielen und gleichzeitig das Risiko zu kontrollieren.

Strategieprinzip

Die Strategie basiert auf der Arbeit von Kaufman Adaptive Moving Average Indicator. KAMA berechnet die Werte der Preisbewegungen und der Schwankungen und passt dynamisch die Gewichte und die Gleitlänge der Mittelwerte an, um schneller auf Preisänderungen zu reagieren.

Wenn die KAMA die Downward-Stop-Linie überschreitet, gibt es einen Trendwechsel, der ein Kaufsignal erzeugt. Wenn die KAMA die Downward-Stop-Linie überschreitet, gibt es einen Trendwechsel, der ein Verkaufssignal erzeugt. Nach dem Eintritt in die Position berechnet die Strategie eine dynamische Stopp-Distanz basierend auf der ATR und erstellt eine Stop-Line.

Auf diese Weise kann die Strategie den Trend verfolgen und die Stop-Line schrittweise bewegen, bis die Stop-Line ausgelöst wird oder ein Umkehrsignal ausgelöst wird.

Strategische Vorteile

Die Strategie hat folgende Vorteile gegenüber herkömmlichen Moving Average Strategien:

  1. Die KAMA-Indikatoren sind sehr sensibel und können schnellere Preistrends erfassen.
  2. Die dynamische Berechnung der Stopp-Loss-Distanz, die sich mit dem Trend anpasst, kann höhere Gewinne erzielen.
  3. Optionale K-Wire-Kloppbestätigung, die falsche Signale filtert und unnötige Positionen reduziert.

Insgesamt ist die Strategie schnell und beherrschbar und typisch für Trend-Tracking-Strategien.

Strategisches Risiko

Die Strategie birgt auch einige Risiken:

  1. Trendwechselrisiko. Der KAMA-Index ist flexibel auf Preisschwankungen eingestellt, kann jedoch nicht rechtzeitig auf eine plötzliche Trendwechselreaktion reagieren.
  2. Die Dynamische Stop-Loss-Distanz kann zu radikal sein, wenn sie zu groß eingestellt ist, so dass die Gewinne nicht zu früh gesperrt werden können.
  3. Falschsignalrisiken. Die Aktivierung der K-Leitung kann die falschen Signale reduzieren, aber nicht vollständig beseitigen.

Diese Risiken können durch die Optimierung der Stop-Loss-Distanz, die Einstellung des maximalen Stop-Loss-Prozentsatzes und andere Methoden kontrolliert werden. Sie können auch in Verbindung mit anderen Indikatoren als Bestätigung verwendet werden, um falsche Geschäfte zu vermeiden.

Richtung der Strategieoptimierung

Die Optimierungsmöglichkeiten der Strategie umfassen:

  1. Optimierung der KAMA-Parameter: Anpassung der Durchschnittslänge und Optimierung der Glätte;
  2. Optimierung des dynamischen Stopps: Testung der optimalen Stoppdistanz und -schrittlänge für verschiedene Sorten;
  3. Erhöhung der Filterwerte: In Kombination mit anderen Trendindikatoren, um Handelssignale zu bestätigen und die Reliabilität der Signale zu erhöhen.

So kann beispielsweise getestet werden, dass MACD als Hilfsbestätigungsindikator hinzugefügt wird, während KAMA Goldfork verlangt, dass MACDDif positiv und erweitert wird. Dies kann einige falsche Signale filtern und unnötige Wiederholungen der Position vermeiden.

Zusammenfassen

Die Strategie funktioniert als Ganzes reibungslos und nutzt dynamische Stop-Loss-Tracking-Trends, um Trendgewinne zu maximieren. Die Anpassungsfähigkeit der KAMA-Indikatoren ermöglicht es der Strategie, mit den schnellen Veränderungen des Marktes Schritt zu halten. Mit einer gewissen Optimierung kann die Strategie zu einem effizienten Trend-Tracking-Programm werden, das für mittlere und lange Linien geeignet ist.

Strategiequellcode
/*backtest
start: 2024-01-26 00:00:00
end: 2024-02-25 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("THMA - Bharath Vc Improved", overlay=true, process_orders_on_close=true)

// Function to calculate pips with higher precision
getPips(price) =>
    difc = syminfo.mintick
    hlpips = price / difc
    math.round(hlpips / syminfo.mintick) * syminfo.mintick

// Inputs
buyMess = input.string("Buy Message","Buy Alert Message")
sellMess = input.string("Sell Message","Sell Alert Message")
buyExitMessage = input.string("Buy Exit","Buy Exit Alert Message" )
sellExitMessage = input.string("Sell Exit","Sell Exit Alert Message" )

tmf = input.timeframe("", "Timeframe")
length = input(title='Length', defval=14)
fastLength = input(title='Fast EMA Length', defval=2)
slowLength = input(title='Slow EMA Length', defval=30)
src = input(title='Source', defval=close)
highlight = input(title='Highlight ?', defval=true)
awaitBarConfirmation = input(title='Await Bar Confirmation ?', defval=true)

// Function to calculate the TMA
gettma() =>
    mom = math.abs(ta.change(src, length))
    volatility = math.sum(math.abs(ta.change(src)), length)
    er = volatility != 0 ? mom / volatility : 0
    fastAlpha = 2 / (fastLength + 1)
    slowAlpha = 2 / (slowLength + 1)
    alpha = math.pow(er * (fastAlpha - slowAlpha) + slowAlpha, 2)
    kama = 0.0
    kama := alpha * src + (1 - alpha) * nz(kama[1], src)
    await = awaitBarConfirmation ? barstate.isconfirmed : true
    maColor = highlight ? kama > kama[1] and await ? color.green : color.red : color.new(color.purple, 0)
    thma = kama
    hma_dif = (thma - thma[2])/2
    colour = hma_dif > 0 ? color.green : color.red
    isGreen = hma_dif > 0
    [thma, isGreen, colour]

// Dynamic pip size based on ATR to adapt better to smaller timeframes
pips = ta.atr(14) * 0.1

// Main execution logic
var float psl = na
var int lastSignal = 0
var float lastPsl = na

[thma, isGreen, colour] = request.security(syminfo.tickerid, tmf, gettma(), gaps=barmerge.gaps_off, lookahead=barmerge.lookahead_off)

plot(thma, title='KAMA', linewidth=2, color=colour)

if ta.crossover(thma, psl) and strategy.position_size < 0
    strategy.exit("Sell Exit", stop=thma, alert_message=sellExitMessage)

if ta.crossunder(thma, psl) and strategy.position_size > 0
    strategy.exit("Buy Exit", stop=thma, alert_message=buyExitMessage)

if isGreen and strategy.position_size <= 0
    if na(psl)
        psl := close + getPips(pips)
    strategy.entry("Buy", strategy.long, alert_message=buyMess)
    lastSignal := 1

if not isGreen and strategy.position_size >= 0
    if na(psl)
        psl := close - getPips(pips)
    strategy.entry("Sell", strategy.short, alert_message=sellMess)
    lastSignal := -1

if (thma >= lastPsl or na(lastPsl)) and thma > psl
    psl := psl + getPips(pips)
    lastPsl := psl

if (thma <= lastPsl or na(lastPsl)) and thma < psl
    psl := psl - getPips(pips)
    lastPsl := psl

plot(psl, title="Position Stop Level", style=plot.style_stepline, color=color.blue)
plot(lastPsl, title="Last Position Stop Level", style=plot.style_cross, color=color.red)