Estrategia de trading cuantitativo basada en las bandas de Bollinger y VWAP


Fecha de creación: 2024-01-04 15:59:46 Última modificación: 2024-01-04 15:59:46
Copiar: 0 Número de Visitas: 1122
1
Seguir
1621
Seguidores

Estrategia de trading cuantitativo basada en las bandas de Bollinger y VWAP

Descripción general

La estrategia combina dos indicadores, el Brin’s Band (BB) y el típico precio-valor promedio (VWAP) para tomar decisiones de compra y venta. Puede detectar anomalías en los precios a corto plazo y luego realizar operaciones que son adecuadas para operaciones de corta línea.

Principio de estrategia

La estrategia consiste en comprar y vender de acuerdo con las siguientes reglas:

  1. La línea EMA rápida es más alta que la línea EMA lenta como requisito previo para juzgar la tendencia

  2. Comprar cuando el precio de cierre es superior al VWAP

  3. Si una de las 10 líneas K anteriores tiene un precio de cierre por debajo de la línea inferior de Brin, se considera una compra anormal

  4. Cuando el precio de cierre es superior a la salida de Brin, el precio se invierte y se vende

En concreto, la estrategia primero determina si la EMA de 50 días es superior a la EMA de 200 días, utiliza la EMA lenta y rápida para determinar la tendencia general. Luego, en combinación con el VWAP, determina si el precio está en una tendencia alcista en el corto plazo.

La regla de salida es más simple: cuando el precio es más alto que la banda de Brin, el precio se ha invertido y se retira.

Análisis de las ventajas

Esta estrategia combina las excepciones de varios indicadores para determinar el precio y aumenta la eficacia de las señales de entrada. El uso de EMA para determinar una gran tendencia evita la operación de reversión. La combinación de VWAP permite capturar oportunidades de alza de precios a corto plazo.

Análisis de riesgos

  1. La EMA considera que las grandes tendencias no deben conducir a una operación de mercado a la inversa
  2. El indicador VWAP es mejor para efectos de datos por hora o por día, si se usa para efectos de datos de línea diaria, se obtiene un descuento
  3. Los parámetros de la banda de Bryn están mal configurados, los límites de las vías ascendentes y descendentes son demasiado anchos o demasiado estrechos, lo que puede causar errores de señal

Para estos riesgos, se puede ajustar adecuadamente el parámetro de ciclo de EMA o probar otros indicadores de juicio de tendencias importantes. El parámetro VWAP se aplica a los datos intradiarios o se ajusta a otros indicadores de línea corta. Se ajusta el parámetro de la banda de Bryn para encontrar la amplitud óptima.

Dirección de optimización

  1. Prueba con otros indicadores para determinar las grandes tendencias, como el MACD
  2. Optimización de EMA y de los parámetros de la banda de Bryn para encontrar la mejor configuración
  3. Aumentar el mecanismo de suspensión de pérdidas
  4. Combinación con otros indicadores para filtrar falsas señales
  5. Prueba de diferentes variedades y datos de ciclo

Resumir

La estrategia combina dos indicadores, el Brin Belt y el VWAP, para determinar las anomalías de precios a corto plazo como momento de entrada. Utiliza la EMA para determinar las grandes tendencias para evitar operaciones contraproducentes. Puede descubrir rápidamente oportunidades de tendencias de precios cortas.

Código Fuente de la Estrategia
/*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)