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


Дата создания: 2024-03-27 17:52:02 Последнее изменение: 2024-03-27 17:52:02
Копировать: 0 Количество просмотров: 576
1
Подписаться
1617
Подписчики

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

Обзор

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

Стратегический принцип

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

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

  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)