WaveTrend 지표를 기반으로 한 추세 추종 전략

EMA SMA HLCC3 ESA
생성 날짜: 2024-04-28 13:56:27 마지막으로 수정됨: 2024-04-28 13:56:27
복사: 1 클릭수: 1517
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

WaveTrend 지표를 기반으로 한 추세 추종 전략

개요

WaveTrend Cross LazyBear 전략은 WaveTrend 지표에 기반한 거래 전략이다. 이 전략은 두 개의 다른 주기의 WaveTrend 지표선을 사용하여, 더 빠른 주기의 WaveTrend 지표선 위에 더 느린 주기의 WaveTrend 지표선을 뚫을 때 구매 신호를 생성하고, 더 빠른 주기의 WaveTrend 지표선 아래에 더 느린 주기의 WaveTrend 지표선을 뚫을 때 판매 신호를 생성한다. 이 전략은 또한 시장 상태를 판단하는 데 도움이되는 과매 및 과매 지역을 설정한다.

전략 원칙

이 전략의 핵심은 WaveTrend 지표이며, 이 지표는 다음과 같은 단계로 계산됩니다:

  1. 전형적인 가격을 계산합니다. 그것은 최고 가격, 최저 가격, 그리고 종결 가격의 평균에 해당합니다.
  2. AP의 지수 이동 평균 ((ESA) 을 계산하고, 주기는 n1。
  3. AP와 ESA의 차이의 절대값의 지수 이동 평균 d를 계산하고, 주기는 n1。
  4. 지표 CI를 계산하고, 이는 ((AP-ESA) / (0.015 * d) ≠
  5. CI의 지수 이동 평균 TCI를 계산하고, 주기 n2으로, WaveTrend 지표를 얻는다.

이 전략은 두 개의 다른 주기 ((비용 10과 21을) 의 WaveTrend 지표선을 사용하여 각각 WT1과 WT2로 표시한다. WT1을 통과하면 WT2를 구매하는 신호를 발생시키고, WT1을 통과하면 WT2를 판매하는 신호를 발생시킨다. 또한, 이 전략은 4개의 보조 판단 수준을 설정한다: 오버 바이 레벨 1, 오버 바이 레벨 2, 오버 세일 레벨 1 및 오버 세일 레벨 2, 시장 상태를 보조 판단하기 위해.

전략적 이점

  1. 웨이브 트렌드 지표는 동력과 변동성의 특성을 결합하여 시장의 추세를 더 잘 포착할 수 있다.
  2. 이중 주기 WaveTrend 지표는 일부 잡음 신호를 효과적으로 필터링 할 수 있습니다.
  3. 오버 바이 오버 세일 레벨의 설정은 시장의 변동이 큰 상황에서 전략이 자주 거래되는 것을 어느 정도 방지할 수 있다.
  4. 전략의 논리는 명확하고, 이해하기 쉽고, 실행하기 쉽다.

전략적 위험

  1. 이 전략은 흔들리는 도시에서 더 많은 가짜 신호를 발생시킬 수 있습니다.
  2. 매개 변수의 선택은 전략의 성능에 큰 영향을 미치며, 다른 매개 변수는 전략의 성능에 큰 차이를 초래할 수 있다.
  3. 이 전략은 위험 통제를 고려하지 않았으며, 극단적인 상황에서는 더 큰 회수 현상이 발생할 수 있습니다.

전략 최적화 방향

  1. 동향 필터 조건을 추가하는 것을 고려할 수 있습니다. 예를 들어, 장기 평균선의 방향은 흔들리는 시장에서 가짜 신호를 줄일 수 있습니다.
  2. 오버 바이 오버 세일 레벨의 설정을 최적화하여 다양한 시장 상황에 보다 역동적으로 적응할 수 있도록 한다.
  3. 단편 거래의 위험을 제어하기 위해 스톱로스 및 스톱스톱 메커니즘을 추가할 수 있습니다.
  4. 매개 변수 최적화를 통해 최적의 매개 변수 조합을 찾을 수 있다.

요약하다

WaveTrend Cross LazyBear 전략은 WaveTrend 지표에 기반한 트렌드 추적 전략으로, 이중주기 지표 설계와 과매도 과매도 수준을 보조 판단을 통해 트렌드를 포착하면서도 어느 정도의 위험 제어를 고려한다. 그러나, 이 전략은 흔들리는 시장에서 더 많은 가짜 신호가 나타날 수 있으며, 엄격한 위험 관리 조치가 부족하여 실제 적용에서는 추가적인 최적화 및 개선이 필요합니다.

전략 소스 코드
/*backtest
start: 2024-03-01 00:00:00
end: 2024-03-31 23:59:59
period: 1h
basePeriod: 15m
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/
// © burakaydingr

//@version=5
strategy("WaveTrend with Crosses [LazyBear]", shorttitle="WT_CROSS_LB", overlay=true)

// Kullanıcı girişleri
n1 = input(10, title="Channel Length")
n2 = input(21, title="Average Length")
obLevel1 = input(60, title="Over Bought Level 1")
obLevel2 = input(53, title="Over Bought Level 2")
osLevel1 = input(-60, title="Over Sold Level 1")
osLevel2 = input(-53, title="Over Sold Level 2")

// Temel hesaplamalar
ap = hlc3
esa = ta.ema(ap, n1)
d = ta.ema(math.abs(ap - esa), n1)
ci = (ap - esa) / (0.015 * d)
tci = ta.ema(ci, n2)

// WaveTrend göstergeleri
wt1 = tci
wt2 = ta.sma(wt1, 4)

// Al ve Sat Sinyalleri
buySignal = ta.crossover(wt1, wt2)
sellSignal = ta.crossunder(wt1, wt2)

// Alım ve Satım pozisyonları
if (buySignal)
    if (strategy.position_size <= 0) // Eğer şu anda açık bir satış pozisyonu varsa, onu kapat
        strategy.close("Sell")
    strategy.entry("Buy", strategy.long, comment="Buy Signal: Price crossed above WT2")

if (sellSignal)
    if (strategy.position_size >= 0) // Eğer şu anda açık bir alım pozisyonu varsa, onu kapat
        strategy.close("Buy")
    strategy.entry("Sell", strategy.short, comment="Sell Signal: Price crossed below WT2")

// Renkler ve diğer görseller
plot(0, color=color.new(color.gray, 0), title="Zero Level")
plot(obLevel1, color=color.new(color.red, 0), title="Overbought Level 1")
plot(osLevel1, color=color.new(color.green, 0), title="Oversold Level 1")
plot(obLevel2, color=color.new(color.purple, 0), title="Overbought Level 2")
plot(osLevel2, color=color.new(color.orange, 0), title="Oversold Level 2")

plot(wt1, color=color.new(color.red, 0), title="WT1")
plot(wt2, color=color.new(color.blue, 0), title="WT2")
plot(wt1-wt2, color=color.new(color.purple, 80), style=plot.style_area, title="WT1-WT2 Area")

// İşaretler
plotshape(buySignal, location=location.absolute, color=color.new(color.yellow, 0), style=shape.circle, size=size.small, title="Buy Signal")
plotshape(sellSignal, location=location.absolute, color=color.new(color.red, 0), style=shape.circle, size=size.small, title="Sell Signal")