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

Автор:Чао Чжан, Дата: 2024-02-23 14:46:37
Тэги:

img

Обзор

Стратегия прорыва средней линии - это типичная количественная стратегия торговли, которая отслеживает тенденции.

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

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

После выхода на рынок стратегия устанавливает точки остановки потери и получения прибыли. В частности, после длинного выхода линия остановки является ценой закрытия на момент входа (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)


Больше