Esta estrategia está diseñada sobre la base del indicador de saldos de volumen para determinar el poder de compra y venta en el mercado.
El indicador de saldos de volumen (VB) refleja la fuerza impulsora de las variaciones de volumen en los precios.
Calcular la tasa de volatilidad intradiaria del precio típico como el impulso del precio.
Juzgar el poder de compra y venta en el cercano por el producto del volumen y el impulso de los precios.
El indicador fluctúa por encima y por debajo del eje cero. Los criterios para medir el poder de compra y venta son el positivo y el negativo del valor del indicador.
Esta estrategia construye el indicador VB y establece una línea de señal. Una señal de compra se genera cuando el indicador VB cruza por encima de la línea de señal. Una señal de venta se genera cuando el indicador VB cruza por debajo de la línea de señal.
Los principales pasos del código son:
Calcular la tasa de volatilidad intradiaria del precio típico como el impulso del precio.
Establezca el coeficiente de rango de corte para el momento. El exceso de momento por encima del rango se toma como coeficiente.
Calcular el vcp de momento cuantificado después del corte.
Sumar vcp para obtener el indicador cuantificado vfi.
Establezca la longitud de la línea de señal y obtenga vfima.
Compare el indicador VB vfi con la línea de señal vfima para generar señales comerciales.
Las ventajas de esta estrategia son:
Utilice la relación volumen-precio para juzgar el poder de compra y venta, sin ser afectado por el precio en sí.
El rango de cálculo del momento cuantificado puede controlarse mediante parámetros para evitar el impacto de las fluctuaciones anormales.
La combinación de la comparación entre el propio indicador VB y la línea de señal puede establecer un tiempo de entrada razonable.
El método de cálculo del indicador es simple y claro, fácil de operar en operaciones en vivo.
Parámetros de indicadores y parámetros de líneas de señal personalizables para optimizar el rendimiento de la estrategia.
Esta estrategia también presenta algunos riesgos:
El indicador VB es sensible a las fluctuaciones anormales de precios.
La probabilidad de divergencia de los precios con respecto a las señales de los indicadores es elevada.
Los parámetros del indicador y los parámetros de la línea de señal necesitan una optimización adecuada para evitar señales falsas.
Más adecuado para productos con características obvias de volumen-precio, no adecuado para productos de baja liquidez.
Preste atención a la divergencia del indicador, que puede indicar una inversión del mercado.
Los riesgos se pueden controlar ajustando el rango de parámetros, utilizando otros filtros, permitiendo una parada de pérdida suelta adecuada, etc.
La estrategia se puede optimizar en los siguientes aspectos:
Optimizar los parámetros de cálculo para el momento cuantificado para equilibrar la sensibilidad y la estabilidad.
Optimice los parámetros de la línea de señal para equilibrar el retraso y el ruido.
Añadir otros indicadores como el análisis de la dispersión de volumen para su verificación.
Añadir indicadores de tendencia y soporte/resistencia para evitar operaciones desfavorables.
Establecer un stop loss dinámico basado en la volatilidad del mercado.
Utilice el aprendizaje automático para encontrar la combinación óptima de parámetros.
Prueba de retroceso en una variedad de productos y plazos para evaluar la robustez.
Comparar los parámetros de los indicadores con el impacto en la curva de beneficios para encontrar el óptimo.
Esta estrategia juzga el poder de compra / venta basado en el indicador de saldos de volumen. Tiene ventajas como diseño de indicadores simples y parámetros ajustables, y también riesgos como señales falsas.
/*backtest start: 2023-09-29 00:00:00 end: 2023-10-29 00:00:00 period: 3h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("VB Strategy", overlay=true) length = input(130, title="거래량 길이") coef = input(0.2, title="계수") vcoef = input(2.5, title="최대 계수") signalLength=input(5) smoothVFI=input(false, type=bool, title="부드럽게") //볼밴 length2 = input(20, minval=1, title="볼밴 길이") ma(x,y) => smoothVFI ? 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) 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 ) d=vfi-vfima upper = vfima + stdev(vfi, length2) lower = vfima - stdev(vfi, length2) buysignal = cross(vfi, lower) and crossunder(vfi, lower) == 1 ? vfima : na sellsignal = cross(vfi, upper) and crossover(vfi, upper) == 1 ? vfima : na //times = timestamp("GMT+6", 2017, 12, 6, 00, 00) //if (buysignal and times <= time) if (buysignal) if(strategy.position_size < 0) strategy.close("SHORT") if(strategy.position_size > 0) strategy.order("LONG", true, 1, when = (low+high)/2) if(strategy.position_size == 0) strategy.entry("LONG", strategy.long, when = (low+high)/2) //if (sellsignal and times <= time) if (sellsignal) if(strategy.position_size > 0) strategy.close("LONG") if(strategy.position_size < 0) strategy.order("SHORT", false, 1, when = (low+high)/2) if(strategy.position_size == 0) strategy.entry("SHORT", strategy.short, when = (low+high)/2)