Estrategia de negociación de volatilidad de fin de semana

El autor:¿ Qué pasa?, Fecha: 2023-11-16 10:53:01
Las etiquetas:

img

Resumen general

Esta estrategia establece condiciones de entrada largas y cortas basadas en el precio de cierre del viernes, y va largo o corto después de la apertura de los sábados y domingos, saliendo de todas las posiciones antes de la apertura del lunes.

Principios

  1. Registre el precio de cierre del viernes como precio de referencia
  2. Los sábados y domingos:
    • Si el precio es superior al 105% del cierre del viernes, sea corto.
    • Si el precio está por debajo del 95% del cierre del viernes, vaya largo.
  3. El beneficio se fija en el 3% del capital inicial
  4. Cierre todas las posiciones antes de la apertura del lunes.

Análisis de ventajas

  1. El volumen y la volatilidad de las operaciones de fin de semana son bajos para reducir el riesgo de mercado
  2. Normas claras de entrada y salida simplifican la ejecución de la estrategia
  3. Buscar pequeñas ganancias constantes con operaciones a corto plazo
  4. Alta rotación de capital con ciclo corto

Análisis de riesgos

  1. La fluctuación de los precios de los fines de semana puede ser menor de lo esperado, no pudiendo abrir posiciones
  2. La volatilidad excesiva puede provocar una suspensión de pérdidas
  3. Los eventos significativos del lunes pueden causar brechas de precios, incapaces de detener la pérdida a tiempo

Soluciones de riesgos:

  1. Ajustar el rango de fluctuación de las entradas
  2. Establezca los puntos de stop loss adecuados
  3. Cierre de posiciones temprano, evite mantener durante los fines de semana

Directrices para la optimización

  1. Ajuste de los umbrales de entrada en función de las diferentes características de los productos
  2. Optimizar las reglas de toma de ganancias basadas en los resultados de backtest
  3. Seleccionar apalancamiento basado en el tamaño del capital
  4. Añadir filtros de indicadores como promedio móvil a las entradas de tiempo

Resumen de las actividades

Esta estrategia de negociación a corto plazo tiene una lógica muy clara y medidas de control de riesgos. Con el ajuste adecuado de parámetros y pruebas y optimización continuas, puede generar retornos de inversión constantes. Al mismo tiempo, el riesgo de grandes pérdidas de fin de semana debido a una volatilidad excesiva debe ser manejado mediante un control de riesgos adecuado.


/*backtest
start: 2023-10-16 00:00:00
end: 2023-11-15 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//Copyright Boris Kozak 
strategy("XBT Weekend Trade Strategy", overlay=true, default_qty_type=strategy.percent_of_equity,initial_capital=20000)
leverage = input(1,"Leverage")
profitTakingPercentThreshold = input(0.03,"Profit Taking Percent Threshold")

//****Code used for setting up backtesting.****///
testStartYear = input(2017, "Backtest Start Year")
testStartMonth = input(12, "Backtest Start Month")
testStartDay = input(10, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2025, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

// A switch to control background coloring of the test period
testPeriodBackground = input(title="Color Background?", type=bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FFFF : na
bgcolor(testPeriodBackgroundColor, transp=50)

testPeriod() => true
    
//****END Code used for setting up backtesting.****///


//*** Main entry point is here***//
// Figure out how many days since the Friday close 
days_since_friday = if dayofweek == 6
    0
else 
    if dayofweek == 7
        1
    else
        if dayofweek == 1
            2
        else
            if dayofweek == 2
                3
            else
                if dayofweek == 3
                    4
                else
                    if dayofweek == 4
                        5
                    else
                        6
    
// Grab the Friday close price
fridaycloseprice = request.security(syminfo.tickerid,'D',close[days_since_friday])
plot(fridaycloseprice)
strategy.initial_capital = 50000
// Only perform backtesting during the window specified 
if testPeriod()
    // If we've reached out profit threshold, exit all positions 
    if ((strategy.openprofit/strategy.initial_capital) > profitTakingPercentThreshold)
        strategy.close_all()
    // Only execute this trade on saturday and sunday (UTC)
    if (dayofweek == 7.0 or dayofweek == 1.0)
        // Begin - Empty position (no active trades)
        if (strategy.position_size == 0)
            // If current close price > threshold, go short 
            if ((close>fridaycloseprice*1.045))
                strategy.entry("Short Entry", strategy.short, leverage)
            else
                // If current close price < threshold, go long
                if (close<(fridaycloseprice*0.955))
                    strategy.entry("Long Entry",strategy.long, leverage)
        // Begin - we already have a position
        if (abs(strategy.position_size) > 0)
            // We are short 
            if (strategy.position_size < 0)
                if ((close>strategy.position_avg_price*1.045))
                    // Add to the position
                    strategy.entry("Adding to Short Entry", strategy.short, leverage)
            else
                strategy.entry("Long Entry",strategy.long,leverage)
    // On Monday, if we have any open positions, close them 
    if (dayofweek==2.0)
        strategy.close_all()
 






Más.