
La idea principal de esta estrategia es detectar si el precio ha roto el precio más bajo en el período especificado, y si lo hace más, esperar a que el precio regrese a la línea de la mediana. Es una estrategia de seguimiento de tendencias.
La estrategia obtiene lowestLow en el período especificado mediante la invocación del método ta.lowest de la secuencia de comandos Pine y se compara con prevLow en el período anterior.
Si el precio mínimo del ciclo más reciente es inferior al precio mínimo del ciclo anterior, se emite una señal de multiplicación. Después de la multiplicación, se compara con el precio más alto del ciclo especificado. Si el precio más alto del ciclo más reciente es mayor que el precio más alto del ciclo anterior, se iguala.
La estrategia permite elegir la condición de disparo, es decir, que el precio mínimo necesite romper uno, dos, tres o cuatro precios mínimos anteriores consecutivos para controlar la frecuencia de las operaciones.
Además, la estrategia también traza una línea media de precio mínimo (lowestLow) y una línea media de precio máximo (highestHigh) en el gráfico para mostrar de forma intuitiva los cambios en la tendencia.
La estrategia captura una reversión de la tendencia después de una ruptura de un nuevo mínimo y tiene una mayor probabilidad de éxito.
Permite seleccionar el número de brechas mínimas y controlar la frecuencia de las operaciones.
Trazar una línea media ayuda a intuir los puntos de cambio de tendencia.
La lógica de la estrategia es simple, clara y fácil de entender.
Se pueden configurar diferentes acciones y períodos de tiempo para realizar pruebas de optimización.
La brecha falsa no puede determinar el punto de reversión de la tendencia y puede provocar pérdidas.
La configuración de optimización de diferentes combinaciones de parámetros debe ser probada, de lo contrario, la frecuencia de transacción puede ser demasiado alta o demasiado baja.
Los parámetros deben ajustarse para diferentes acciones, no es conveniente para aplicaciones mecánicas.
La falta de periodicidad en la detección puede conducir a un exceso de ajuste de la estrategia.
Los precios pueden ser más bajos después de la ruptura, por lo que es necesario establecer un stop loss para controlar el riesgo.
Aumentar los mecanismos de detención de pérdidas, como la detención móvil y el seguimiento de las pérdidas, para controlar las pérdidas individuales.
Optimizar el número de brechas, equilibrando la frecuencia de las transacciones con la calidad de la señal.
Prueba de optimización de parámetros para diferentes acciones y períodos de tiempo.
El objetivo es aumentar las condiciones de filtración para evitar que las transacciones sean frecuentes en mercados convulsionados.
Considere incluir indicadores de tendencia para evitar el comercio en contra.
Prueba las diferentes señales de salida.
La estrategia se utiliza para capturar oportunidades de reversión mediante la vigilancia de brechas de precios mínimos, y es una estrategia típica de reversión de brechas. Las ventajas son que es simple y fácil de entender, la frecuencia de negociación es controlada y se puede aplicar en una variedad de acciones. Sin embargo, también existe un cierto riesgo de falsa brecha, que requiere la adición de condiciones auxiliares para la optimización de filtros, mientras que el control del riesgo es muy necesario.
/*backtest
start: 2023-10-02 00:00:00
end: 2023-11-01 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/
// © merovinh
//@version=5
strategy(title="Merovinh - Mean Reversion Lowest low",
overlay = true,
default_qty_type = strategy.percent_of_equity,
initial_capital = 10000,
default_qty_value = 10,
commission_type = strategy.commission.percent,
slippage = 1,
commission_value = 0.04)
GR_TIME = 'Time Period'
bars = input(9, title = "Minimum number of bars", tooltip = "The minimum number of bars before updating lowest low / highest high")
numberOfLows = input.string(defval='One', title='Number of broken lows', options=['One', 'Two', 'Three', 'Four'])
//Period
var prevLow = .0
var prevHigh = .0
var prevLow2 = .0
var prevLow3 = .0
var prevLow4 = .0
truetime = true
highestHigh = ta.highest(high, bars)
lowestLow = ta.lowest(low, bars)
if numberOfLows == 'One'
if truetime and prevLow > 0 and lowestLow < prevLow
strategy.entry('long', strategy.long)
if numberOfLows == 'Two'
if truetime and prevLow > 0 and lowestLow < prevLow and prevLow < prevLow2
strategy.entry('long', strategy.long)
if numberOfLows == 'Three'
if truetime and prevLow > 0 and lowestLow < prevLow and prevLow < prevLow2 and prevLow2 < prevLow3
strategy.entry('long', strategy.long)
if numberOfLows == 'Four'
if truetime and prevLow > 0 and lowestLow < prevLow and prevLow < prevLow2 and prevLow2 < prevLow3 and prevLow3 < prevLow4
strategy.entry('long', strategy.long)
if truetime and prevHigh > 0 and highestHigh > prevHigh
strategy.close('long')
if prevLow != lowestLow
prevLow4 := prevLow3
prevLow3 := prevLow2
prevLow2 := prevLow
prevLow := lowestLow
prevHigh := highestHigh
plot(lowestLow, color=color.green, linewidth=1, title="Lowest Low Line")
plot(highestHigh, color=color.green, linewidth=1, title="Highest High Line")