Эта стратегия разрабатывает простую тенденцию, следующую торговой системе, основанной на линейной регрессионной линии и скользящей средней линии. Она длится, когда линейная регрессионная линия пересекает пересечение над скользящей средней, и становится короткой, когда линейная регрессионная линия пересекает пересечение ниже. Между тем, она использует наклон линии регрессии для фильтрации некоторых торговых сигналов и входит только тогда, когда направление тренда совпадает.
Тенденция после регрессионной стратегии торговли
Ключевые компоненты этой стратегии включают:
Линейная регрессионная линия может хорошо соответствовать направлению тренда в последние периоды. Она может помочь судить об общем направлении тренда. Когда цена пробивается через линию 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))