Стратегия следования за трендом, основанная на прорыве регрессии скользящей средней


Дата создания: 2024-02-23 14:46:37 Последнее изменение: 2024-02-23 14:46:37
Копировать: 0 Количество просмотров: 651
1
Подписаться
1617
Подписчики

Стратегия следования за трендом, основанная на прорыве регрессии скользящей средней

Обзор

Среднелинейная регрессия является типичной количественной торговой стратегией для отслеживания тенденций. Эта стратегия использует движущиеся средние и их стандартный разрывный канал для определения движения рынка и создания торгового сигнала при прорыве цены стандартного разрыва.

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

Эта стратегия сначала вычисляет простой скользящий средний SMA на N дней (например, 50 дней), затем на основе SMA вычисляет стандартную разницу StdDev в цене этого цикла, используя SMA в качестве центральной оси, а вверх и вниз используя StdDev в 2 раза в качестве верхней и нижней траектории для построения каналов стандартной разницы. Когда цена входит в верхнюю траекторию, сделайте пустоту; когда цена входит в нижнюю траекторию, сделайте больше.

После выхода на рынок, стратегия устанавливает стоп-стоп-позиции. В частности, после лишнего, стоп-линия является ценой закрытия при входе на рынок ((100 - стоп-процент); после лишнего, стоп-линия является ценой закрытия при входе на рынок ((100 + стоп-процент).

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

Эта стратегия имеет следующие преимущества:

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

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

Однако эта стратегия также несет в себе некоторые риски:

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

Решения, отвечающие риску, следующие:

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

Направление оптимизации

Однако есть еще много возможностей для дальнейшей оптимизации этой стратегии:

  1. Используйте среднюю линию для проверки нескольких временных периодов, чтобы избежать чрезмерной чувствительности кривой.

  2. в сочетании с другими показателями, такими как MACD, для оценки тенденций и отклонений.

  3. Введение динамических оптимизационных параметров алгоритмов машинного обучения.

Подвести итог

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

Исходный код стратегии
/*backtest
start: 2023-02-16 00:00:00
end: 2024-02-22 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Standard Deviation Bands with Buy/Sell Signals", overlay=true)

// Input for the number of standard deviations
deviationMultiplier = input.float(2.0, title="Standard Deviation Multiplier")

// Input for the length of the moving average
maLength = input.int(50, title="Moving Average Length")

// Input for the stop loss percentage
stopLossPercentage = input.float(12, title="Stop Loss Percentage")

// Calculate the moving average
sma = ta.sma(close, maLength)

// Calculate the standard deviation of the price
priceDeviation = ta.stdev(close, maLength)

// Calculate the upper and lower bands
upperBand = sma + (priceDeviation * deviationMultiplier)
lowerBand = sma - (priceDeviation * deviationMultiplier)

// Plot the bands
plot(upperBand, color=color.green, title="Upper Band")
plot(lowerBand, color=color.red, title="Lower Band")

// Plot the moving average
plot(sma, color=color.blue, title="SMA", linewidth=2)

// Buy Signal
buyCondition = ta.crossover(close, lowerBand)
sellCondition = ta.crossunder(close, upperBand)

// Calculate stop loss level
stopLossLevelBuy = close * (1 - stopLossPercentage / 100)
stopLossLevelSell = close * (1 + stopLossPercentage / 100)

// Create Buy and Sell Alerts
alertcondition(buyCondition, title="Buy Signal", message="Buy Signal - Price Crossed Below Lower Band")
alertcondition(sellCondition, title="Sell Signal", message="Sell Signal - Price Crossed Above Upper Band")

// Plot Buy and Sell Arrows on the chart
plotshape(buyCondition, style=shape.triangleup, location=location.belowbar, color=color.green, title="Buy Signal Arrow")
plotshape(sellCondition, style=shape.triangledown, location=location.abovebar, color=color.red, title="Sell Signal Arrow")

// Exit Long and Short Positions
var float stopLossBuy = na
var float stopLossSell = na

if ta.crossover(close, sma)
    stopLossBuy := stopLossLevelBuy
if ta.crossunder(close, sma)
    stopLossSell := stopLossLevelSell

strategy.entry("Buy", strategy.long, when = buyCondition)
strategy.exit("Stop Loss/Take Profit Buy", from_entry = "Buy", stop = stopLossBuy)
strategy.entry("Sell", strategy.short, when = sellCondition)
strategy.exit("Stop Loss/Take Profit Sell", from_entry = "Sell", stop = stopLossSell)