
Una estrategia de negociación de ruptura inversa es una estrategia de negociación basada en la ruptura de un aumento o disminución en el precio. La estrategia establece un ciclo de aumento o disminución en el precio y, después de que el precio se forma una cierta tendencia, realiza una operación inversa para obtener ganancias.
La estrategia se desarrolla principalmente a través de las siguientes partes:
Establezca la longitud de los ciclos de subida y bajada de precios consecutivos, es decir, consecutiveBarsUp y consecutiveBarsDown, para que la tendencia de los precios del ciclo actual genere una señal de negociación después de alcanzar la longitud establecida.
Calcula el aumento o disminución de los precios actuales en relación con los precios del ciclo anterior, y calcula la longitud de los ciclos de aumento o disminución consecutivos actuales en función de la disminución o disminución de los precios.
Configure el rango de tiempo de la detección, limitando la política a solo operar durante el tiempo de detección mediante time_cond.
Configuración de las horas de negociación diarias, limitando la emisión de señales de negociación a través detimetobuy solo en el período de tiempo configurado.
Cuando el ciclo de alza continua del precio alcanza la longitud establecida, se emite una señal múltiple, a través de strategy.long; cuando el ciclo de caída continua del precio alcanza la longitud establecida, se emite una señal de baja, a través de strategy.short。
Se puede establecer un precio de stop loss y un precio de stop loss. Se puede establecer un precio de stop loss corto y un precio de stop loss largo. Se puede establecer un precio de stop loss largo y un precio de stop loss corto.
Se puede configurar un aviso de notificación cuando se envía una señal de negociación.
De acuerdo con los parámetros anteriores y el precio, se emite una señal de hacer más o hacer menos cuando se cumplen las condiciones.
La estrategia de reversión tiene las siguientes ventajas:
Capturar el punto de inflexión del precio, la operación de inversión puede obtener mejores ganancias. Cuando el precio se forma una tendencia, la operación de inversión puede obtener ganancias cuando el precio se invierte.
Los parámetros se pueden configurar de manera flexible y se pueden ajustar de acuerdo con el mercado. Se puede ajustar el número de ciclos de subidas y bajadas consecutivas, ajustar el punto de parada y pérdida, limitar el período de negociación y optimizar los parámetros de acuerdo con la situación real.
Se puede agregar un stop loss para controlar el riesgo. Se puede configurar el stop loss y el stop loss previamente después de hacer más cargas, lo que ayuda a controlar el riesgo de negociación.
Se puede configurar el mensaje de aviso de transacción para facilitar la automatización de la negociación. Se puede configurar el aviso de mensaje al enviar la señal de negociación, en combinación con el uso del sistema de negociación automática.
Se puede configurar un rango de tiempo de retracción para facilitar la prueba de la estrategia. Se ha añadido un rango de tiempo de retracción para facilitar la observación del efecto de la estrategia en diferentes condiciones de mercado.
La estrategia también tiene algunos riesgos a tener en cuenta:
Evite los eventos de noticias importantes. No se puede determinar el movimiento de los precios cuando se publican noticias importantes, la estrategia emite al mismo tiempo señales de descubierto, lo que provoca pérdidas. Evite el momento de publicación de noticias financieras importantes.
Cuando la reversión no es evidente, no es muy eficaz. Cuando la tendencia no es evidente, la operación de reversión no es eficaz y debe usarse con precaución.
Riesgo de la adecuación de los datos de retroalimentación. La optimización de la estrategia debe evitar una dependencia excesiva de los datos de retroalimentación, ya que los datos de retroalimentación no representan la tendencia futura.
La frecuencia de las operaciones es demasiado alta, lo que puede conducir a la pérdida de la rentabilidad a largo plazo.
Se puede optimizar adecuadamente la estrategia de parada de pérdidas para reducir el riesgo. Las paradas de pérdidas fijas existentes se pueden optimizar aún más para detener las pérdidas de seguimiento de tendencias.
La estrategia puede ser optimizada en los siguientes aspectos:
Aumentar el mecanismo de determinación de tendencias, evitar el cambio brusco de los mercados no tendencia. Se puede detectar la tasa de fluctuación de los precios, los canales y otros indicadores, para determinar el grado de tendencia, evitar perder el punto de cambio de precio.
Optimizar la estrategia de stop loss para que se ajuste automáticamente a las fluctuaciones del mercado. Se pueden utilizar métodos como el stop loss porcentual de saldo, el stop loss ATR, etc., para que la configuración del stop loss sea más inteligente.
Añadir indicadores de capacidad para juzgar. En combinación con indicadores como el cambio en el volumen de transacciones, evitar señales erróneas generadas simplemente por la forma de la línea K.
Combinación de varias variedades. Aplicar estrategias a diferentes variedades para combinar y dispersar el riesgo de una sola variedad.
Optimización de parámetros y aprendizaje automático. Recopilación de más datos históricos y optimización automática de parámetros con métodos de aprendizaje automático para una estrategia más estable.
La estrategia de negociación de ruptura inversa realiza operaciones inversas para obtener buenas señales de negociación mediante la captura de puntos de inflexión de precios. La ventaja de esta estrategia reside en la configuración flexible, el control del riesgo y la adecuación a la automatización de la negociación. Pero también existe un cierto riesgo que requiere una optimización y mejora continua de los parámetros y la estrategia para obtener ganancias estables a largo plazo.
/*backtest
start: 2023-10-17 00:00:00
end: 2023-10-24 00:00:00
period: 45m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
// Strategy
strategy("Up/Down Strategy - Contrarian", overlay=true, initial_capital = 10000, default_qty_value = 10000, default_qty_type = strategy.cash)
consecutiveBarsUp = input(1, title='Consecutive Bars Up')
consecutiveBarsDown = input(1, title='Consecutive Bars Down')
price = close
ups = 0.0
ups := price > price[1] ? nz(ups[1]) + 1 : 0
dns = 0.0
dns := price < price[1] ? nz(dns[1]) + 1 : 0
// Strategy Backtesting
startDate = input(timestamp("2021-01-01T00:00:00"), type = input.time, title='Backtesting Start Date')
finishDate = input(timestamp("2021-12-31T00:00:00"), type = input.time, title='Backtesting End Date')
time_cond = true
//Time Restriction Settings
startendtime = input("", title='Time Frame To Enter Trades')
enableclose = input(false, title='Enable Close Trade At End Of Time Frame')
timetobuy = true
timetoclose = true
// Stop Loss & Take Profit Tick Based
enablesltp = input(false, title='Enable Take Profit & Stop Loss')
stopTick = input(5.0, title='Stop Loss Ticks', type=input.float) / 100
takeTick = input(10.0, title='Take Profit Ticks', type=input.float) / 100
longStop = strategy.position_avg_price - stopTick
shortStop = strategy.position_avg_price + stopTick
shortTake = strategy.position_avg_price - takeTick
longTake = strategy.position_avg_price + takeTick
plot(strategy.position_size > 0 and enablesltp ? longStop : na, style=plot.style_linebr, color=color.red, linewidth=1, title="Long Fixed SL")
plot(strategy.position_size < 0 and enablesltp ? shortStop : na, style=plot.style_linebr, color=color.red, linewidth=1, title="Short Fixed SL")
plot(strategy.position_size > 0 and enablesltp ? longTake : na, style=plot.style_linebr, color=color.green, linewidth=1, title="Long Take Profit")
plot(strategy.position_size < 0 and enablesltp ? shortTake : na, style=plot.style_linebr, color=color.green, linewidth=1, title="Short Take Profit")
// Alert messages
message_enterlong = input("", title="Long Entry message")
message_entershort = input("", title="Short Entry message")
message_closelong = input("", title="Close Long message")
message_closeshort = input("", title="Close Short message")
// Strategy Execution
if (dns >= consecutiveBarsDown) and time_cond and timetobuy
strategy.entry("Long", strategy.long, stop = high + syminfo.mintick, alert_message = message_enterlong)
if (ups >= consecutiveBarsUp) and time_cond and timetobuy
strategy.entry("Short", strategy.short, stop = low + syminfo.mintick, alert_message = message_entershort)
if strategy.position_size < 0 and timetoclose and enableclose
strategy.close_all(alert_message = message_closelong)
if strategy.position_size > 0 and timetoclose and enableclose
strategy.close_all(alert_message = message_closeshort)
if strategy.position_size < 0 and enablesltp and time_cond
strategy.exit(id="Close Long", stop=longStop, limit=longTake, alert_message = message_closelong)
if strategy.position_size > 0 and enablesltp and time_cond
strategy.exit(id="Close Short", stop=shortStop, limit=shortTake, alert_message = message_closeshort)