Esta estrategia juzga la dirección de la tendencia basada en romper los máximos y mínimos periódicos.
La estrategia primero lee el ciclo definido por el usuario (diario, semanal, etc.) y los períodos de retroceso. Luego obtiene los precios más altos y más bajos para el período de retroceso basado en estos parámetros. Por ejemplo, si se establece en ciclo diario y período de retroceso 1, toma los precios más altos y más bajos para el día anterior.
En el comercio real, si el precio de cierre es mayor o igual al precio más bajo del período de retroceso, se juzga como un avance al alza y se va largo.
Al capturar la dirección de la tendencia a través de la ruptura de los máximos y mínimos periódicos, esta estrategia pertenece a una especie de estrategia de seguimiento de tendencias.
Las principales ventajas de esta estrategia son las siguientes:
Capturar la gran tendencia después de una fuerte consolidación juzgando la dirección basada en los puntos de avance.
Simple y fácil de entender, muy adecuado para que los principiantes aprendan y usen.
Fácil de optimizar mediante el ajuste de parámetros periódicos, aplicables a diferentes variedades.
Puede configurar la entrada inversa para la operación inversa, enriqueciendo el uso de la estrategia.
Dibujando máximos y mínimos periódicos para ayudar al juicio y formar una validación múltiple.
También hay algunos riesgos:
No puede filtrar eficazmente la volatilidad lateral, posibles múltiples operaciones erróneas.
No se puede controlar el stop loss, existe cierto grado de riesgo de pérdida.
Debido a los costes de negociación, el PnL real puede desviarse.
No se puede limitar el tamaño de la posición, existe un riesgo de sobre-negociación.
Para hacer frente a estos riesgos, se pueden utilizar métodos como establecer stop loss, optimizar las condiciones del filtro, controlar el tamaño de la posición.
Las principales direcciones de optimización son:
Añadir mecanismos de filtro para evitar la apertura frecuente durante los laterales.
Establecer una pérdida de detención posterior o una pérdida de detención temporal para controlar el riesgo de pérdida única y garantizar la rentabilidad general.
Optimizar el tamaño de las posiciones y la gestión del dinero para evitar el exceso de operaciones y garantizar la estabilidad.
Prueba los efectos de diferentes parámetros periódicos y selecciona las combinaciones óptimas de parámetros.
Aumentar los módulos de comercio algorítmico, usar algoritmos de aprendizaje automático para mejorar la eficiencia de la decisión.
En resumen, esta estrategia innovadora de backtest alto bajo es simple de operar basada en el seguimiento de tendencias, adecuada para que los principiantes aprendan, pero existen riesgos de quedar atrapados. Al agregar optimizaciones como filtros, paradas, control de posición, estos riesgos se pueden reducir y los resultados de la estrategia mejorados. Puede proporcionar ideas y referencias para nuestra investigación y mejoras posteriores.
/*backtest start: 2023-01-01 00:00:00 end: 2024-01-07 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 //////////////////////////////////////////////////////////// // Copyright by HPotter v1.0 03/07/2018 // This script shows a high and low period value. // Width - width of lines // SelectPeriod - Day or Week or Month and etc. // LookBack - Shift levels 0 - current period, 1 - previous and etc. // // You can change long to short in the Input Settings // WARNING: // - For purpose educate only // - This script to change bars colors. //////////////////////////////////////////////////////////// strategy(title="High and Low Levels Backtest", shorttitle="HL Levels", overlay = true) SelectPeriod = input("D", defval="D") LookBack = input(1, minval=0) reverse = input(false, title="Trade reverse") xHigh = request.security(syminfo.tickerid, SelectPeriod, high[LookBack]) xLow = request.security(syminfo.tickerid, SelectPeriod, low[LookBack]) vS1 = xHigh vR1 = xLow pos = iff(close > vR1, 1, iff(close < vS1, -1, nz(pos[1], 0))) possig = iff(reverse and pos == 1, -1, iff(reverse and pos == -1, 1, pos)) if (possig == 1) strategy.entry("Long", strategy.long) if (possig == -1) strategy.entry("Short", strategy.short) barcolor(possig == -1 ? red: possig == 1 ? green : blue )