
La idea principal de la estrategia es determinar la dirección de la pluralidad de órdenes basándose en la tendencia semanal de los precios, entrando en la pluralidad de órdenes en caso de que se produzca una línea de sol en el caso de los bulls; se detiene cuando el precio sube hasta el punto de parada predeterminado y se detiene si baja hasta el punto de parada predeterminado.
La estrategia primero define las condiciones para juzgar las tendencias semanales:
isUptrend = close > close[1]
isDowntrend = close < close[1]
Si el precio de cierre actual es mayor que el precio de cierre del día anterior, se considera una tendencia a la baja, y viceversa, a la baja.
Luego, define las señales de transacción diarias:
buyCondition = getPrevDayClose() > getPrevDayOpen() and getPrevDayOpen() > getPrevDayClose()[1] and isUptrend
Es decir, el precio de cierre del día anterior es mayor que el precio de apertura del día anterior y el precio de apertura del día anterior es mayor que el precio de cierre del día anterior y se encuentra en una tendencia alcista, lo que satisface la condición de entrada múltiple.
Después de la entrada, el punto de parada se establece como el precio de cierre del día anterior menos 1.382 veces la longitud de la línea física del día anterior:
stopLoss = getPrevDayClose() - 1.382 * (getPrevDayClose() - getPrevDayOpen())
El punto de parada se establece como el precio de cierre del día anterior más el doble del punto de parada y el precio de cierre:
takeProfit = getPrevDayClose() + 2 * (getPrevDayClose() - stopLoss)
El objetivo es lograr la recuperación de pérdidas.
La estrategia tiene las siguientes ventajas:
La estrategia también tiene sus riesgos:
Para controlar estos riesgos, se puede considerar la inclusión de las siguientes optimizaciones:
La estrategia también puede ser optimizada en las siguientes direcciones:
La estrategia en su conjunto es bastante práctica, la idea central es destacar el comercio de tendencias, al tiempo que se controla el riesgo. Se puede utilizar como estrategia básica para el comercio de líneas cortas durante el día, o se puede optimizar de manera modular según los diferentes mercados y variedades, para lograr una cartera de operaciones diversificada. En la aplicación práctica, es fundamental mantener la mentalidad adecuada para controlar los costos y evitar el riesgo de cobertura.
/*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)