Handel mit variablen gleitenden DurchschnittenVMA-Strategie


Erstellungsdatum: 2024-02-21 11:47:43 zuletzt geändert: 2024-02-21 11:47:43
Kopie: 2 Klicks: 828
1
konzentrieren Sie sich auf
1617
Anhänger

Handel mit variablen gleitenden DurchschnittenVMA-Strategie

Überblick

Die Trading-VMA-Strategie ist eine quantitative Handelsstrategie, die auf variablen Moving Averages basiert. Die Strategie nutzt veränderte Moving Averages, um Markttrends zu erfassen und entsprechend Handelssignale zu erzeugen.

Strategieprinzip

Im Mittelpunkt der Trading-VMA-Strategie steht die Berechnung eines variablen Moving Average (VMA). Ein Moving Average ist ein bekannter technischer Indikator, der den durchschnittlichen Preis innerhalb eines bestimmten Zeitraums berechnet.

Konkret berechnet die Strategie zunächst eine Reihe von Zwischengrößen, wie z. B. die Indikatoren für die Kursbewegung (PDM, MDIM), die Daten nach der Glattebehandlung (PDMs, MDMs) [2]. Diese Daten werden letztendlich zur Indikatorstärke (iS) verwendet. Dieser Indikator spiegelt die Stärke der Preisfluktuation wider [2].

Die TradingVMA-Strategie passt dann die Länge des Moving Averages dynamisch an die Stärke des Indikators an. Wenn die Marktfluktuation zunimmt, werden die Perioden des Moving Averages kürzer und umgekehrt länger. So kann schneller auf Marktveränderungen reagiert werden.

Die Strategie vergleicht schließlich den aktuellen Preis mit der Größe des VMA, um ein Handelssignal zu erzeugen. Wenn der Preis höher als der VMA ist, ist ein Plus, wenn der Preis niedriger als der VMA ist, ist ein Minus.

Analyse der Stärken

Die wichtigsten Vorteile einer Trading-VMA-Strategie sind:

  1. Variable Periodicity Filters Noise Stabiler - Variable Moving Average Periodicity passt sich an Marktveränderungen an und filtert so den Lärm, um ein stabileres Trendsignal zu erhalten.

  2. Schnelle Reaktion auf Preisänderungen Improves Responsiveness - Variable Moving Averages können schnell auf Preisänderungen reagieren und Wendepunkte für neue Trends erfassen.

  3. Reduce Overtrading - Im Vergleich zu Fixed-Cycle-Indikatoren kann TradingVMA unnötige Transaktionen reduzieren.

  4. Flexible Parameter - Die Strategie erlaubt dem Benutzer, Parameter nach seinen eigenen Vorlieben zu wählen, um sich an unterschiedliche Marktbedingungen anzupassen.

Risikoanalyse

Die wichtigsten Risiken bei der VMA-Handelsstrategie sind:

  1. Miss Rapid Reversals - Wenn sich der Trend schnell umkehrt, kann der fortlaufend angepasste Moving Average eine verzögerte Reaktion zeigen.

  2. Lagging Bias - Alle Moving-Average-Strategien haben einen gewissen Grad an Lagging-Bias.

  3. Falsche Positionierungssignale - In horizontal organisierten Märkten kann das Trading VMA falsche Positionierungssignale erzeugen.

  4. Parameter Optimization Difficulty - Die optimale Parameterkombination kann schwierig sein.

Diese Risiken können durch Stop-Loss, Anpassung der Parameterkombinationen usw. kontrolliert werden.

Optimierungsrichtung

Eine Trading-VMA-Strategie kann auch in folgenden Richtungen optimiert werden:

  1. Combine Other Indicators - Kombination mit anderen Indikatoren wie Trends, Trendwechsel, etc. kann die Signalqualität verbessern.

  2. Parameteroptimierung - Suche nach der optimalen Parameterkombination durch historische Rückverfolgung und Parameteroptimierung.

  3. Adaptive Handelsregeln - Annahme verschiedener Aufnahme- und Stop-Loss-Regeln für verschiedene Marktbedingungen.

  4. Systemisierung des Algorithmus-Handels - Algorithmische und systematische Strategien zur Rückverfolgung und Optimierung.

Zusammenfassen

Trading VMA ist eine adaptive quantitative Strategie. Es verwendet speziell entwickelte VMA-Indikatoren, um Markttrends zu erfassen, mit dem Vorteil, schnell zu reagieren und Geräusche zu filtern. Die Strategie kann auf verschiedene Arten optimiert werden, um eine bessere Leistung zu erzielen.

Strategiequellcode
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-24 23:59:59
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/
// © laptevmaxim92

//@version=4
strategy("Variable Moving Average Strategy", overlay=true)

src=close
l =input(5, title="VMA Length") 
std=input(true, title="Show Trend Direction Colors")

utp = input(false, "Use take profit?")
pr = input(100, "Take profit pips")
usl = input(false, "Use stop loss?")
sl = input(100, "Stop loss pips")
fromday = input(01, defval=01, minval=01, maxval=31, title="From Day")
frommonth = input(01, defval=01, minval= 01, maxval=12, title="From Month")
fromyear = input(2000, minval=1900, maxval=2100, title="From Year")
today = input(31, defval=01, minval=01, maxval=31, title="To Day")
tomonth = input(12, defval=12, minval=01, maxval=12, title="To Month")
toyear = input(2019, minval=1900, maxval=2100, title="To Year")

use_date = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00))

k = 1.0/l
pdm = 0.0
pdm := max((src - src[1]), 0)
mdm = 0.0
mdm := max((src[1] - src), 0)
pdmS = 0.0
pdmS := ((1 - k)*nz(pdmS[1]) + k*pdm)
mdmS = 0.0
mdmS := ((1 - k)*nz(mdmS[1]) + k*mdm)
s = pdmS + mdmS
pdi = pdmS/s
mdi = mdmS/s
pdiS = 0.0
pdiS := ((1 - k)*nz(pdiS[1]) + k*pdi)
mdiS = 0.0
mdiS := ((1 - k)*nz(mdiS[1]) + k*mdi)
d = abs(pdiS - mdiS)
s1 = pdiS + mdiS
iS = 0.0
iS := ((1 - k)*nz(iS[1]) + k*d/s1)
hhv = highest(iS, l) 
llv = lowest(iS, l) 
d1 = hhv - llv
vI = (iS - llv)/d1
vma = 0.0
vma := (1 - k*vI)*nz(vma[1]) + k*vI*src
vmaC=(vma > vma[1]) ? color.lime : (vma<vma[1]) ? color.red : (vma==vma[1]) ? color.yellow : na 
plot(vma, color=std?vmaC:color.white, linewidth=3, title="VMA")

longCondition = vma > vma[1]
if (longCondition)
    strategy.entry("BUY", strategy.long and use_date)

shortCondition = vma < vma[1]
if (shortCondition)
    strategy.entry("SELL", strategy.short and use_date)

if (utp and not usl)
    strategy.exit("TP", "BUY", profit = pr)
    strategy.exit("TP", "SELL", profit = pr)
    
if (usl and not utp)
    strategy.exit("SL", "BUY", loss = sl)
    strategy.exit("SL", "SELL", loss = sl)
    
if (usl and utp)
    strategy.exit("TP/SL", "BUY", loss = sl, profit = pr)
    strategy.exit("TP/SL", "SELL", loss = sl, profit = pr)