Stratégie de trading quantitative basée sur les bandes de Bollinger et le VWAP


Date de création: 2024-01-04 15:59:46 Dernière modification: 2024-01-04 15:59:46
Copier: 0 Nombre de clics: 1122
1
Suivre
1621
Abonnés

Stratégie de trading quantitative basée sur les bandes de Bollinger et le VWAP

Aperçu

Cette stratégie combine deux indicateurs, la bande de Brin (BB) et la moyenne de la valeur du prix typique (VWAP) pour prendre des décisions d’achat et de vente. Elle permet de détecter des anomalies de prix à court terme et de négocier, ce qui convient aux transactions à court terme.

Principe de stratégie

La stratégie consiste essentiellement à acheter et à vendre selon les règles suivantes:

  1. La ligne EMA rapide est supérieure à la ligne EMA lente comme condition préalable pour juger de la tendance

  2. Lorsque le prix de clôture est supérieur au VWAP, le prix est considéré comme augmenté et acheté

  3. Si une des 10 lignes K précédentes a un prix de clôture inférieur à celui de la voie descendante de Brin, elle est considérée comme un achat anormal.

  4. Lorsque le prix de clôture est supérieur à la hausse de Brin, le prix est considéré comme inversé et vendu.

Plus précisément, la stratégie détermine d’abord si l’EMA de 50 jours est supérieure à l’EMA de 200 jours, en utilisant l’EMA rapide pour déterminer la tendance générale. Ensuite, en combinaison avec le VWAP, pour déterminer si le prix est en hausse à court terme.

La règle d’exit est plus simple: lorsque le prix est supérieur à la barre de Brin, le prix est considéré comme ayant fait un revers et s’est retiré.

Analyse des avantages

Cette stratégie combine plusieurs indicateurs pour juger des anomalies de prix, ce qui augmente l’efficacité des signaux d’entrée. L’utilisation de l’EMA pour juger des tendances majeures permet d’éviter les opérations de revers. La combinaison du VWAP permet de capturer les opportunités de hausse des prix à court terme.

Analyse des risques

  1. L’EMA a jugé que les grandes tendances ne pouvaient pas conduire à des opérations de contrepartie
  2. L’indicateur VWAP est préférable pour les données horaires ou journalières, mais il est réduit si vous utilisez les données en ligne solaire.
  3. Les paramètres de la bande de Brin sont mal réglés, les limites de la voie ascendante ou descendante sont trop larges ou trop étroites, ce qui entraîne une erreur de signal

Pour ces risques, il est possible d’ajuster le paramètre de la période EMA de manière appropriée ou d’essayer d’autres indicateurs de jugement de la grande tendance. Le paramètre VWAP est utilisé pour les données intraday ou adapté à d’autres indicateurs de courte ligne.

Direction d’optimisation

  1. Essayez d’utiliser d’autres indicateurs comme le MACD
  2. Optimiser les paramètres de l’EMA et de la bande de Bryn pour trouver la meilleure configuration
  3. Augmentation du mécanisme de prévention des pertes
  4. Combiné avec d’autres indicateurs Filtrer les faux signaux
  5. Test de différentes variétés et données de cycle

Résumer

La stratégie combine deux indicateurs, les bandes de Brin et le VWAP, pour déterminer les anomalies de prix à court terme comme moment d’entrée. L’utilisation de l’EMA pour déterminer les grandes tendances évite les opérations de contre-courant. Des opportunités de tendances de prix à court terme peuvent être rapidement découvertes.

Code source de la stratégie
/*backtest
start: 2023-12-04 00:00:00
end: 2024-01-03 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/
// © mohanee

//@version=4
strategy(title="VWAP and BB strategy [EEMANI]", overlay=true,pyramiding=2, default_qty_value=3, default_qty_type=strategy.fixed,    initial_capital=10000, currency=currency.USD)
//This strategy combines VWAP and BB indicators
//BUY RULE
//1. EMA50 > EMA 200
//2. if current close > vwap session  value 
//3. check if  price dipped BB lower band for any of last 10 candles
//EXIT RULE
//1. price closes above BB upper band   
//STOP LOSS EXIT
//1. As configured --- default is set to 5%

is_price_dipped_bb(pds,source1) =>
    t_bbDipped=false
    for i=1 to pds
        t_bbDipped:=  (t_bbDipped   or  close[i]<source1) ? true : false
        if t_bbDipped==true
            break
        else
            continue
            
    t_bbDipped
    
// variables  BEGIN
shortEMA = input(50, title="fast EMA", minval=1)
longEMA = input(200, title="slow EMA", minval=1)

//BB

smaLength = input(20, title="BB SMA Length", minval=1)
bbsrc = input(close, title="BB Source")



//addOnDivergence = input(true,title="Add to existing on Divergence")
//exitOption = input(title="exit on RSI or BB", type=input.string, options=["RSI", "BB"],      defval="BB")

//bbSource = input(title="BB  source", type=input.string, options=["close", "vwap"],      defval="close")
     
//vwap_res = input(title="VWAP Resolution", type=input.resolution, defval="session")
stopLoss = input(title="Stop Loss%", defval=5, minval=1)

//variables  END




longEMAval= ema(close, longEMA)
shortEMAval= ema(close, shortEMA)


vwapVal=vwap(close)



// Drawings

//plot emas
plot(longEMAval, color = color.orange, linewidth = 1, transp=0)
plot(shortEMAval, color = color.green, linewidth = 1, transp=0)


//bollinger calculation 
mult = input(2.0, minval=0.001, maxval=50, title="StdDev")
basis = sma(bbsrc, smaLength)
dev = mult * stdev(bbsrc, smaLength)
upperBand = basis + dev
lowerBand = basis - dev
offset = input(0, "Offset", type = input.integer, minval = -500, maxval = 500)
//bollinger calculation 

//plot bb
//plot(basis, "Basis", color=#872323, offset = offset)
p1 = plot(upperBand, "Upper", color=color.teal, offset = offset)
p2 = plot(lowerBand, "Lower", color=color.teal, offset = offset)
fill(p1, p2, title = "Background", color=#198787, transp=95)


plot(vwapVal, color = color.purple, linewidth = 1, transp=0)


// Colour background

barcolor(shortEMAval>longEMAval and close<=lowerBand ? color.yellow: na)
  

//longCondition=  shortEMAval > longEMAval and  close>open and  close>vwapVal
longCondition= shortEMAval >= longEMAval  and  close>=vwapVal and close>open  //      close>vwapVal   and   



//Entry
strategy.entry(id="VWAP_BB LE", comment="VB LE" , long=true,  when= longCondition and  is_price_dipped_bb(10,lowerBand) )  //and strategy.position_size<1 

//add to the existing position
//strategy.entry(id="VWAP_RSI LE", comment="VR LE Add" , long=true,  when= addOnDivergence==true and strategy.position_size>=1 and close<strategy.position_avg_price   and (close<lowerBand or  low<lowerBand) and rsiVal>rsi_buy_line)

barcolor(strategy.position_size>=1  ? color.blue: na)



strategy.close(id="VWAP_BB LE", comment="TP Exit VB LE",   when=crossover(close,upperBand) )

//stoploss
stopLossVal =   strategy.position_avg_price * (1-(stopLoss*0.01) )
strategy.close(id="VB LE", comment="SL Exit",   when= close < stopLossVal)