Estrategia para romper la banda de Bollinger con la media móvil de la cruz dorada


Fecha de creación: 2023-11-21 12:01:25 Última modificación: 2023-11-21 12:01:25
Copiar: 0 Número de Visitas: 820
1
Seguir
1617
Seguidores

Estrategia para romper la banda de Bollinger con la media móvil de la cruz dorada

Descripción general

Esta estrategia combina el indicador de la media móvil, el indicador de la banda de Brin y el indicador de precios promedio ponderado por volumen de transacción, para determinar la entrada en las condiciones de formación de horquillas doradas y de cruce de la línea de media larga en la línea de media corta. La estrategia también utiliza el canal de la banda de Brin, y solo considera la entrada cuando los precios tocan la banda de Brin, lo que evita la entrada frecuente en las fluctuaciones del mercado.

Principio de estrategia

La estrategia se basa principalmente en el indicador de la línea media para determinar la dirección de la tendencia, y utiliza a Brin para ubicar un punto de compra en el rango de fluctuación. En concreto, la estrategia incluye las siguientes reglas clave:

  1. Construir un sistema de determinación de la horquilla de oro usando el EMA de 50 días y el EMA de 200 días, que se considera en una tendencia alcista cuando se cruza una media móvil lenta sobre una media móvil rápida;

  2. Cuando el precio es mayor que el VWAP, se considera que está en la fase de subida del precio, lo que favorece la creación de más posiciones;

  3. Cuando el precio acaba de tocar o romper el tren de descenso de Brin, indica que el precio de la acción podría estar cerca del punto de rebote, con una mejor oportunidad;

  4. Después de entrar en una posición de múltiples titulares, el precio supera el límite de salida de Brin en el momento en que se pone en marcha.

La combinación de estas reglas permite a la estrategia elegir el punto de compra adecuado en un mercado alcista y establecer un stop loss para asegurar la ganancia.

Ventajas estratégicas

  • Utilizando el sistema de análisis de la horca de oro para determinar la dirección de las grandes tendencias y evitar ganancias y pérdidas menores en situaciones de crisis;

  • El indicador VWAP permite determinar la dirección de las fluctuaciones de los precios, lo que permite una selección más precisa de los puntos de compra.

  • Los indicadores de la banda de Brin determinan el punto de compra para hacer que la estrategia sea más resistente, mientras que se establece un stop-loss para bloquear los beneficios.

  • Los diferentes indicadores se verifican entre sí para que los juicios estratégicos sean más precisos y fiables.

Riesgos estratégicos y soluciones

  • El sistema de determinación de la horca de oro puede emitir falsas señales, por lo que la duración del ciclo de la línea media debe reducirse adecuadamente y se debe validar con otros indicadores.

  • La configuración incorrecta de los parámetros de la banda de Bryn también puede hacer que la estrategia pierda su validez, y se debe ajustar el ciclo de la banda de Bryn y los parámetros de la diferencia estándar;

  • El punto de parada está demasiado flojo para controlar eficazmente las pérdidas. Se debe apretar adecuadamente el rango de parada para asegurar que el riesgo sea controlado.

Dirección de optimización de la estrategia

  • Optimización de combinaciones de líneas medias de la horquilla de oro, prueba de diferentes parámetros de líneas medias para encontrar el mejor parámetro;

  • Prueba de los diferentes parámetros de las bandas de Bryn para encontrar la mejor combinación de amplitud y dispersión.

  • Prueba y optimiza el alcance de los estancamientos para controlar los riesgos de manera efectiva y no ser demasiado susceptible a los disparos.

Resumir

Esta estrategia utiliza un sistema de línea uniforme, la banda de Brin y el indicador VWAP para determinar el momento de entrada, y se hace un equilibrio entre las oportunidades de descubrimiento y los riesgos de control. A través de la optimización de los parámetros posteriores y la modificación de las reglas, se espera que se bloqueen las oportunidades continuas en la industria y el mercado.

Código Fuente de la Estrategia
/*backtest
start: 2022-11-14 00:00:00
end: 2023-11-20 00:00:00
period: 1d
basePeriod: 1h
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 [$$]", overlay=true,pyramiding=2, default_qty_value=1, default_qty_type=strategy.fixed,    initial_capital=10000, currency=currency.USD)


fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 6, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2020, title = "From Year", minval = 1970)
 
// To Date Inputs
toDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 8, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2020, title = "To Year", minval = 1970)
 
// Calculate start/end date and time condition
DST = 1 //day light saving for usa
//--- Europe
London = iff(DST==0,"0000-0900","0100-1000")
//--- America
NewYork = iff(DST==0,"0400-1300","0500-1400")
//--- Pacific
Sydney = iff(DST==0,"1300-2200","1400-2300")
//--- Asia
Tokyo = iff(DST==0,"1500-2400","1600-0100")

//-- Time In Range
timeinrange(res, sess) => time(res, sess) != 0

london = timeinrange(timeframe.period, London)
newyork = timeinrange(timeframe.period, NewYork)

startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = time >= startDate and time <= finishDate 


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


is_bb_per_dipped(pds,bbrSrc) =>
    t_bbDipped=false
    for i=1 to pds
        t_bbDipped:=  (t_bbDipped   or  bbrSrc[i]<=0) ? 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(7, title="BB SMA Length", minval=1)
bbsrc = input(close, title="BB Source")

strategyCalcOption = input(title="strategy to use", type=input.string, options=["BB", "BB_percentageB"],      defval="BB")



//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=1, minval=1)

//variables  END

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


vwapVal=vwap(close)



// Drawings

//plot emas
plot(shortEMAval, color = color.green, linewidth = 1, transp=0)
plot(longEMAval, color = color.orange, linewidth = 1, transp=0)
plot(ema200val, color = color.purple, linewidth = 2, style=plot.style_line ,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)

bbr = (bbsrc - lowerBand)/(upperBand - lowerBand) 
//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 = 2, 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>open and close>vwapVal and close<upperBand ) //and time_cond //     and  close>=vwapVal 



//Entry
strategy.entry(id="long", comment="VB LE" , long=true,  when= longCondition and ( strategyCalcOption=="BB"? is_price_dipped_bb(10,lowerBand) : is_bb_per_dipped(10,bbr)  )   and strategy.position_size<1 )   //is_price_dipped_bb(10,lowerBand))  //and strategy.position_size<1       is_bb_per_dipped(15,bbr) 


//add to the existing position
strategy.entry(id="long", comment="Add" , long=true,  when=strategy.position_size>=1 and close<strategy.position_avg_price and close>vwapVal) //and time_cond)

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



strategy.close(id="long", comment="TP Exit",   when=crossover(close,upperBand) )

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

//strategy.risk.max_intraday_loss(stopLoss, strategy.percent_of_equity)