En la carga de los recursos... Cargando...

Estrategia de negociación bidireccional de ruptura de gran volatilidad: Sistema de entrada de umbral basado en puntos

El autor:¿ Qué pasa?, fecha: 2024-11-18 16:11:21
Las etiquetas:El ATRSLTP

img

Resumen general

Esta estrategia es un sistema de negociación bidireccional basado en velas de 30 minutos, buscando oportunidades de negociación a través del monitoreo de la volatilidad de precios. El mecanismo central consiste en identificar movimientos significativos de precios utilizando umbrales de puntos y ejecutar operaciones tras la confirmación de la ruptura. La estrategia incorpora una estricta gestión del tiempo, mecanismos de stop-loss / take-profit y protocolos de gestión comercial para el comercio automatizado controlado.

Principio de la estrategia

La estrategia emplea múltiples mecanismos de filtrado para identificar señales comerciales válidas. Calcula el rango de volatilidad de cada vela de 30 minutos al cierre, marcando oportunidades comerciales potenciales cuando el rango excede los umbrales preestablecidos. Para garantizar la validez de la señal, la estrategia implementa puntos de amortiguamiento adicionales, activando señales comerciales reales solo cuando los precios rompen esta zona de amortiguamiento. El sistema permite posiciones largas y cortas, ingresando posiciones largas en las rupturas ascendentes y cortas en las rupturas descendentes, con objetivos de ganancia y niveles de stop-loss correspondientes.

Ventajas estratégicas

  1. Gestión integral del tiempo: ventanas de negociación limitadas para evitar señales falsas durante los períodos de inactividad
  2. Comercio bidireccional: aprovecha las oportunidades en ambas direcciones del mercado, mejorando la eficiencia del capital
  3. Control de riesgos sólido: los niveles fijos de stop-loss y take-profit facilitan la evaluación y gestión del riesgo
  4. Alta automatización: totalmente automatizada desde la identificación de señales hasta la ejecución de operaciones, minimizando la intervención humana
  5. Configuración flexible de los parámetros: los parámetros clave ajustables se adaptan a las diferentes condiciones del mercado

Riesgos estratégicos

  1. El riesgo de ruptura falsa: la gran volatilidad puede dar lugar a rupturas falsas que resultan en salidas de pérdida sin pérdida.
  2. Sensibilidad de parámetros: la imposición incorrecta de umbrales puede provocar oportunidades perdidas o exceso de negociación
  3. Dependencia del entorno de mercado: puede desencadenar frecuentes pérdidas de parada en mercados variados
  4. Impacto del deslizamiento: los precios de ejecución reales pueden desviarse significativamente de los precios de la señal durante la alta volatilidad
  5. Riesgo de gestión de capital: la falta de mecanismos de dimensionamiento de las posiciones puede dar lugar a una exposición al riesgo excesiva

Direcciones para la optimización de la estrategia

  1. Añadir filtrado de tendencias: Incorporar indicadores de tendencias a más largo plazo para mejorar la calidad de la señal
  2. Optimización de parámetros dinámicos: ajuste automático de los umbrales y parámetros de stop-loss basados en la volatilidad del mercado
  3. Confirmación de volumen: añadir condiciones de filtración de volumen para mejorar la fiabilidad de la ruptura
  4. Optimizar el stop-loss/take-profit: aplicar salidas dinámicas adaptadas a las diferentes condiciones del mercado
  5. Incorporar el tamaño de las posiciones: ajustar dinámicamente el tamaño de las posiciones en función de la fuerza de la señal y la volatilidad del mercado

Conclusión

Esta es una estrategia de trading automatizada diseñada de manera integral con lógica clara. A través de un estricto filtrado de condiciones y control de riesgos, la estrategia demuestra aplicabilidad práctica. Sin embargo, es necesaria una prueba exhaustiva y optimización en el comercio en vivo, particularmente en la configuración de parámetros y aspectos de control de riesgos que necesitan ajuste basados en las condiciones reales del mercado. La implementación exitosa de la estrategia requiere condiciones de mercado estables y una configuración de parámetros apropiada, con una recomendación extensa de backtesting antes de la implementación en vivo.


