이 전략은 선형 회귀선과 이동 평균선을 기반으로 간단한 트렌드를 따라 거래 시스템을 설계합니다. 선형 회귀선이 이동 평균 위에 넘어가면 길게 가고 선형 회귀선이 아래에 넘어가면 짧게됩니다. 한편, 회귀선의 기울기를 사용하여 일부 거래 신호를 필터하고 트렌드 방향이 일치 할 때만 입력합니다.
회귀 거래 전략의 추세
이 전략의 주요 구성 요소는 다음과 같습니다.
선형 회귀선은 최근 기간에 트렌드 방향에 잘 맞을 수 있습니다. 전체 트렌드 방향을 판단하는 데 도움이 될 수 있습니다. 가격이 SMA 라인을 통과 할 때 선형 회귀선의 방향이이이이 브레이크와 일치하는지 여부를 추가로 결정해야합니다. 두 방향이 일치 할 때만 거래 신호가 생성됩니다. 이것은 일부 잘못된 브레이크를 필터링 할 수 있습니다.
또한, 전략은 또한 스톱 로스 메커니즘을 설정합니다. 가격이 스톱 로스 라인에 도달하면, 스톱 로스를 위해 포지션을 닫습니다. 또한 일부 이익을 잠금하기 위해 이윤 라인을 설정합니다.
이 전략은 다음과 같은 장점을 가지고 있습니다.
이 전략은 또한 몇 가지 위험을 안고 있습니다.
이러한 위험에 관해서는 다음과 같은 측면에서 최적화 할 수 있습니다.
전략의 최적화를 위한 주요 측면은 다음과 같습니다.
이 전략은 유동 평균의 트렌드 다음 기능과 선형 회귀의 트렌드 판단 능력을 통합하여 비교적 간단한 트렌드 다음 거래 시스템을 형성합니다. 강력한 트렌드 시장에서 좋은 결과를 얻을 수 있습니다. 우리는 여전히 매개 변수 및 규칙에 대한 광범위한 백테스트 및 최적화 및 적절한 위험 통제가 필요합니다. 그러면이 전략은 안정적인 투자 수익을 얻을 수 있어야합니다.
/*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))