Стратегия кросс-овер длинно-короткой линейной регрессии

Автор:Чао Чжан, Дата: 2024-03-27 17:52:02
Тэги:

img

Обзор

Стратегия длинно-короткого линейного регрессионного перекрестка - это стратегия технического анализа, которая использует линейную регрессионную модель для прогнозирования будущих ценовых движений акций. Основной принцип стратегии заключается в том, что движения цен на акции часто следуют определенной линейной тенденции, и, рассчитывая линейную регрессию цены, можно предсказать будущую цену. Стратегия длится, когда предсказанная цена пересекает текущую цену, и выходит из позиции, когда она пересекает ниже.

Принципы стратегии

Стратегия сначала рассчитывает линейную регрессию цены на акции за определенный период времени. Линейная регрессия соответствует прямой линии с использованием метода наименьших квадратов, который представляет тенденцию изменения цены с течением времени. Стратегия затем графики предсказанной ценовой линии и текущей цены на графике.

Стратегия определяет два сигнала:

  1. Долгий сигнал: запускается, когда прогнозируемая цена пересекает текущую цену
  2. Краткий сигнал: запускается, когда прогнозируемая цена пересекает текущую цену

Когда появляется длинный сигнал, стратегия открывает длинную позицию; когда появляется короткий сигнал, она закрывает позицию.

Ключевые этапы стратегии следующие:

  1. Вычислить линейную регрессию цены за определенный период времени
  2. Нарисуйте прогнозируемую ценовую линию и текущую цену на графике
  3. Определите длинный и короткий сигналы
  4. Открыть длинную позицию, когда длинный сигнал будет задействован.
  5. Закройте позицию, когда будет задействован короткий сигнал.

Анализ преимуществ

Стратегия длинно-короткой линейной регрессии имеет следующие преимущества:

  1. Простая и эффективная: логика стратегии ясна и легко внедряется, и она может фиксировать линейную тенденцию цены.
  2. Широкое применение: стратегия может генерировать торговые сигналы как на трендовых, так и на диапазонах рынков.
  3. Сильная оптимизация: стратегия содержит некоторые ключевые параметры, такие как линейный период регрессии, скользящие средние и т. д., которые могут быть оптимизированы для улучшения производительности.

Анализ рисков

Несмотря на многочисленные преимущества, стратегия кроссоверов длинно-короткой линейной регрессии также имеет некоторые риски:

  1. Риск распознавания тренда: когда движение цен не следует линейной тенденции, например, на рыночном диапазоне, стратегия может генерировать ложные сигналы. Этот риск можно уменьшить путем сочетания с другими индикаторами, такими как MACD.
  2. Установление риска параметра: производительность стратегии чувствительна к настройкам параметров, и ненадлежащие параметры могут привести к потерям. Поэтому необходимо достаточное обратное тестирование и оптимизация параметров перед живой торговлей.
  3. Риск перенастройки: если параметры переоптимизированы, это может привести к тому, что стратегия будет перенаправлена на исторические данные и будет плохо работать в будущем.

Руководство по оптимизации

  1. Комбинировать с другими индикаторами: Сигнал линейной регрессии можно комбинировать с другими техническими индикаторами, такими как MACD, полосы Боллинджера и т. д., чтобы повысить точность сигналов.
  2. Динамическая оптимизация параметров: адаптивный механизм для параметров может быть разработан для динамической корректировки параметров в соответствии с рыночными условиями, улучшая адаптивность.
  3. Добавление модуля контроля риска: включить в стратегию меры контроля риска, такие как стоп-лосс и управление деньгами, чтобы уменьшить риск одной сделки и увеличить совокупную доходность.
  4. Оптимизация машинного обучения: алгоритмы машинного обучения могут использоваться для непрерывной оптимизации модели линейной регрессии, чтобы сделать ее предсказания более точными.

Резюме

