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

VWAP와 슈퍼 트렌드 구매/판매 전략

저자:차오장, 날짜: 2024-06-03 10:45:14
태그:VWAPATR

img

전반적인 설명

이 전략은 VWAP (Volume Weighted Average Price) 및 슈퍼트렌드 지표를 결합합니다. 그것은 VWAP에 대한 가격의 위치와 슈퍼트렌드 지표의 방향을 비교하여 구매 및 판매 신호를 결정합니다. 가격이 VWAP 위에 넘어가고 슈퍼트렌드가 긍정적 인 경우 구매 신호가 생성되며 가격이 VWAP 아래에 넘어가고 슈퍼트렌드가 부정적인 경우 판매 신호가 생성됩니다. 전략은 또한 반대 신호가 나타날 때까지 이전 신호 상태를 기록하여 중복 신호를 생성하는 것을 피합니다.

전략 원칙

  1. VWAP 지표를 ta.vwap 함수를 사용하여 계산합니다. VWAP 길이를 조정할 수 있습니다.
  2. 수퍼트렌드 인디케이터를 ta.supertrend 함수와 맞춤형 ATR 기간 및 곱셈자를 사용하여 계산합니다.
  3. 구매 조건을 결정합니다. 현재 가격은 VWAP 이상으로 넘어가고 슈퍼 트렌드 방향은 긍정적입니다.
  4. 판매 조건을 결정합니다. 현재 가격은 VWAP 아래로 넘어가고 슈퍼트렌드 방향은 음수입니다.
  5. 이전 신호 상태를 기록하여 동일한 방향으로의 연속 신호를 피합니다. 현재 신호가 이전 신호와 다르면만 새로운 거래 신호가 생성됩니다.

전략적 장점

  1. 시장 동향과 잠재적 전환점을 보다 포괄적으로 평가하기 위해 VWAP와 Supertrend 지표를 결합합니다.
  2. VWAP 지표는 시장의 실제 움직임을 더 잘 반영하는 부피를 고려합니다.
  3. 슈퍼트렌드 지표는 트렌드 추적 및 오스실레이션 필터링 특성을 가지고 있으며 주요 트렌드를 파악하는 데 도움이됩니다.
  4. 중복 신호를 피하는 메커니즘은 거래 빈도를 줄이고 거래 비용을 낮춰줍니다.

전략 위험

  1. 높은 시장 변동성 또는 불분명한 추세 기간 동안 전략은 더 많은 잘못된 신호를 생성 할 수 있습니다.
  2. 전략의 성능은 VWAP와 슈퍼트렌드 매개 변수 선택에 달려 있습니다. 다른 설정이 다른 결과를 가져올 수 있습니다.
  3. 전략은 위험 관리 및 위치 크기를 포함하지 않으며, 실제 응용에서 위험을 제어하기 위한 다른 조치와 결합되어야합니다.

전략 최적화 방향

  1. 추세 확인 메커니즘을 도입합니다. 이동 평균 또는 다른 추세 지표를 사용하여 신호를 더 잘 필터합니다.
  2. VWAP 길이, ATR 기간 및 곱셈의 최상의 조합을 찾기 위해 역사 데이터를 백테스팅하여 매개 변수 선택을 최적화하십시오.
  3. 개인 거래 위험을 제어하기 위해 스톱 로스 및 영업 취득과 같은 위험 관리 조치를 시행합니다.
  4. 포지션 크기를 최적화하기 위해 고정 분수 또는 켈리 기준과 같은 돈 관리 전략을 통합하는 것을 고려하십시오.

요약

VWAP 및 슈퍼트렌드 구매/판매 전략은 두 가지 다른 유형의 지표를 결합하여 시장 추세와 잠재적 전환점을 포착하는 것을 목표로합니다. 전략 논리는 명확하고 구현 및 최적화하기가 쉽습니다. 그러나 전략의 성능은 매개 변수 선택에 달려 있으며 위험 관리 조치가 부족합니다. 실제 응용에서는 다른 시장 조건과 거래 요구 사항에 적응하기 위해 추가 최적화 및 정리가 필요합니다.


/*backtest
start: 2023-05-28 00:00:00
end: 2024-06-02 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title="VWAP and Super Trend Buy/Sell Strategy", shorttitle="VWAPST", overlay=true)


//===== VWAP =====
showVWAP = input.bool(title="Show VWAP", defval=true, group="VWAP")
VWAPSource = input.source(title="VWAP Source", defval=hl2, group="VWAP")
VWAPrice = ta.vwap(VWAPSource)
plot(showVWAP ? VWAPrice : na, color=color.teal, title="VWAP", linewidth=2)


//===== Super Trend =====
showST = input.bool(true, "Show SuperTrend Indicator", group="Super Trend")
Period = input.int(title="ATR Period", defval=10, group="Super Trend")
Multiplier = input.float(title="ATR Multiplier", defval=2.0, group="Super Trend")


// Super Trend ATR
Up = hl2 - (Multiplier * ta.atr(Period))
Dn = hl2 + (Multiplier * ta.atr(Period))
var float TUp = na
var float TDown = na
TUp := na(TUp[1]) ? Up : close[1] > TUp[1] ? math.max(Up, TUp[1]) : Up
TDown := na(TDown[1]) ? Dn : close[1] < TDown[1] ? math.min(Dn, TDown[1]) : Dn
var int Trend = na
Trend := na(Trend[1]) ? 1 : close > TDown[1] ? 1 : close < TUp[1] ? -1 : Trend[1]


Tsl = Trend == 1 ? TUp : TDown
linecolor = Trend == 1 ? color.green : color.red
plot(showST ? Tsl : na, color=linecolor, style=plot.style_line, linewidth=2, title="SuperTrend")


// Buy/Sell Conditions
var bool previousBuysignal = false
var bool previousSellsignal = false


buysignal = not previousBuysignal and Trend == 1 and close > VWAPrice
sellsignal = not previousSellsignal and Trend == -1 and close < VWAPrice


// Ensure the signals are not repetitive
if (buysignal)
    previousBuysignal := true
    previousSellsignal := false
else if (sellsignal)
    previousBuysignal := false
    previousSellsignal := true


// Execute buy and sell orders
if (buysignal)
    strategy.entry("Buy", strategy.long)
if (sellsignal)
    strategy.entry("Sell", strategy.short)


// Plot Buy/Sell Labels
//plotshape(buysignal, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY", textcolor=color.white, size=size.normal)
//plotshape(sellsignal, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL", textcolor=color.white, size=size.normal)


관련

더 많은