Esta estrategia diseña una tendencia simple siguiendo el sistema de negociación basado en la línea de regresión lineal y la línea de media móvil.
Tendencia tras la estrategia de negociación de regresión
Los componentes clave de esta estrategia incluyen:
La línea de regresión lineal puede encajar bien en la dirección de la tendencia en los períodos recientes. Puede ayudar a juzgar la dirección general de la tendencia. Cuando el precio rompe la línea SMA, necesitamos determinar si la dirección de la línea de regresión lineal es consistente con esta ruptura. Solo cuando las dos direcciones son consistentes, se genera una señal comercial. Esto puede filtrar algunas rupturas falsas.
Además, la estrategia también establece un mecanismo de stop loss. Cuando el precio alcanza la línea de stop loss, cierra posiciones para detener la pérdida. También establece una línea de take profit para bloquear algunas ganancias.
La estrategia tiene las siguientes ventajas:
La estrategia también tiene algunos riesgos:
Con respecto a estos riesgos, podemos optimizar a partir de los siguientes aspectos:
Los principales aspectos para optimizar aún más la estrategia incluyen:
Esta estrategia integra la función de seguimiento de tendencia de las medias móviles y la capacidad de juicio de tendencia de la regresión lineal, formando un sistema de trading de seguimiento de tendencia relativamente simple. Puede lograr buenos resultados en mercados con tendencias fuertes. Todavía necesitamos una extensa prueba de retroceso y optimización de los parámetros y reglas, y un control adecuado del riesgo. Entonces esta estrategia debería ser capaz de obtener retornos de inversión constantes.
/*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))