Стратегия обратной линейной регрессии - это стратегия обратной торговли, основанная на колебаниях цен. Она сочетает в себе анализ линейной регрессии и индикатор AVERAGE TRUE RANGE, устанавливает условия для последовательного роста K-линий или последовательного падения K-линий и выполняет обратные операции, когда анализ линейной регрессии оценивает перелом цен.
Стратегия сначала рассчитывает наклон линейной регрессии. Когда наклон линейной регрессии больше или равен 0, это указывает на то, что цена находится в восходящей тенденции; когда он меньше 0, это указывает на тенденцию к снижению цен. В то же время, в сочетании с сравнением между ценой закрытия и ценой открытия последней K-линии, оценивается, выросла или упала последняя K-линия. Когда наклон линейной регрессии больше или равен 0 и цена закрытия последней K-линии ниже цены открытия, генерируется сигнал покупки; когда наклон линейной регрессии меньше 0 и цена закрытия последней K-линии выше цены открытия, генерируется сигнал продажи.
Когда определяется, что количество последовательных восходящих K-линий достигает установленного числа, генерируется сигнал продажи при условии, что наклон линейной регрессии меньше 0 для достижения реверсионной торговли вблизи высокой точки; когда определяется, что последовательные падающие K-линии достигают настройки числа, когда наклон линейной регрессии больше или равен 0, генерируется сигнал покупки для достижения реверсионной торговли вблизи низкой точки.
Стратегия сочетает в себе трендовую торговлю и обратную торговлю и может проводить операции по обратной торговле в критических точках, тем самым получая преимущество после корректировки цен. Линейный регрессионный анализ обеспечивает средство для определения общей тенденции цен и избегания обратной короткой или длинной позиции, когда цены все еще растут или падают. Последовательное условие K-линии контролирует частоту торговли и работает в критических точках обратной торговли.
По сравнению с простыми стратегиями обратного движения, эта стратегия сочетает в себе несколько технических индикаторов для более точного контроля сроков транзакции, что может эффективно избежать риска ложных сбоев и повысить прибыльность.
Основным риском, с которым сталкивается эта стратегия, является неудача переворота. Если будет суждено, что сигнал переворота цены, цена продолжает поддерживать первоначальный тренд, это вызовет убытки. Кроме того, установка параметров линейного регрессионного анализа и показателей ATR также повлияет на доход стратегии.
Стоп-лосс можно использовать для контроля одиночных потерь. Разумно оценить частоту колебаний рынка, адекватно скорректировать количество последовательных K-линий и уменьшить частоту торговли. Оптимизировать параметры цикла линейной регрессии и параметры ATR, чтобы сделать их более соответствующими характеристикам различных сортов.
Стратегия может быть оптимизирована в следующих аспектах:
Добавить другие технические индикаторы для повышения точности суждения.
Увеличить компоненты машинного обучения для автоматической оптимизации параметров и динамической корректировки правил торговли.
Включить механизмы управления рисками, такие как управление капиталом и стратегии стоп-лосса для контроля рисков торговли.
Оптимизация портфеля, которая сочетает стратегии с другими стратегиями, не связанными с ними, с целью снижения общих снижений и улучшения стабильности.
Расширить на больше сортов, оценить параметры для различных сортов, чтобы сделать стратегию более универсальной.
Стратегия обратной линейной регрессии объединяет несколько технических индикаторов и принимает обратные операции при оценке времени переворота цены. Это эффективная стратегия переворота. Благодаря оптимизации параметров и улучшенному управлению рисками стратегия может еще больше расширять маржу прибыли и имеет большой потенциал для улучшения. Как типичная идея стратегии переворота, она предоставляет нам ценные ссылки.
/*backtest start: 2023-12-21 00:00:00 end: 2023-12-28 00:00:00 period: 30m basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Reverse Up/Down Strategy", currency=currency.USD, initial_capital=1000, pyramiding=2, default_qty_type=strategy.percent_of_equity, default_qty_value=100,overlay=true) //User Options consecutiveBarsUp = input(title="Sell after how many bars up?", type=input.integer, minval=1, defval=1) consecutiveBarsDown = input(title="Buy after how many bars down?", type=input.integer, minval=1, defval=1) atrLength = input(title="ATR Length", type=input.integer, minval=1, defval=14) atrMult = input(title="ATR Multiplier", type=input.float, minval=0.1, defval=2.33) //ATR Channel adjustedATR = sma(atr(atrLength),atrLength) * atrMult longATR = low - adjustedATR shortATR = high + adjustedATR plot(shortATR, title="Short ATR", color=color.red) plot(longATR, title="Long ATR", color=color.lime) // This is the true linear regression slope rather than an approximation given by numerical differentiation src = hlc3 len = input(defval=14, minval=1, title="Slope Length") lrc = linreg(src, len, 0) lrc1 = linreg(src, len,1) lrs = (lrc-lrc1) //Check if last candle was up or down priceOpen = open priceClose = close longCondition = priceOpen > priceClose shortCondition = priceOpen < priceClose ups = 0.0 dns = 0.0 ups := shortCondition ? nz(ups[1]) + 1 : 0 dns := longCondition ? nz(dns[1]) + 1 : 0 if (shortCondition) strategy.close("buy", qty_percent=100, comment="Close") if (ups >= consecutiveBarsUp and lrs <= 0) strategy.entry("sell", strategy.short, comment="Sell") if (longCondition) strategy.close("sell", qty_percent=100, comment="Close") if (dns >= consecutiveBarsDown and lrs >= 0) strategy.entry("buy", strategy.long, comment = "Buy")