/*backtest
start: 2024-10-01 00:00:00
end: 2024-10-31 23:59:59
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Big Candle Breakout Strategy Both Side", overlay=true)  

// Input for the point move threshold
point_move_in = input.int(100, title="Point Move Threshold")
point_target = input.int(100, title="Point Target")
point_stoploss = input.int(100, title="Point Stop Loss")
point_buffer = input.int(5, title="Point Buffer")

point_move = point_buffer + point_move_in

// Define the start and end times for trading
start_hour = 9
start_minute = 15
end_hour = 14
end_minute = 30

// Function to check if the current time is within the allowed trading window
in_time_range = (hour(time('30')) > start_hour or (hour(time('30')) == start_hour and minute(time('30')) >= start_minute)) and (hour(time('30')) < end_hour or (hour(time('30')) == end_hour and minute(time('30')) <= end_minute))

// Retrieve the open, high, low, and close prices of 30-minute candles
open_30m = request.security(syminfo.tickerid, "30", open)
high_30m = request.security(syminfo.tickerid, "30", high)
low_30m = request.security(syminfo.tickerid, "30", low)
close_30m = request.security(syminfo.tickerid, "30", close)

// Calculate the range of the candle
candle_range_long = (close_30m - open_30m)
candle_range_short = (open_30m - close_30m)

// Determine if the candle meets the criteria to be marked
big_candle_long = candle_range_long >= point_move_in
big_candle_short = candle_range_short >= point_move_in

// Variables to store the state of the trade
var float long_entry_price = na
var float long_target_price = na
var float long_stop_loss_price = na

var float short_entry_price = na
var float short_target_price = na
var float short_stop_loss_price = na

// Check if there are no active trades
no_active_trades = (strategy.opentrades == 0)

// Long entry condition
if (big_candle_long and na(long_entry_price) and in_time_range and no_active_trades)
    long_entry_price := high_30m+point_buffer
    long_target_price := long_entry_price + point_target
    long_stop_loss_price := long_entry_price - point_stoploss
    strategy.entry("Buy", strategy.long, stop=long_entry_price, limit=long_target_price)

plot(long_entry_price, style=plot.style_linebr, color=color.blue, linewidth=2, title="Entry Price")
plot(long_target_price, style=plot.style_linebr, color=color.green, linewidth=2, title="Target Price")
plot(long_stop_loss_price, style=plot.style_linebr, color=color.red, linewidth=2, title="Stop Loss Price")

// Short entry condition
if (big_candle_short and na(short_entry_price) and in_time_range and no_active_trades)
    short_entry_price := low_30m - point_buffer
    short_target_price := short_entry_price - point_target
    short_stop_loss_price := short_entry_price + point_stoploss
    strategy.entry("Sell", strategy.short, stop=short_entry_price, limit=short_target_price)

plot(short_entry_price, style=plot.style_linebr, color=color.blue, linewidth=2, title="Short Entry Price")
plot(short_target_price, style=plot.style_linebr, color=color.green, linewidth=2, title="Short Target Price")
plot(short_stop_loss_price, style=plot.style_linebr, color=color.red, linewidth=2, title="Short Stop Loss Price") 

// Long exit conditions
if (not na(long_entry_price))
    strategy.exit("Long Exit", from_entry="Buy", limit=long_target_price, stop=long_stop_loss_price)
   
// Short exit conditions
if (not na(short_entry_price))
    strategy.exit("Short Exit", from_entry="Sell", limit=short_target_price, stop=short_stop_loss_price)

// Reset trade status
if (strategy.position_size == 0)
    long_entry_price := na
    long_target_price := na
    long_stop_loss_price := na

    short_entry_price := na
    short_target_price := na
    short_stop_loss_price := na

// Plot the big candle and entry/exit levels
plotshape(series=big_candle_long, location=location.abovebar, style=shape.circle, color=color.green)
plotshape(series=big_candle_short, location=location.abovebar, style=shape.circle, color=color.red)

//plot(long_entry_price, style=plot.style_stepline, color=color.blue, linewidth=2, title="Entry Price")
//plot(long_target_price, style=plot.style_stepline, color=color.green, linewidth=2, title="Target Price")
//plot(long_stop_loss_price, style=plot.style_stepline, color=color.red, linewidth=2, title="Stop Loss Price")


Relacionados

Más.