
La estrategia primero combina el indicador de precios de volumen VFI y las medias móviles para construir un juicio de tendencia, y luego combina el indicador de la banda de Bryn para juzgar un evento de reversión, logrando una combinación orgánica de comercio de tendencia y comercio de conmoción.
La estrategia se compone principalmente de las siguientes partes:
El indicador VFI determina la tendencia. Combina la tasa de variación de parámetros de precios típicos y el cambio en el volumen de transacciones para determinar la tendencia de precios, logrando una coincidencia razonable entre los precios.
El indicador de diferencia de la EMA determina la tendencia. Calcula la proporción de diferencia entre la línea de 20 días y la línea de 50 días para determinar la dirección de la tendencia de la línea media y larga.
El indicador de la banda de Brin juzga la reversión. La banda de Brin tiene un promedio móvil simple de 20 días en el centro y una diferencia estándar de 1.5 veces el ancho de banda en el centro. Se emite una señal de negociación cuando el precio se rompe en el tren ascendente y descendente.
La amplitud del indicador VFI determina la reversión. Cuando el valor de VFI está cerca del límite superior e inferior (,20), se considera que la reversión de la tendencia es más probable.
Si se cumplen las condiciones del período de negociación, hacer más cuando el precio rompa la banda de Brin en la vía y el indicador de diferencia de VFI y EMA se apoya en la tendencia positiva; cerrar la posición cuando el precio cae por debajo de la banda de Brin, o el VFI alcanza un umbral.
La introducción del indicador VFI hace que la relación entre el precio y la cantidad sea más racional y evita el seguimiento ciego de los precios.
La combinación de la diferencia de EMA y el VFI hace que la determinación de la tendencia sea más estable y confiable.
La combinación de las bandas de Brin con el juicio inverso del indicador VFI hace que la estrategia sea más adecuada para la oscilación bidireccional del mercado.
Los indicadores de precios no evitan por completo el riesgo de falsas brechas.
El diferencial de la EMA está retrasado y no puede reaccionar a tiempo a los giros a corto plazo.
La configuración incorrecta de los parámetros de la banda de Brin puede causar el riesgo de que el comercio sea frecuente o de que el mercado sea capturado.
Resolvemos el riesgo:
Combinar más indicadores para juzgar las tendencias y evitar la dependencia de un solo indicador.
Los parámetros EMA no deben ser demasiado grandes o demasiado pequeños, ajuste los parámetros adecuadamente.
Prueba de la influencia de los cambios en los parámetros de la banda de Bryn sobre la estrategia en diferentes situaciones de mercado.
Continuar optimizando los parámetros de VFI para que sean más sensibles.
Aumentar los juicios de ruptura basados en el indicador de canal de precios o Envelopes.
Prueba la introducción de más indicadores de precio, como OBV, PVT, etc.
Introducción de tecnologías de aprendizaje automático y IA para la optimización dinámica de los parámetros.
La estrategia toma en consideración el juicio de tendencia y el juicio de reversión, y utiliza el VFI, el diferencial EMA y el indicador de las bandas de Bryn, para capturar la fluctuación bidireccional del mercado. El siguiente paso será continuar optimizando la configuración de los parámetros, enriquecer la base de juicio, ampliar el alcance de la aplicación y mejorar la rentabilidad de la estrategia.
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-24 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/
// © beststockalert
//@version=4
strategy(title="Super Bollinger Band Breakout", shorttitle = "Super BB-BO", overlay=true)
source = close
length = input(130, title="VFI length")
coef = input(0.2)
vcoef = input(2.5, title="Max. vol. cutoff")
signalLength=input(5)
// session
pre = input( type=input.session, defval="0400-0935")
trade_session = input( type=input.session, defval="0945-1700")
use_trade_session = true
isinsession = use_trade_session ? not na(time('1', trade_session)) : true
is_newbar(sess) =>
t = time("D", sess)
not na(t) and (na(t[1]) or t > t[1])
is_session(sess) =>
not na(time(timeframe.period, sess))
preNew = is_newbar(pre)
preSession = is_session(pre)
float preLow = na
preLow := preSession ? preNew ? low : min(preLow[1], low) : preLow[1]
float preHigh = na
preHigh := preSession ? preNew ? high : max(preHigh[1], high) : preHigh[1]
// vfi 9lazybear
ma(x,y) => 0 ? sma(x,y) : x
typical=hlc3
inter = log( typical ) - log( typical[1] )
vinter = stdev(inter, 30 )
cutoff = coef * vinter * close
vave = sma( volume, length )[1]
vmax = vave * vcoef
vc = iff(volume < vmax, volume, vmax) //min( volume, vmax )
mf = typical - typical[1]
vcp = iff( mf > cutoff, vc, iff ( mf < -cutoff, -vc, 0 ) )
vfi = ma(sum( vcp , length )/vave, 3)
vfima=ema( vfi, signalLength )
//ema diff
ema20 = ema(close,20)
ema50 = ema(close,50)
diff = (ema20-ema50)*100/ema20
ediff = ema(diff,20)
//
basis = sma(source, 20)
dev = 1.5 * stdev(source, 20)
upper = basis + dev
lower = basis - dev
ema9 = ema(source, 9)
if ( ((crossover(source, upper) and diff>ediff and diff>0) or (close>upper and (vfi >0 or vfima>0 or ediff>0.05) and (vfi<14 or vfima<14)) ))
strategy.entry("Long", strategy.long)
if (crossunder(source, lower) or vfi>19 or vfima>19 or diff<(ediff+0.01) )
strategy.close("Long")