El objetivo de esta estrategia es permitir a los usuarios personalizar la hora de inicio de la backtesting para una backtesting más flexible y personalizable.
Esta estrategia utiliza las funciones de tiempo y marca de tiempo de Pine Script para implementar una hora de inicio de backtest personalizable.
Primero permite a los usuarios ingresar un año, mes, fecha, hora y minuto de inicio de backtest personalizados en la configuración. Luego utiliza estas entradas para generar una marca de tiempo y la almacena en la variable startTime.
En la verificación de la condición de la estrategia, se agrega una nueva condición de startTime. La estrategia solo se iniciará cuando el tiempo actual sea mayor o igual a startTime.
Por ejemplo:
longCondition = crossover(sma(close, 14), sma(close, 28))
if (longCondition and startTime)
strategy.entry("My Long Entry Id", strategy.long)
Esto permite implementar un tiempo de inicio de backtest personalizable. Los usuarios pueden configurar flexiblemente el tiempo de inicio de backtesting en lugar de estar limitados a tiempos codificados.
Esta estrategia de tiempo de inicio de backtest personalizable tiene las siguientes ventajas:
Más flexible: los usuarios pueden personalizar completamente el tiempo de inicio de la prueba posterior en lugar de estar limitados a un punto fijo en el tiempo.
Más realista: el tiempo de inicio se puede ajustar al tiempo de ejecución real de la estrategia, lo que hace que el backtest sea más realista.
Conveniente para pruebas de retroceso basadas en eventos: la hora de inicio se puede establecer en función de la hora de ocurrencia de un evento para pruebas de retroceso de eventos específicos.
Ajuste fácil de las condiciones: Las condiciones de inicio de las pruebas de retroceso se pueden ajustar fácilmente para realizar pruebas de retroceso específicas de diferentes etapas.
Repetible y confiable: la parametrización del tiempo de inicio de la prueba posterior permite resultados de prueba posterior repetibles y confiables.
El uso de un tiempo de inicio de backtest personalizable también tiene algunos riesgos:
Los resultados dependen de la hora de inicio: los diferentes tiempos de inicio pueden dar lugar a resultados muy diferentes de las pruebas de retroceso.
El tiempo de inicio requiere una selección cuidadosa: los tiempos de inicio irrazonables pueden causar distorsión en los resultados de las pruebas posteriores.
Aumento del riesgo de ajuste de la curva: fácil sobreajuste ajustando la hora de inicio a los datos históricos.
Comparabilidad reducida: los resultados de esta estrategia son menos comparables a los de las pruebas de retrospectiva de tiempo de inicio fijo.
Soluciones:
Se realizarán pruebas de retroceso varias veces para evaluar el impacto de los cambios en la hora de inicio en los resultados.
Elige los tiempos de eventos significativos como tiempos de inicio para minimizar la distorsión.
Ajuste cuidadosamente las horas de inicio para evitar el sobreajuste de los datos históricos.
Mantener las pruebas de retroceso de tiempo de inicio fijo como referencia para la comparación con las pruebas de retroceso personalizadas.
Esta estrategia de tiempo de inicio de backtest personalizable también puede mejorarse en los siguientes aspectos:
Soporte para la personalización de los tiempos de inicio y final para una configuración totalmente flexible de la ventana de tiempo de backtest.
Soporte para múltiples modos de tiempo: fechas específicas, fechas relativas, basadas en eventos, etc. para una configuración de tiempo más inteligente y conveniente.
Soporte de interfaz de configuración gráfica para una configuración de parámetros de tiempo más intuitiva.
Apoyo a la configuración de diferentes granularidades de tiempo: año, mes, día, hora, minuto, segundo, etc.
Registro de la configuración del tiempo de prueba posterior para obtener resultados reproducibles, rastreables y comparables.
Añadir la validación de configuraciones de tiempo incorrectas para evitar pruebas de retroceso de baja calidad debido a configuraciones de tiempo irrazonables.
Proporcionar una vinculación de tiempo de inicio para sincronizar fácilmente los tiempos de inicio en múltiples estrategias.
Esta estrategia permite una configuración personalizable y flexible de los tiempos de inicio de backtest para reducir las limitaciones y hacer que los backtests sean más realistas. Pero la dependencia de los resultados en los tiempos de inicio debe tenerse en cuenta para usar múltiples backtests, modelos basados en eventos, etc. para reducir la distorsión.
/*backtest start: 2022-09-19 00:00:00 end: 2023-09-25 00:00:00 period: 2d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("C320up Strategy Tester Start Time", overlay = true) // Copy and paste below into your strategy // Strategy Tester Start Time xYear = input(2018, title = "Start Year") xMonth = input(01, title = "Start Month", minval = 01, maxval = 12) xDay = input(01, title = "Start Day", minval = 01, maxval = 31) xHour = input(00, title = "Start Hour", minval = 00, maxval = 23) xMinute = input(00, title = "Start Minute", minval = 00, maxval = 59) startTime = time >= timestamp(xYear, xMonth, xDay, xHour, xMinute) // End copy and paste // Add (and startTime) at the end of your condition/s to activate // The strategy below is just an example longCondition = crossover(sma(close, 14), sma(close, 28)) if (longCondition and startTime) strategy.entry("My Long Entry Id", strategy.long) shortCondition = crossunder(sma(close, 14), sma(close, 28)) if (shortCondition and startTime) strategy.entry("My Short Entry Id", strategy.short) // Happy trading!