리소스 로딩... 로딩...

동적 파동 트렌드 추적 전략

저자:차오장, 날짜: 2024-12-20 16:17:27
태그:EMASMAHLCMA

img

전반적인 설명

이 전략은 웨브트렌드 지표와 트렌드 다음을 기반으로 한 양적 거래 시스템이다. 그것은 웨브트렌드 지표와 이동 평균을 결합하여 완전한 거래 결정 프레임워크를 형성합니다. 이 전략은 EMA와 SMA를 사용하여 웨브 트렌드 값과 전반적인 시장 추세를 계산하고, 과잉 구매 및 과잉 판매 문턱을 통해 시장 전환점을 식별하며, 트렌드 필터를 통합하여 거래 정확성을 향상시킵니다.

전략 원칙

이 전략의 핵심은 다음과 같은 단계를 통해 실행됩니다.

  1. HLC 평균 가격 계산 (최고, 최저 및 종료 가격의 평균)
  2. EMA를 사용하여 HLC 평균을 평형화하여 ESA 라인을 얻습니다.
  3. EMA를 사용하여 HLC 평균과 ESA 라인 사이의 오차를 계산하고 평평화합니다.
  4. 최종 TCI 라인을 얻기 위해 편차를 기반으로 K 값을 계산하고 EMA와 두 번 부드럽게
  5. 트렌드 필터로 장기 트렌드 라인을 계산하기 위해 SMA를 사용합니다.
  6. TCI 라인이 과잉 구매/ 과잉 판매 수준을 넘어서 추세 방향과 일치할 때 거래 신호를 생성합니다.

전략적 장점

  1. 높은 신호 신뢰성: 파동 트렌드 지표와 트렌드 필터를 결합하여 잘못된 신호를 효과적으로 감소시킵니다.
  2. 종합적인 리스크 관리: 적시에 스톱 로스를 위한 과잉 매수/ 과잉 매매 기준을 명확히 한다
  3. 강력한 적응력: 전략 매개 변수는 다양한 시장 조건에 유연하게 조정될 수 있습니다.
  4. 명확한 운영 논리: 명시적인 출입 및 출입 조건, 실행하기 쉬운
  5. 포괄적 분석: 단기 변동과 장기적 동향을 모두 고려하여 무역 안정성을 향상시킵니다.

전략 위험

  1. 트렌드 역전 위험: 변동성 시장에서 후발할 수 있습니다.
  2. 매개 변수 민감도: 다른 매개 변수 조합은 크게 다른 결과를 초래할 수 있습니다.
  3. 시장 적응력: 다양한 시장에서 빈번한 거래를 유발할 수 있습니다.
  4. 자본 관리: 시장 변동성을 처리하기 위해 합리적인 위치 통제가 필요합니다.
  5. 기술 의존성: 기술 지표에 의존하는 것은 근본적인 요인을 간과할 수 있습니다.

전략 최적화 방향

  1. 변동성 필터를 추가합니다. 높은 변동성 기간 동안 거래 문턱을 조정합니다.
  2. 다중 시간 프레임 분석을 포함: 정확도를 향상시키기 위해 다른 시간 프레임에서 신호를 결합
  3. 매개 변수 조정 최적화: 시장 조건에 따라 지표 매개 변수를 동적으로 조정
  4. 수익/손실 관리 개선: 동적인 수익 및 중단 손실 메커니즘을 추가
  5. 볼륨 확인 추가: 신호 신뢰성을 향상시키기 위해 볼륨 분석을 통합

요약

이 전략은 웨이브트렌드 지표와 트렌드 필터를 현명하게 결합하여 견고한 거래 시스템을 구축합니다. 운영 단순성을 유지하면서 포괄적인 시장 분석을 달성합니다. 특정 위험이 존재하지만 전략은 적절한 위험 관리와 지속적인 최적화를 통해 좋은 실용적 가치와 개발 잠재력을 가지고 있습니다.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © mojomarv

//@version=6
strategy("WaveTrend with Trend Filter", shorttitle="WaveTrend Trend", overlay=false, initial_capital = 100000)

// Inputs for the WaveTrend indicator
inputLength = input.int(10, title="Channel Length", minval=1)
avgLength = input.int(21, title="Average Length", minval=1)
obLevel = input.float(45, title="Overbought Level")
osLevel = input.float(-45, title="Oversold Level")
showSignals = input.bool(true, title="Show Buy/Sell Signals")

// Trend filter input
maLength = input.int(500, title="Trend MA Length", minval=1)

// Calculate WaveTrend values
hlc_avg = (high + low + close) / 3  // Renamed from hlc3 to hlc_avg
esa = ta.ema(hlc_avg, inputLength)
d = ta.ema(math.abs(hlc_avg - esa), inputLength)
k = (hlc_avg - esa) / (0.015 * d)
ci = ta.ema(k, avgLength)
tci = ta.ema(ci, avgLength)

// Moving average for trend detection
trendMA = ta.sma(close, maLength)

// Determine trend
bullishTrend = close > trendMA
bearishTrend = close < trendMA

// Generate signals with trend filter
crossUp = ta.crossover(tci, osLevel)
crossDown = ta.crossunder(tci, obLevel)

// Plot WaveTrend
plot(tci, title="WaveTrend Line", color=color.new(color.blue, 0), linewidth=2)
hline(obLevel, "Overbought", color=color.red, linestyle=hline.style_dotted)
hline(osLevel, "Oversold", color=color.green, linestyle=hline.style_dotted)
hline(0, "Zero Line", color=color.gray, linestyle=hline.style_solid)

// Plot moving average for trend visualization
plot(trendMA, title="Trend MA", color=color.orange, linewidth=1)

// Plot buy and sell signals
plotshape(showSignals and crossUp, title="Buy Signal", location=location.belowbar, style=shape.labelup, color=color.new(color.green, 0), size=size.small)
plotshape(showSignals and crossDown, title="Sell Signal", location=location.abovebar, style=shape.labeldown, color=color.new(color.red, 0), size=size.small)

// Alerts
alertcondition(crossUp, title="Buy Alert", message="WaveTrend Buy Signal (Trend Confirmed)")
alertcondition(crossDown, title="Sell Alert", message="WaveTrend Sell Signal (Trend Confirmed)")
alertcondition(bullishTrend, title="bull", message="WaveTrend Sell Signal (Trend Confirmed)")
alertcondition(bearishTrend, title="bear", message="WaveTrend Sell Signal (Trend Confirmed)")

// Strategy logic
if crossUp and bullishTrend
    strategy.entry("Long", strategy.long)

if crossDown
    strategy.close("Long")

if crossDown and bearishTrend
    strategy.entry("Short", strategy.short)

if crossUp
    strategy.close("Short")

관련

더 많은