Les bandes de volatilité et la stratégie de négociation des tendances boursières sur plusieurs périodes de VWAP

Auteur:ChaoZhang est là., Date: 2024-01-17 16h34 et 23h
Les étiquettes:

img

Cette stratégie calcule la volatilité ATR du prix et combine différents VWAP de période pour définir des conditions d'entrée et de sortie longues pour le trading de tendance boursière.

Vue d'ensemble de la stratégie

La stratégie est principalement utilisée pour le suivi des tendances des produits boursiers. En calculant la volatilité de l'ATR et en combinant les prix VWAP de différentes périodes, elle définit des conditions d'achat et de vente pour juger et suivre les tendances.

La logique de la stratégie

La stratégie utilise l'indicateur ATR pour calculer la volatilité des prix et juge la direction de la tendance en fonction de la rupture du canal de volatilité.

  1. Calculer le canal de volatilité ATR du prix
  2. Jugez si le prix traverse le canal de volatilité
    1. Une rupture de la barre supérieure indique une tendance haussière.
    2. La rupture de la voie inférieure indique une tendance baissière.
  3. Introduction des prix hebdomadaires et quotidiens du VWAP
    1. Lorsque le prix franchit le niveau supérieur de volatilité, si les VWAP quotidiens et hebdomadaires sont supérieurs au prix, un signal long est généré
    2. Lorsque le prix franchit le niveau de volatilité inférieur, si les VWAP quotidiens et hebdomadaires sont inférieurs au prix, un signal court est généré.

La volatilité ATR juge la tendance à court terme et le prix VWAP juge la tendance à long terme. Les deux sont combinés pour déterminer la cohérence de la tendance et ainsi générer des signaux de trading.

Les avantages de la stratégie

  • Utiliser une combinaison d'ATR et de VWAP pour juger des tendances, plus fiable
  • Paramètre de période ATR personnalisable pour ajuster la sensibilité de la stratégie
  • Introduction d'un VWAP multi-temporel pour déterminer la cohérence des tendances à long et à court terme
  • Flexibilité pour basculer entre le long terme et le court terme
  • Convient pour suivre les tendances des actions à moyen et à long terme

Risques et optimisation

  • En tant que tendance à suivre la stratégie, il peut générer plus de transactions pendant la consolidation, ce qui entraîne des risques de glissement.
  • Les paramètres ATR et VWAP ont une incidence sur les performances de la stratégie et nécessitent des tests minutieux sur différents produits
  • Considérer l'ajout d'un stop loss pour contrôler les pertes de transactions uniques
  • Peut être combiné avec MA et autres indicateurs pour filtrer les signaux d'entrée et réduire les transactions inutiles

Résumé

La stratégie réalise le suivi des tendances boursières grâce à une double confirmation de la volatilité ATR et du VWAP. Il y a beaucoup de marge d'optimisation en ajustant les paramètres ou en incorporant d'autres indicateurs techniques.


/*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)


Plus de