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