Estrategias de swing trading para el fin de semana


Fecha de creación: 2023-11-16 10:53:01 Última modificación: 2023-11-16 10:53:01
Copiar: 0 Número de Visitas: 601
1
Seguir
1617
Seguidores

Estrategias de swing trading para el fin de semana

Descripción general

La estrategia establece condiciones de entrada para posiciones largas y vacías en función del precio de cierre del viernes, se hace más deuda libre cuando se abre el sábado y el domingo, y la posición plana antes de la apertura del lunes. La estrategia logra obtener ganancias al capturar las fluctuaciones de precios cerca del precio de cierre del viernes.

El principio

  1. El precio de cierre registrado el viernes como referencia
  2. El sábado y el domingo, cuando está abierto:
    • Si el precio es superior al 4.5% del cierre del viernes, hacer un descuento
    • Si el precio está por debajo del 4.5% del cierre del viernes, haz más.
  3. La parada se establece en el 3% del capital inicial.
  4. Todas las posiciones cerradas antes de la apertura del lunes

Análisis de las ventajas

  1. Aprovechar las fluctuaciones de precios que se producen en los bajos volúmenes de transacciones de los sábados y domingos para reducir el riesgo del mercado
  2. Condiciones claras de entrada y salida para reducir la dificultad de implementación de la estrategia
  3. Operación de corto plazo, búsqueda de ganancias estables y pequeñas
  4. El ciclo es corto, el dinero circula rápido.

Análisis de riesgos

  1. Los precios podrían fluctuar menos de lo esperado el sábado y el domingo y no se podrán abrir posiciones.
  2. La fluctuación excesiva causa pérdidas
  3. El lunes, los grandes eventos hicieron que los precios se dispararan y no pudieron detener los daños a tiempo.

Soluciones para el riesgo:

  1. Ajuste de la amplitud de las fluctuaciones de las condiciones de entrada
  2. Establecer un punto de parada razonable
  3. Despejar las posiciones anticipadamente y no mantenerlas durante el fin de semana

Dirección de optimización

  1. Adaptación de la entrada en función de las características de las diferentes variedades
  2. Optimización de las condiciones de frenado de acuerdo con los resultados de las pruebas de retroalimentación
  3. Selección de diferentes palancas según el tamaño de los fondos
  4. El tiempo de entrada combinado con el indicador de línea uniforme

Resumir

La estrategia es una estrategia de negociación en línea corta, con una lógica de negociación muy clara y medidas de control de riesgo. Se obtiene un rendimiento estable de la inversión a través de la configuración de parámetros razonables y la optimización de pruebas continuas. También se debe tener en cuenta el riesgo de pérdidas causadas por fluctuaciones excesivas de precios durante la semana y controlar las pérdidas mediante la gestión de riesgos.

Código Fuente de la Estrategia
/*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()