Esta estrategia utiliza principalmente los precios altos, bajos y cerrados del día de negociación anterior como los niveles de soporte y resistencia para el día actual.
En primer lugar, el código define una función calculaSupportResistance para calcular los niveles de soporte y resistencia, que extrae los precios altos, bajos y cerrados del día de negociación anterior como los niveles de soporte y resistencia del día actual.
Entonces en la lógica principal, esta función se llama para obtener estos tres niveles de precios y trazarlos.
En la lógica de backtesting, si el precio de cierre es menor que el mínimo del día anterior mientras que el precio actual es mayor que ese mínimo formando una ruptura, va largo.
A través de este modelo de ruptura, se implementa el juicio de la tendencia y la generación de señales comerciales.
Utilice los datos de los días de negociación anteriores para construir los niveles de soporte y resistencia del día actual, evitando el problema de optimización de parámetros
Los niveles de soporte y resistencia provienen de datos reales de las operaciones de mercado, con cierto valor de referencia
Modelo de backtesting simple y directo, fácil de entender e implementar
La visualización de los niveles de soporte y resistencia forma la percepción de los precios
Monitoreo en tiempo real de las rupturas, captura oportuna de oportunidades de negociación
Los niveles de soporte y resistencia cambian con el tiempo, difícil de determinar la validez
Incapacidad para predecir la dirección de la tendencia, riesgo de reversiones perdidas
Se ve afectado fácilmente por falsas fugas, riesgo de entrada prematura
No se puede determinar la persistencia de las rupturas, es probable que se detenga la pérdida temprana
Es más probable que el soporte y la resistencia individuales no funcionen bajo una gran fluctuación del mercado
Contramedidas:
Combinar más factores para juzgar la validez de las rupturas
Ampliar adecuadamente el rango de stop loss para detectar las tendencias
Posiciones abiertas en lotes, reducir el impacto de las fluctuaciones individuales
Añadir más datos históricos como líneas de 5 días, 10 días para determinar los niveles
Incorporar otros indicadores como el volumen para juzgar la validez de la ruptura
Se trata de los valores de los valores de los instrumentos de inversión de los que se trata en el artículo 67, apartado 2, del RRC.
Optimización de la gestión de capital, control de pérdidas individuales
En general, esta es una estrategia de ruptura típica, simple e intuitiva. Al construir el soporte y la resistencia del día actual con los datos del día anterior y hacer pruebas de retroceso de las rupturas de esos niveles para largo / corto. Los pros son fáciles de entender y visualizar directamente los niveles; los contras son riesgos de ruptura falsos e incertidumbre de persistencia. Los próximos pasos son mejorar la validez de la ruptura, controlar los riesgos, optimizar la gestión de capital, etc.
/*backtest start: 2024-01-22 00:00:00 end: 2024-02-21 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Support and Resistance with Backtesting", overlay=true) // Function to calculate support and resistance levels calculateSupportResistance() => highPrevDay = request.security(syminfo.tickerid, "D", high[1], lookahead=barmerge.lookahead_on) lowPrevDay = request.security(syminfo.tickerid, "D", low[1], lookahead=barmerge.lookahead_on) closePrevDay = request.security(syminfo.tickerid, "D", close[1], lookahead=barmerge.lookahead_on) [highPrevDay, lowPrevDay, closePrevDay] // Call the function to get support and resistance levels [supResHigh, supResLow, supResClose] = calculateSupportResistance() // Plotting support and resistance levels plot(supResHigh, color=color.red, linewidth=2, title="Previous Day High") plot(supResLow, color=color.green, linewidth=2, title="Previous Day Low") plot(supResClose, color=color.blue, linewidth=2, title="Previous Day Close") // Backtesting logic backtestCondition = close[1] < supResLow and close > supResLow strategy.entry("Long", strategy.long, when=backtestCondition) // Plotting buy/sell arrows for backtesting plotarrow(backtestCondition ? 1 : na, colorup=color.green, offset=-1, transp=0)