Tendencia de seguir la estrategia con Stop Loss y Take Profit

El autor:¿ Qué pasa?, fecha: 2024-02-21 14:55:41
Las etiquetas:

img

Resumen general

La idea principal de esta estrategia es determinar la dirección de largo y corto basado en la tendencia de precios semanal. En una tendencia alcista, se va largo cuando hay un patrón alcista de velas. Se obtiene ganancia cuando el precio se eleva al nivel de ganancia preestablecido y se detiene la pérdida cuando cae al nivel de stop loss preestablecido.

Estrategia lógica

La estrategia define en primer lugar las condiciones para juzgar la tendencia semanal:

isUptrend = close > close[1]
isDowntrend = close < close[1] 

Si el cierre actual es superior al cierre anterior, se considera una tendencia alcista.

Luego se define la señal de negociación intradiaria:

buyCondition = getPrevDayClose() > getPrevDayOpen() and getPrevDayOpen() > getPrevDayClose()[1] and isUptrend

Es decir, el cierre anterior es más alto que el cierre anterior abierto (velas alcistas), y el cierre anterior es más alto que el cierre anterior al día anterior (gap up), y está en una tendencia alcista.

Después de entrar en la posición, el stop loss se establece en el cierre anterior menos 1.382 veces el cuerpo real del día anterior:

stopLoss = getPrevDayClose() - 1.382 * (getPrevDayClose() - getPrevDayOpen())

El beneficio obtenido se fija en el cierre anterior más 2 veces la diferencia entre el cierre anterior y el stop loss:

takeProfit = getPrevDayClose() + 2 * (getPrevDayClose() - stopLoss)

Esto realiza la estrategia de stop loss y toma de ganancias.

Análisis de ventajas

Las ventajas de esta estrategia incluyen:

  1. El comercio de acuerdo con las tendencias evita los riesgos de cortocircuito contra la tendencia
  2. La señal de entrada combina una vela alcista y una brecha para evitar una entrada larga prematura
  3. La posición de stop loss es razonable para controlar la pérdida única
  4. El rango de ganancias es amplio con un alto potencial de ganancias

Análisis de riesgos

También hay algunos riesgos:

  1. Incapaz de determinar los puntos de reversión de la tendencia, puede perder oportunidades de giro
  2. Stop loss está demasiado cerca con mayor probabilidad de quedar atrapado
  3. No se tiene en cuenta el control de costes, el beneficio puede disminuir con una alta frecuencia de negociación

Para controlar estos riesgos, se pueden considerar algunas optimizaciones:

  1. Establecer remolques cerca de la pérdida de parada para seguir la pérdida de parada
  2. Añadir módulo de control de costes para limitar la frecuencia de pedidos
  3. Añadir el juicio de apoyo/resistencia

Direcciones de optimización

La estrategia también puede optimizarse de las siguientes maneras:

  1. Determinar la tendencia basada en más factores como la dirección del MA, el cambio de volumen, etc.
  2. Optimice las señales de entrada con más patrones de velas
  3. Trazamiento dinámico de pérdidas y ganancias de acuerdo con la fluctuación del precio
  4. Añadir un módulo cuantitativo al control del dimensionamiento de la posición
  5. Combinaciones de marcos de tiempo múltiples para filtrar en función de las tendencias de mayor nivel

Resumen de las actividades

En general, esta es una estrategia bastante práctica, destacando el comercio a lo largo de las tendencias mientras se controlan los riesgos. Puede servir como una estrategia de trading intradiario básica y se puede optimizar modularmente para diferentes mercados y productos para crear carteras comerciales diversificadas.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-24 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Trend Following Strategy with Stop Loss and Take Profit", overlay=true)

// Function to get previous day's close and open
getPrevDayClose() =>
    request.security(syminfo.tickerid, "D", close[1])

getPrevDayOpen() =>
    request.security(syminfo.tickerid, "D", open[1])

// Determine weekly trend
isUptrend = close > close[1]
isDowntrend = close < close[1]

// Determine daily conditions for buy
buyCondition = getPrevDayClose() > getPrevDayOpen() and getPrevDayOpen() > getPrevDayClose()[1] and isUptrend

// Calculate stop loss and take profit
stopLoss = getPrevDayClose() - 1.382 * (getPrevDayClose() - getPrevDayOpen())
takeProfit = getPrevDayClose() + 2 * (getPrevDayClose() - stopLoss)

// Strategy logic
if (isUptrend)
    strategy.entry("Buy", strategy.long, when = buyCondition)
    strategy.exit("Take Profit/Stop Loss", from_entry="Buy", loss=stopLoss, profit=takeProfit)
    
if (isDowntrend)
    strategy.entry("Sell", strategy.short)

// Plotting the trend on the chart
plotshape(series=isUptrend, title="Uptrend", color=color.green, style=shape.triangleup, location=location.abovebar)
plotshape(series=isDowntrend, title="Downtrend", color=color.red, style=shape.triangledown, location=location.belowbar)

// Plotting stop loss and take profit levels on the chart
plot(stopLoss, color=color.red, title="Stop Loss", linewidth=2, style=plot.style_cross)
plot(takeProfit, color=color.green, title="Take Profit", linewidth=2, style=plot.style_cross)


Más.