Стратегия длинно-короткого линейного регрессионного перекрестного действия генерирует торговые сигналы на основе сравнения прогнозируемой цены из линейной регрессии и текущей цены. Логика стратегии проста и ясна, и она может улавливать линейную тенденцию цены и применима к различным рыночным условиям. В то же время, стратегия проста в реализации и оптимизации, и параметры могут быть гибко скорректированы, в сочетании с другими индикаторами, модули управления рисками могут быть добавлены и т. д., чтобы постоянно улучшать производительность стратегии. Однако стратегия также имеет такие риски, как неточное распознавание тренда, неуместные настройки параметров и переполнение исторических данных, поэтому необходимо быть осторожным в практическом применении. В целом, стратегия длинно-короткого линейного регрессионного перекрестного действия является простой и эффективной количественной торговой стратегией, которая стоит дальнейшего изучения и оптимизации


/*backtest
start: 2024-02-25 00:00:00
end: 2024-03-26 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © stocktechbot
//@version=5
strategy("Linear Cross", overlay=true, margin_long=100, margin_short=0)

//Linear Regression

vol = volume

// Function to calculate linear regression
linregs(y, x, len) =>
    ybar = math.sum(y, len)/len
    xbar = math.sum(x, len)/len
    b = math.sum((x - xbar)*(y - ybar),len)/math.sum((x - xbar)*(x - xbar),len)
    a = ybar - b*xbar
    [a, b]

// Historical stock price data
price = close

// Length of linear regression
len = input(defval = 21, title = 'Strategy Length')
linearlen=input(defval = 9, title = 'Linear Lookback')
[a, b] = linregs(price, vol, len)

// Calculate linear regression for stock price based on volume
//eps = request.earnings(syminfo.ticker, earnings.actual)
//MA For double confirmation

out = ta.sma(close, 200)
outf = ta.sma(close, 50)
outn = ta.sma(close, 90)
outt = ta.sma(close, 21)
outthree = ta.sma(close, 9)

// Predicted stock price based on volume
predicted_price = a + b*vol

// Check if predicted price is between open and close
is_between = open < predicted_price and predicted_price < close

//MACD
//[macdLine, signalLine, histLine] = ta.macd(close, 12, 26, 9)

// Plot predicted stock price
plot(predicted_price, color=color.rgb(65, 59, 150), linewidth=2, title="Predicted Price")
plot(ta.sma(predicted_price,linearlen), color=color.rgb(199, 43, 64), linewidth=2, title="MA Predicted Price")
//offset = input.int(title="Offset", defval=0, minval=-500, maxval=500)
plot(out, color=color.blue, title="MA200")
[macdLine, signalLine, histLine] = ta.macd(predicted_price, 12, 26, 9)

//BUY Signal

longCondition=false
mafentry =ta.sma(close, 50) > ta.sma(close, 90)
//matentry = ta.sma(close, 21) > ta.sma(close, 50)
matwohun = close > ta.sma(close, 200)
twohunraise = ta.rising(out, 2)
twentyrise = ta.rising(outt, 2)
macdrise = ta.rising(macdLine,2)
macdlong = ta.crossover(predicted_price, ta.wma(predicted_price,linearlen))  and (signalLine < macdLine)
if macdlong and macdrise
    longCondition := true

if (longCondition)
    strategy.entry("My Long Entry Id", strategy.long)
//Sell Signal
lastEntryPrice = strategy.opentrades.entry_price(strategy.opentrades - 1)
daysSinceEntry = len
daysSinceEntry := int((time - strategy.opentrades.entry_time(strategy.opentrades - 1)) / (24 * 60 * 60 * 1000))
percentageChange = (close - lastEntryPrice) / lastEntryPrice * 100
//trailChange = (ta.highest(close,daysSinceEntry) - close) / close * 100

//label.new(bar_index, high, color=color.black, textcolor=color.white,text=str.tostring(int(trailChange)))
shortCondition=false
mafexit =ta.sma(close, 50) < ta.sma(close, 90)
matexit = ta.sma(close, 21) < ta.sma(close, 50)
matwohund = close < ta.sma(close, 200)
twohunfall = ta.falling(out, 3)
twentyfall = ta.falling(outt, 2)
shortmafall = ta.falling(outthree, 1)
macdfall = ta.falling(macdLine,1)
macdsell = macdLine < signalLine
if macdfall and macdsell and (macdLine < signalLine) and ta.falling(low,2)
    shortCondition := true

if (shortCondition)
    strategy.entry("My Short Entry Id", strategy.short)




Больше