
La estrategia se basa en una simple línea de regresión lineal y una media móvil para diseñar un sistema de seguimiento de la tendencia. Se hace más cuando se cruza la media móvil sobre la línea de regresión lineal y se hace menos cuando se cruza la media móvil debajo de la línea de regresión lineal. Al mismo tiempo, se combina la inclinación de la línea de regresión lineal para filtrar parte de la señal de negociación y solo se entra en juego cuando la dirección de la tendencia coincide.
Estrategia de comercio de regresión de seguimiento de tendencia
La estrategia incluye las siguientes partes clave:
La línea de regresión lineal se ajusta muy bien a la dirección de la tendencia en un período reciente de tiempo. Esto puede usarse para ayudar a determinar la dirección de la tendencia general. Cuando el precio rompe la línea SMA, necesitamos determinar más si la dirección de la línea de regresión lineal coincide con la ruptura.
Además, la estrategia también establece un mecanismo de stop loss. Cuando el precio toca la línea de stop loss, se detiene la posición de liquidación. También se establece una línea de stop loss, que bloquea parte de las ganancias.
La estrategia tiene las siguientes ventajas:
La estrategia también tiene sus riesgos:
En cuanto a los riesgos, podemos optimizar en los siguientes aspectos:
La estrategia se puede optimizar principalmente en los siguientes aspectos:
La estrategia integra la función de seguimiento de tendencias de las medias móviles con la función de determinación de tendencias de la regresión lineal, formando un sistema de comercio de seguimiento de tendencias relativamente simple y fácil de usar. En mercados con tendencias evidentes, la estrategia puede obtener mejores resultados. También necesitamos realizar una gran cantidad de retroalimentación y optimización de los parámetros y reglas, y hacer un buen control de riesgos, entonces la estrategia debe ser capaz de obtener un retorno estable de la inversión.
/*backtest
start: 2023-11-17 00:00:00
end: 2023-12-05 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(title="Regression Trading Strategy", shorttitle="RTS", overlay=true)
// Input parameters
n = input(14, title="SMA Period")
stop_loss_percentage = input(2, title="Stop Loss Percentage")
take_profit_percentage = input(2, title="Take Profit Percentage")
// Calculate the SMA
sma = sma(close, n)
// Linear regression function
linear_regression(src, length) =>
sumX = 0.0
sumY = 0.0
sumXY = 0.0
sumX2 = 0.0
for i = 0 to length - 1
sumX := sumX + i
sumY := sumY + src[i]
sumXY := sumXY + i * src[i]
sumX2 := sumX2 + i * i
slope = (length * sumXY - sumX * sumY) / (length * sumX2 - sumX * sumX)
intercept = (sumY - slope * sumX) / length
line = slope * length + intercept
line
// Calculate the linear regression
regression_line = linear_regression(close, n)
// Plot the SMA and regression line
plot(sma, title="SMA", color=color.blue)
plot(regression_line, title="Regression Line", color=color.red)
// Trading strategy conditions
long_condition = crossover(close, sma) and close > regression_line
short_condition = crossunder(close, sma) and close < regression_line
// Exit conditions
stop_loss_price = close * (1 - stop_loss_percentage / 100)
take_profit_price = close * (1 + take_profit_percentage / 100)
// Plot entry and exit points on the chart
plotshape(series=long_condition, title="Long Entry", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(series=short_condition, title="Short Entry", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)
plotshape(series=crossunder(close, stop_loss_price), title="Stop Loss", location=location.abovebar, color=color.red, style=shape.labeldown, text="SL")
plotshape(series=crossover(close, take_profit_price), title="Take Profit", location=location.belowbar, color=color.green, style=shape.labelup, text="TP")
// Strategy orders
strategy.entry("Long", strategy.long, when = long_condition)
strategy.entry("Short", strategy.short, when = short_condition)
strategy.exit("Exit", from_entry = "Long", when = crossover(close, stop_loss_price) or crossover(close, take_profit_price))
strategy.exit("Exit", from_entry = "Short", when = crossunder(close, stop_loss_price) or crossunder(close, take_profit_price))