나다라야-왓슨 스트립 차트 다중 확인 동적 손절매 전략

ADX DI RSI MAE
생성 날짜: 2024-05-24 17:58:47 마지막으로 수정됨: 2024-05-24 17:58:47
복사: 0 클릭수: 544
1
집중하다
1166
수행원

나다라야-왓슨 스트립 차트 다중 확인 동적 손절매 전략

개요

이 전략은 나달라야-워슨 대역 도표를 사용하여 가격을 평평하게 처리하고 평평한 후의 가격에 따라 경로를 계산합니다. 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")