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