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.
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.
Las ventajas de esta estrategia incluyen:
También hay algunos riesgos:
Para controlar estos riesgos, se pueden considerar algunas optimizaciones:
La estrategia también puede optimizarse de las siguientes maneras:
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)