Stratégie de tendance boursière de rupture de volatilité ATR à double période


Date de création: 2024-01-17 16:34:23 Dernière modification: 2024-01-17 16:34:23
Copier: 1 Nombre de clics: 728
1
Suivre
1617
Abonnés

Stratégie de tendance boursière de rupture de volatilité ATR à double période

Cette stratégie permet de suivre la tendance des actions en calculant les fluctuations ATR des prix, en combinant les moyennes VWAP de différentes périodes, en définissant les conditions d’entrée et de sortie des positions longues.

Aperçu de la stratégie

La stratégie est principalement utilisée pour suivre les tendances des produits de type actions, en calculant les fluctuations de l’ATR et en combinant les prix VWAP de différents cycles, en définissant les conditions d’achat et de vente, en permettant le jugement et le suivi des tendances. La stratégie est plus flexible et peut être commutée entre les lignes longues et courtes, elle est adaptée pour capturer les tendances de la ligne moyenne et longue.

Principe de stratégie

La stratégie utilise l’indicateur ATR pour calculer la volatilité des prix et, en combinaison avec la direction de la tendance, pour déterminer si les prix ont franchi le canal de la volatilité. La cohérence des tendances longues et courtes des prix VWAP pour différents cycles est également introduite. La logique spécifique est la suivante:

  1. Le canal ATR pour calculer les fluctuations de prix
  2. Déterminer si le prix a franchi le canal de la volatilité
    1. Le dépassement de la trajectoire a été jugé comme une tendance.
    2. La tendance à la baisse est considérée comme optimiste
  3. Introduction des prix du VWAP en périphérie et en journée
    1. Un signal de position longue est généré si la ligne solaire et la ligne périphérique VWAP sont toutes deux au-dessus du prix lorsque le prix dépasse le taux de volatilité
    2. Lorsqu’un prix dépasse le taux de fluctuation, un signal de position vide est généré si la ligne solaire et la ligne circulaire VWAP sont en dessous du prix

La logique centrale de la stratégie est la suivante: les fluctuations des taux ATR déterminent les tendances à court terme, les prix VWAP déterminent les tendances à long terme, et les deux combinent la cohérence des tendances pour générer des signaux de négociation.

Avantages stratégiques

  • L’ATR et le VWAP combinés permettent d’évaluer les tendances de manière plus fiable
  • Paramètres ATR configurables permettant d’ajuster la sensibilité de la stratégie
  • Introduction de VWAP à différentes périodes pour juger de la cohérence des tendances à longue et courte durée
  • Flexible pour passer d’une ligne longue à une ligne courte
  • Utilisé pour suivre les tendances de la ligne longue dans les actions

Risques stratégiques et optimisation

  • La stratégie de suivi de la tendance est de générer plus de transactions pendant la phase d’ajustement aux chocs, ce qui entraîne un risque de glissement.
  • Les paramètres ATR et VWAP affectent les performances de la stratégie et nécessitent des tests prudents sur les différentes variétés
  • La mise en place d’un mécanisme de prévention des pertes pourrait être envisagée.
  • Il peut être combiné avec des indicateurs tels que la ligne uniforme pour filtrer les signaux d’entrée de jeu et réduire les transactions inutiles.

Résumer

Cette stratégie permet de suivre les tendances des actions en utilisant le double jugement de la volatilité de l’ATR et du VWAP. Il y a beaucoup de place pour l’optimisation de la stratégie. Les paramètres peuvent être ajustés ou ajoutés à d’autres signaux d’optimisation d’indicateurs techniques.

Code source de la stratégie
/*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)