Estrategia de la unidad abierta

El autor:¿ Qué pasa?, Fecha: 2023-10-23 15:13:49
Las etiquetas:

img

Resumen general

La estrategia de movimiento abierto observa el comportamiento del precio en los primeros 30 minutos después de la apertura del mercado cada día de negociación, identifica fuertes roturas direccionales y entra en operaciones de tendencia en esa dirección.

Estrategia lógica

  1. Utilice barras de 30 minutos, ya que debe haber suficiente tiempo para medir los movimientos extremos de precios después de la apertura.

  2. Identifique los bares abiertos durante estos períodos de tiempo: 0700-0715, 0800-0815, 1300-1315, 1430-1445.

  3. Compruebe si la barra abierta satisface:

    • Abierto cerca de la barra baja, cerrado cerca de la barra alta (barra arriba)

    • O abierto cerca de la barra alta, cerrado cerca de la barra baja (bar abajo)

    • Y alto excede el anterior de 5 bar alto por 1 x 5 bar de rango, o baja rompe el anterior de 5 bar bajo por 1 x 5 bar de rango (breakout)

  4. Si se cumplen las condiciones anteriores, introduzca el comercio de tendencia en esa dirección 3 barras después de la barra de señal.

  5. Establecer el stop loss en el alto/bajo de la barra de entrada.

  6. Mantenga la posición durante 3 bares (90 minutos), luego salga.

Análisis de ventajas

  • Captura movimientos direccionales fuertes resultantes de la alta liquidez después de la apertura
  • Los filtros de fuga evitan señales falsas de condiciones agitadas
  • Un plazo más largo reduce el exceso de operaciones
  • Stop loss evita pérdidas excesivas

Análisis de riesgos

  • Los periodos de apertura fijos corren el riesgo de perder las rupturas de tendencia
  • Un umbral de ruptura insuficiente puede filtrar señales válidas
  • El tiempo de retención fijo no puede adaptarse a condiciones específicas
  • Ninguna parada de seguimiento no sigue las tendencias

Considere lo siguiente:

  • Determinar dinámicamente el período abierto con más parámetros
  • Optimizar el umbral de ruptura
  • Ajuste del tiempo de retención en función de la volatilidad
  • Añadir procedimientos de detención de seguimiento

Direcciones de mejora

  • Incorporar más indicadores para mejorar la calidad de la señal
  • Introduzca operaciones en marcos de tiempo más bajos para una mayor frecuencia
  • Optimizar parámetros como el período abierto, el umbral de ruptura, las paradas, etc. basado en backtests
  • Considere las paradas de trailing, reentries, etc. para aumentar las ganancias
  • Prueba de retroceso de varios productos para encontrar el mejor ajuste

Resumen de las actividades

La estrategia de movimiento abierto sigue la tendencia al capturar fuertes roturas direccionales después de la apertura. En comparación con las entradas aleatorias, proporciona mejores características de riesgo-recompensa. La clave es el ajuste adecuado de parámetros, la selección de instrumentos y el equilibrio de frecuencia y rentabilidad.


/*backtest
start: 2023-10-15 00:00:00
end: 2023-10-22 00:00:00
period: 10m
basePeriod: 1m
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/
// © Marcns_

//@version=5
// a script that highlights open drives around cash market opens throughout the day
// this indicator identifies the following cash open, open drives 0700 - 0715 / 0800 - 0815 / 1300 - 1315 / 1430 - 1445 
// an open drive is when a cash market opens and price runs either up or down away from the opening price, often this will be the high or the low the remainer of the session or day
// and often identify a trend session
strategy("Open Drive", commission_type =  strategy.commission.cash_per_contract, commission_value = 3.8 )

// open drive filter times - all times GMT
eu_sev = time(timeframe.period, "0700-0715", "GB")
eu_eig = time(timeframe.period, "0800-0815", "GB")
us_one = time(timeframe.period, "1300-1315", "GB")
us_two = time(timeframe.period, "1430-1445", "GB")


// identify bar that opens at low and closes at high + vice versa 
// bar needs to open at one extreme and close at another 
TrndExThreshold_Open = 0.15
TrndExThreshold_Close = 0.15

// add a bar range expansion filter - range of bar correlates to volume, high volume = wider range. This script will be able to filter for a break of a 5 bar range +100% or -100%

fbhi = ta.highest(5)
fblo = ta.lowest(5)

fbr = (fbhi - fblo)

RangeEx_up = 0.0

if high >= (fbhi[1] + fbr[1])
    RangeEx_up := 1.0
else
    na

// range ex down

RangeEx_do = 0.0

if low <= (fblo[1] - fbr[1]) 
    RangeEx_do := 1.0
else
    na


//#1 open within 5% of low

OpenAtLow = 0.0 

if (close > open) and (open-low) / (high-low) < TrndExThreshold_Open
    OpenAtLow := 1.0
else 
    na 

//#2 close within 5% of high
    
CloseAtHigh = 0.0

if (close > open) and (high-close) / (high-low) < TrndExThreshold_Close
    CloseAtHigh := 1.0
else
    na 

OD_Up = 0.0

if (OpenAtLow + CloseAtHigh + RangeEx_up == 3.0) and ( eu_sev or eu_eig or us_one or us_two)
    OD_Up := 1
else
    na

plot(OD_Up, title = "OD_up")



OpenAtHigh = 0.0 

if (close < open) and (high-open) / (high-low) < TrndExThreshold_Open
    OpenAtHigh := 1.0
else 
    na 

//#2 close within 5% of high
    
CloseAtLow = 0.0

if (close < open) and (close-low) / (high-low) < TrndExThreshold_Close
    CloseAtLow := 1.0
else
    na 

OD_Down = 0.0

if (OpenAtHigh + CloseAtLow + RangeEx_do == 3.0) and ( eu_sev or eu_eig or us_one or us_two)
    OD_Down := -1
else
    na

plot(OD_Down, title = "OD_down", color = color.red)


//3sma

ma = ta.sma(close,3)

// one time framing - highlight bars the make a series of lower highs or higher lows to identify trend 
// one time frame up 
otf_u = 0.0

if close > ma and close[1] > ma[1]
    otf_u := 1
else
    na
// one time frame down 
otf_d = 0.0

if close < ma and close[1] < ma[1]
    otf_d := 1
else
    na


//bgcolor(otf_u ? color.rgb(76, 175, 79, 70) : na)
//bgcolor(otf_d ? color.rgb(255, 82, 82, 66) : na)

// record high and low of entry bar into variable for absolute stop
// buy stop
bs = 0.0

if OD_Up
    bs := low[1]
else
    na

// sell stop
ss = 0.0

if OD_Down
    ss := high[1]
else
    na




// strategy entry and exits 
// long
if OD_Up
    strategy.entry("el", strategy.long, 2)
if ta.barssince(OD_Up)> 3 
    strategy.exit(id = "ex" , from_entry = "el", limit = close)

// short 
if OD_Down
    strategy.entry("es", strategy.short, 2)
if ta.barssince(OD_Down)> 3
    strategy.exit(id = "ex" , from_entry = "es", limit = close)



Más.