Volatilitätsbänder und VWAP-Mehrzeitenstrategie für den Handel mit Aktientrends

Schriftsteller:ChaoZhang, Datum: 2024-01-17 16:34:23
Tags:

img

Diese Strategie berechnet die ATR-Volatilität des Preises und kombiniert verschiedene VWAP-Perioden, um lange Ein- und Ausstiegsbedingungen für den Aktientrendhandel festzulegen.

Strategieübersicht

Die Strategie wird hauptsächlich für die Trendverfolgung von Aktienprodukten verwendet. Durch die Berechnung der ATR-Volatilität und die Kombination von VWAP-Preisen aus verschiedenen Perioden werden Kauf- und Verkaufsbedingungen festgelegt, um Trends zu beurteilen und zu verfolgen.

Strategie Logik

Die Strategie verwendet den ATR-Indikator, um die Preisvolatilität zu berechnen und die Trendrichtung zu beurteilen, je nachdem, ob der Preis den Volatilitätskanal durchbricht. Gleichzeitig werden VWAP-Preise verschiedener Zyklen eingeführt, um die Konsistenz von langfristigen und kurzfristigen Trends zu bestimmen. Die spezifische Logik ist wie folgt:

  1. Berechnung des ATR-Volatilitätskanals des Preises
  2. Beurteilen, ob der Preis durch den Volatilitätskanal bricht
    1. Ein Durchbruch der oberen Schiene zeigt einen Aufwärtstrend an.
    2. Ein Durchbruch der unteren Schiene zeigt auf einen Abwärtstrend.
  3. Einführung der wöchentlichen und täglichen VWAP-Preise
    1. Wenn der Preis den oberen Volatilitätsschienen durchbricht, wenn sowohl die täglichen als auch die wöchentlichen VWAP über dem Preis liegen, wird ein langes Signal erzeugt
    2. Wenn der Preis durch die niedrigere Volatilitätslinie bricht, wird ein kurzes Signal erzeugt, wenn sowohl die täglichen als auch die wöchentlichen VWAP unter dem Preis liegen.

Das ist die Kernlogik der Strategie. Die ATR-Volatilität beurteilt den kurzfristigen Trend und der VWAP-Preis beurteilt den langfristigen Trend. Die beiden werden kombiniert, um die Konsistenz des Trends zu bestimmen und somit Handelssignale zu erzeugen.

Vorteile der Strategie

  • Verwenden Sie eine Kombination von ATR und VWAP, um Trends zu beurteilen, zuverlässiger
  • Anpassbarer ATR-Periodenparameter zur Anpassung der Strategieempfindlichkeit
  • Einführung von VWAP mit mehreren Zeitrahmen zur Bestimmung der langfristigen und kurzfristigen Trendkonsistenz
  • Flexibilität beim Wechsel zwischen langfristigem und kurzfristigem
  • Geeignet zur Nachverfolgung der mittelfristigen und langfristigen Aktienentwicklung

Risiken und Optimierung

  • Als Trend nach der Strategie kann es während der Konsolidierung mehr Trades generieren, was mit einem Risikoschub einhergeht.
  • Die Einstellungen der ATR- und VWAP-Parameter beeinflussen die Strategieleistung und erfordern eine sorgfältige Prüfung verschiedener Produkte
  • Überlegen Sie, einen Stop-Loss hinzuzufügen, um Einzelhandelsverluste zu kontrollieren
  • Kann mit MA und anderen Indikatoren kombiniert werden, um Einstiegssignale zu filtern und unnötige Trades zu reduzieren

Zusammenfassung

Die Strategie realisiert die Aktientrendverfolgung durch doppelte Bestätigung von ATR-Volatilität und VWAP. Es gibt viel Raum für Optimierung durch Anpassung von Parametern oder Einbeziehung anderer technischer Indikatoren. Insgesamt ist die Strategielogik klar und robust für die Verfolgung von mittelfristigen bis langfristigen Trends.


/*backtest
start: 2023-12-17 00:00:00
end: 2024-01-16 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/
// © exlux99

//@version=4
strategy(title="VWAP MTF STOCK STRATEGY", overlay=true )

// high^2 / 2 - low^2 -2

h=pow(high,2) / 2
l=pow(low,2) / 2

o=pow(open,2) /2
c=pow(close,2) /2


x=(h+l+o+c) / 4
y= sqrt(x)

source = y
useTrueRange = false
length = input(27, minval=1)
mult = input(0, step=0.1)
ma = sma(source, length)
range = useTrueRange ? tr : high - low
rangema = sma(range, length)
upper = ma + rangema * mult
lower = ma - rangema * mult
crossUpper = crossover(source, upper)
crossLower = crossunder(source, lower)
bprice = 0.0
bprice := crossUpper ? high+syminfo.mintick : nz(bprice[1])
sprice = 0.0
sprice := crossLower ? low -syminfo.mintick : nz(sprice[1])
crossBcond = false
crossBcond := crossUpper ? true
     : na(crossBcond[1]) ? false : crossBcond[1]
crossScond = false
crossScond := crossLower ? true
     : na(crossScond[1]) ? false : crossScond[1]
cancelBcond = crossBcond and (source < ma or high >= bprice )
cancelScond = crossScond and (source > ma or low <= sprice )

longOnly = true

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 = 2000, title = "From Year", minval = 1970)
 //monday and session 
// To Date Inputs
toDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2021, title = "To Year", minval = 1970)

startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true

srcX = input(ohlc4)
t = time("W")
start = na(t[1]) or t > t[1]

sumSrc = srcX * volume
sumVol = volume
sumSrc := start ? sumSrc : sumSrc + sumSrc[1]
sumVol := start ? sumVol : sumVol + sumVol[1]

vwapW= sumSrc / sumVol

 
//crossUpper = crossover(source, upper)
//crossLower = crossunder(source, lower)
shortCondition = close < vwap and time_cond and (close < vwapW)
longCondition = close > vwap and time_cond and (close > vwapW)

 


if(longOnly and time_cond)
    if (crossLower and close < vwapW )
        strategy.close("long")
    if (crossUpper and close>vwapW)
        strategy.entry("long", strategy.long, stop=bprice)


Mehr