Стратегия динамического стоп-лосса с множественным подтверждением на графике Надараи-Уотсона

ADX DI RSI MAE
Дата создания: 2024-05-24 17:58:47 Последнее изменение: 2024-05-24 17:58:47
Копировать: 0 Количество просмотров: 1065
1
Подписаться
1617
Подписчики

Стратегия динамического стоп-лосса с множественным подтверждением на графике Надараи-Уотсона

Обзор

Эта стратегия использует Надалайя-Уотсонскую ленточную графику для сглаживания цены и вычисления на основе цены после сглаживания. Затем используются индикаторы ADX и DI для определения силы и направления тренда, индикатор RSI для подтверждения динамики тренда, а также для идентификации потенциальных прорывов путем прорыва цены на сглаживание.

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

  1. Для сглаживания цены используется диаграмма Надаляя-Ворсона, которая рассчитывает их поперечность.
  2. Используйте показатели ADX и DI для определения силы и направления тренда. Когда ADX больше от отклонения, а + DI больше -DI, это означает восходящий тренд, а наоборот - нисходящий тренд.
  3. Определение того, будет ли цена пробиваться вверх или вниз по полосе, означает потенциальный прорыв вверх или вниз.
  4. Используйте индикатор RSI для определения динамики тренда. Когда RSI больше 70, это означает динамику роста, а меньше 30 - динамику падения.
  5. Для совершения сделки используются множественные сигналы, такие как тренд, прорыв и динамика:
    • При наличии сильной восходящей тенденции, вверх прорыва и повышения динамики, открывать позиции.
    • При наличии сильной тенденции к снижению, при прорыве вниз и снижении динамики открывайте свободные позиции.
  6. Для управления риском используются динамические стоп-стопы. Стоп-стопы рассчитываются на основе максимальной/минимальной цены и цены закрытия.
  7. Интуитивное отображение стратегических сигналов путем обозначения на графике трендовых линий, прорывов и динамических сигналов.

Стратегические преимущества

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

Стратегический риск

  1. Частые прорывы могут привести к чрезмерной торговле и убыткам во время рыночных потрясений или поворотов тенденций.
  2. Динамические остановки могут не быть вовремя остановлены при обратном тренде, что приводит к усилению отступления.
  3. Параметры стратегии, такие как пропускная способность по Надаляя-Уотсонской полосе, порог ADX, и т. д. нуждаются в оптимизации в зависимости от различных рынков и стандартов. Неправильная настройка параметров может повлиять на эффективность стратегии.

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

  1. Внедрение более эффективных показателей для определения тенденций, таких как MACD, равновесная система и т. Д., Повышение точности и стабильности определения тенденций.
  2. Оптимизация методов динамического расчета убытков, таких как учет ATR, SAR и других показателей, связанных с волатильностью, делает убытки более гибкими и эффективными.
  3. Для различных рыночных особенностей, таких как трендовые, волатильные и т. д., устанавливаются различные комбинации параметров, повышающие адаптивность стратегии.
  4. Присоединение к модулю управления позициями, динамическая корректировка позиций в зависимости от рыночных тенденций, волатильности и других факторов, контроль риска.

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

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

Исходный код стратегии
/*backtest
start: 2024-04-01 00:00:00
end: 2024-04-18 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Nadaraya-Watson Envelope with Multi-Confirmation and Dynamic Stop-Loss", overlay=true)

// Input parameters
h = input.float(7.2, "Bandwidth", minval=0)
mult = input.float(2.1, minval=0)
src = input(close, "Source")

// ADX and DI Input Parameters
adxLength = input.int(14, "ADX Length")
adxThreshold = input.float(25, "ADX Threshold")
adxSmoothing = input.int(14, "ADX Smoothing")

// Calculate ADX and DI
[dmiPlus, dmiMinus, adx] = ta.dmi(adxLength, adxSmoothing)
strongTrendUp = dmiPlus > dmiMinus and adx > adxThreshold
strongTrendDown = dmiMinus > dmiPlus and adx > adxThreshold

// Nadaraya-Watson Envelope Calculation
gauss(x, h) =>
    math.exp(-(math.pow(x, 2) / (h * h * 2)))

coefs = array.new_float(0)
den = 0.0

for i = 0 to 100
    w = gauss(i, h)
    array.push(coefs, w)

den := array.sum(coefs)

out = 0.0
for i = 0 to 100
    out += src[i] * array.get(coefs, i)
out /= den
mae = ta.sma(math.abs(src - out), 100) * mult

upper = ta.sma(out + mae, 10)
lower = ta.sma(out - mae, 10)

// Confirmations
breakoutUp = ta.crossover(src, upper)
breakoutDown = ta.crossunder(src, lower)

// Original RSI period and thresholds
rsiPeriod = input.int(14, "RSI Period")
rsi = ta.rsi(src, rsiPeriod)
momentumUp = rsi > 70 and adx > adxThreshold
momentumDown = rsi < 30 and adx > adxThreshold

// // Plot ADX-based Trend Confirmation Lines
// if (strongTrendUp)
//     line.new(bar_index, low, bar_index + 1, low, color=color.new(color.blue, 50), width=2, style=line.style_dashed)

// if (strongTrendDown)
//     line.new(bar_index, high, bar_index + 1, high, color=color.new(color.red, 50), width=2, style=line.style_dashed)

// Plot Breakout Confirmation Dots
plotshape(series=breakoutUp, style=shape.circle, location=location.abovebar, color=color.blue, size=size.tiny, title="Breakout Up")
plotshape(series=breakoutDown, style=shape.circle, location=location.belowbar, color=color.orange, size=size.tiny, title="Breakout Down")

// Plot Momentum Confirmation Arrows
plotshape(series=momentumUp, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.tiny, title="Momentum Up")
plotshape(series=momentumDown, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.tiny, title="Momentum Down")

// Strategy Entry and Exit
var float stopLossLevel = na
var float highestPrice = na

potentialBuy = strongTrendUp and breakoutUp
potentialSell = strongTrendDown and breakoutDown
momentumConfirmUp = potentialBuy and momentumUp
momentumConfirmDown = potentialSell and momentumDown

if (momentumConfirmUp)
    strategy.entry("Buy", strategy.long)
    stopLossLevel := close * 0.90
    highestPrice := close

if (momentumConfirmDown)
    strategy.entry("Sell", strategy.short)
    stopLossLevel := close * 1.10
    highestPrice := close

if (strategy.position_size > 0)
    highestPrice := math.max(highestPrice, close)
    stopLossLevel := math.max(highestPrice * 0.85, close * 0.90)

if (strategy.position_size < 0)
    highestPrice := math.min(highestPrice, close)
    stopLossLevel := math.min(highestPrice * 1.15, close * 1.10)

// Close position if stop loss is hit
if (strategy.position_size > 0 and close < stopLossLevel)
    strategy.close("Buy")

if (strategy.position_size < 0 and close > stopLossLevel)
    strategy.close("Sell")