Estrategia de ruptura de la tendencia intradiaria

El autor:¿ Qué pasa?, Fecha: 2023-09-18 13:11:51
Las etiquetas:

Resumen general

Esta es una tendencia intradiaria a corto plazo siguiendo la estrategia basada en el indicador Supertrend.

La estrategia invierte la posición utilizando una cantidad doble cuando cambia la señal.

Estrategia lógica

  1. Calcular el indicador Supertrend basado en el multiplicador definido por el usuario y el período ATR.

  2. Trace la línea de Supertrend como soporte y resistencia.

  3. Determine las condiciones largo/corto. Cerrar por encima de la línea de Supertrend es una condición larga. Cerrar por debajo de la línea de Supertrend es una condición corta.

  4. Compruebe si la barra actual se encuentra dentro de la sesión intradiaria definida por el usuario.

  5. Emitir señales largas/cortas sólo cuando la sesión intradiaria esté activa y se cumplan las condiciones largas/cortas.

  6. Posición inversa tomando el comercio opuesto con la cantidad doble cuando la dirección de la Supertrend cambia.

  7. Cuadrar las posiciones abiertas cuando la dirección de la Supertrend no cambie y finalice la sesión intradiaria.

Análisis de ventajas

  1. Supertrend identifica la tendencia y reduce las señales falsas.

  2. La combinación de Supertrend con el precio cerrado evita ser detenido prematuramente.

  3. Invertir la posición a tiempo reduce las pérdidas.

  4. La sesión intradiaria evita el riesgo durante la noche.

  5. La salida forzada evita el riesgo de olvidarse de cuadrar.

Análisis de riesgos

  1. Los parámetros de Supertrend incorrectos pueden llevar a un mal rendimiento de la estrategia.

  2. La inversión de la posición aumenta la frecuencia y los costos del comercio.

  3. La salida forzada al final de la sesión puede llevar a pérdidas.

  • El riesgo 1 puede mitigarse mediante la optimización de parámetros.

  • El riesgo 2 se puede controlar mediante el stop loss.

  • El riesgo 3 se puede evitar utilizando el filtro stop loss o el filtro de tendencia.

Oportunidades de mejora

  1. Prueba diferentes indicadores de tendencia como MA, KDJ, etc.

  2. Agregue la lógica de stop loss.

  3. Añadir filtro de tendencia para evitar pérdidas de salida forzada.

  4. Optimizar los parámetros del multiplicador y del período ATR.

  5. Prueba en diferentes instrumentos.

Conclusión

Esta estrategia combina Supertrend y gestión de sesiones intradiarias para capitalizar las rupturas de tendencia a corto plazo. La inversión de posición y la salida forzada controlan eficazmente el riesgo. Se pueden realizar mejoras adicionales a través de la optimización de parámetros, stop loss y filtro de tendencias.


/*backtest
start: 2023-08-18 00:00:00
end: 2023-09-17 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/
// © Pritesh-StocksDeveloper

//@version=4
strategy("Supertrend - Intraday", overlay=true, calc_on_every_tick = true)

// ********** Strategy inputs - Start **********

// Used for intraday handling
// Session value should be from market start to the time you want to square-off 
// your intraday strategy
// Important: The end time should be at least 2 minutes before the intraday
// square-off time set by your broker
var i_marketSession = input(title="Market session", type=input.session, 
     defval="0915-1455", confirm=true)

var float i_multiplier = input(title = "Multiplier", type = input.float, 
     defval = 4, confirm=true)

var int i_atrPeriod = input(title = "ATR Period", type = input.integer, 
     defval = 14, confirm=true)

// ********** Strategy inputs - End **********


// ********** Supporting functions - Start **********

// A function to check whether the bar or period is in intraday session
barInSession(sess) => time(timeframe.period, sess) != 0

// ********** Supporting functions - End **********


// ********** Strategy - Start **********

[superTrend, dir] = supertrend(i_multiplier, i_atrPeriod)

colResistance = dir == 1 and dir == dir[1] ? color.new(color.red, 0) : color.new(color.red, 100)
colSupport = dir == -1 and dir == dir[1] ? color.new(color.green, 0) : color.new(color.green, 100)

plot(superTrend, color = colResistance, linewidth=2)
plot(superTrend, color = colSupport, linewidth=2)

// Long/short condition
longCondition = close > superTrend
shortCondition = close < superTrend

// See if intraday session is active
bool intradaySession = barInSession(i_marketSession)

// Trade only if intraday session is active
 
// Long position
// When longCondition and intradaySession both are true
strategy.entry(id = "Long", long = strategy.long, 
     when = longCondition and intradaySession)
 
// Short position
// When shortCondition and intradaySession both are true
strategy.entry(id = "Short", long = strategy.short, 
     when = shortCondition and intradaySession)
 
// Square-off position (when session is over and position is open)
squareOff = (not intradaySession) and (strategy.position_size != 0)
strategy.close_all(when = squareOff, comment = "Square-off")

// ********** Strategy - End **********

Más.