Estrategia de salida de la consolidación

El autor:¿ Qué pasa?, Fecha: 2023-12-15 11:59:08
Las etiquetas:

img

Resumen general

Esta estrategia es un indicador de ruptura de consolidación de consolidación intradía para los mercados indios. Incorpora condiciones de tiempo, comisión y seguimiento de stop-loss. Las ventajas de esta estrategia incluyen lógica clara, ajuste flexible de parámetros y adaptación a la dinámica del mercado. Sin embargo, existen ciertos riesgos y necesitan una mayor optimización.

Estrategia lógica

La estrategia básica se basa en bandas de Bollinger. Utiliza una media móvil simple de período de LENGTH ya que la línea media y las bandas ascendente/baja son +MULT/-MULT desviaciones estándar. Las señales de compra se generan cuando se cierran las rupturas por encima de la banda superior, y las señales de venta se generan cuando se cierran las rupturas por debajo de la banda inferior, formando una estrategia de ruptura de rango.

Para el control de riesgos, utiliza ATR para la línea de stop loss. También considera las horas de negociación del mercado indio y cierra todas las posiciones a las 14:57 todos los días.

Análisis de ventajas

Las ventajas de esta estrategia:

  1. Lógica clara, fácil ajuste de parámetros, adaptación flexible
  2. Incorporar el control de stop loss y el control de tiempo para la gestión del riesgo
  3. Considere las particularidades de los mercados indios para la localización
  4. Frecuencia de negociación razonable, evitar el exceso de negociación
  5. Buena extensibilidad para una mayor optimización

Análisis de riesgos

Los riesgos de esta estrategia:

  1. Las bandas de Bollinger se basan en el ajuste de parámetros basado en la experiencia
  2. Indicador único susceptible a señales falsas
  3. El ATR stop loss sólo puede controlar riesgos limitados
  4. No se consideran los eventos del cisne negro

Los riesgos pueden reducirse:

  1. Combinación de múltiples indicadores para el filtrado de señales
  2. Optimización de las reglas de ajuste de parámetros
  3. Incorporación de la lógica de negociación de brechas
  4. Mejora de la robustez del stop loss
  5. Combinación de los índices de confianza del mercado

Direcciones de optimización

La estrategia se puede optimizar en varias direcciones:

  1. Optimización del ajuste de parámetros para una mejor adaptabilidad
  2. Añadir más indicadores para evitar señales falsas
  3. Mejora de la robustez del stop loss
  4. Incorporar más análisis para la detección de tendencias
  5. Considere el tamaño de la posición automática

Con la optimización del modelo y el algoritmo, se pueden mejorar las capacidades de sintonización de parámetros y filtrado de señales para una adaptación más amplia y una mayor tolerancia al riesgo.

Conclusión

En resumen, esta es una estrategia de ruptura intradiaria sencilla. Aborda las especificidades del mercado indio y controla los riesgos comerciales. Con mejoras adicionales en la sintonización de parámetros y el filtrado de señales, esta estrategia puede cumplir con el requisito de comercialización.


/*backtest
start: 2022-12-08 00:00:00
end: 2023-12-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Consolidation Breakout [Indian Market Timing]",overlay = true , pyramiding = 0 ,initial_capital = 50000, default_qty_value=5, currency = currency.NONE,commission_type = strategy.cash, commission_value = 30, slippage = 1 )


// ══════════════════════════════════//
// ————————> INPUT VALUES <————————— //
// ══════════════════════════════════//

LENGTH = input.int(title='LENGTH', defval = 75, minval = 10 ,maxval = 300)
MULT = input.float(title='MULT_STDEV',defval = 3.2 , minval = 1 , maxval = 7 , step =0.1)

//EMA1 = input.int(title='EMA1', defval = 50, minval = 10 ,maxval = 550)
//EMA2 = input.int(title='EMA2', defval = 135, minval = 10 ,maxval = 550)
factor_tr = input.float(title = "ATR TRAIL", defval = 10, step = 0.1)

// ══════════════════════════════════//
// ————————> DAY TIME LIMIT <——————— //
// ══════════════════════════════════//

t = time(timeframe.period, '0935-1430:1234567')
time_condition = not na(t)

//**********************// ════════════════════════════════//
//**********************// ————————> ATR & PLOT <————————— //
//**********************// ════════════════════════════════//
//ema1 = ta.ema(close,EMA1)
//ema2 = ta.ema(close,EMA2)

//plot(ema1, color=color.new(color.blue, 0), style=plot.style_linebr, title='ema1')
//plot(ema2, color=color.new(color.yellow, 0), style=plot.style_linebr, title='ema2')

atr_tr = ta.atr(16)*factor_tr

longStop = close - atr_tr
shortStop = close + atr_tr

Entry = close
length = LENGTH
mult = MULT
basis = ta.sma(Entry , length)
dev = mult * ta.stdev(Entry , length)
upper = (basis + dev)
lower = (basis - dev)
buyEntry = ta.crossover(Entry , upper)
sellEntry = ta.crossunder(Entry , lower)

//plot(upper, color=color.new(color.red, 0), style=plot.style_linebr, title="short stop")
//plot(lower, color=color.new(color.green, 0), style=plot.style_linebr, title="Long stop")

plot(upper, color=close[1] > upper and close > upper ? color.green : color.red, linewidth=2)
plot(lower, color=close[1] > lower and close > lower ? color.green : color.red, linewidth=2)




// ══════════════════════════════════//
// ————————> LONG POSITIONS <————————//
// ══════════════════════════════════//
//******barinstate.isconfirmed used to avoid repaint in real time*******

if ( buyEntry and strategy.opentrades==0 and barstate.isconfirmed and time_condition)
    strategy.entry(id= "Long" ,direction = strategy.long, comment = "B")
    
plot(longStop , color=color.new(color.blue, 0), style=plot.style_linebr, title='long Stop')

if strategy.position_size > 0 
    strategy.exit("long tsl", "Long" , stop = longStop , comment='S')

// ═════════════════════════════════════//
// ————————> SHORT POSITIONS <————————— //
// ═════════════════════════════════════//
if ( sellEntry and strategy.opentrades==0 and barstate.isconfirmed and time_condition)
    strategy.entry(id = "Short" ,direction = strategy.short,  comment = "S") 

if strategy.position_size < 0
    strategy.exit("short tsl", "Short" , stop = shortStop ,comment='B')

// ════════════════════════════════════════════════//
// ————————> CLOSE ALL POSITIONS BY 3PM <————————— //
// ════════════════════════════════════════════════//
strategy.close_all(when = hour == 14 and minute == 57)






    

Más.