VWAP 및 RSI 동적 Bollinger 밴드 손절매 및 손절매 전략

VWAP RSI BB ATR
생성 날짜: 2024-06-14 15:18:39 마지막으로 수정됨: 2024-06-14 15:18:39
복사: 1 클릭수: 888
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

VWAP 및 RSI 동적 Bollinger 밴드 손절매 및 손절매 전략

개요

이 전략은 VWAP (거래량 가중 평균 가격), RSI (상대적으로 강한 지수) 및 부린 밴드 세 가지 기술 지표를 결합하여 동적 스톱 스톱을 통해 간단하고 사용하기 쉬운 정량화 거래 전략을 구현합니다. 전략의 주요 아이디어는 VWAP 지표를 사용하여 지난 기간 동안의 가격을 판단하고, RSI 지표와 부린 밴드 지표를 결합하여 가격이 과매 또는 과매 범위에 있는지 판단하여 거래 신호를 결정합니다. 거래 신호가 확인되면 전략은 ATR (진실 파도) 지표에 따라 동적 스톱 스톱 가격을 계산하여 위험을 제어하고 수익을 고정합니다.

전략 원칙

  1. VWAP, RSI, 부린 세 가지 기술 지표의 값을 계산하십시오.
  2. 지난 15개 K선에서 VWAP와 연결된 종전 가격의 관계를 판단하여, 가격의 움직임을 결정하는 것은 상승, 하락, 또는 파동이다.
  3. 가격이 부린 반지 아래로 내려가면 RSI가 45보다 작고 VWAP 신호가 하향을 표시하면 더 많은 신호를 생성합니다. 가격이 부린 반지 위로 올라간다면 RSI가 55보다 크고 VWAP 신호가 상승하면 공백 신호를 생성합니다.
  4. 거래 신호가 확인되면, 전략은 ATR 지표에 따라 1.5: 1 비율로 중지 및 중지 손실 가격을 계산합니다.
  5. 이미 다수 상위 포지션을 보유하고 있다면, RSI가 90보다 크면 전략은 다수 상위 포지션을 평면화합니다. 이미 빈 상위 포지션을 보유하고 있다면, RSI가 10보다 작으면 전략은 빈 상위 포지션을 평면화합니다.

전략적 이점

  1. 여러 기술 지표와 결합하여 거래 신호의 신뢰성을 높였습니다.
  2. 다이내믹 스톱 스톱 로즈는 위험을 효과적으로 통제하고 수익을 잠금화합니다.
  3. 코드 구조는 명확하고 이해하기 쉽고 최적화하기 쉽습니다.
  4. 동향 및 변동 시장을 포함한 다양한 시장 환경에 적용됩니다.

전략적 위험

  1. 시장의 변동성이 큰 상황에서, 자주 거래하는 것은 높은 거래 비용을 초래할 수 있습니다.
  2. 만약 시장에서 갑작스러운 사건이나 비합리적인 행동이 발생한다면, 전략은 잘못된 거래 신호를 생성할 수 있다.
  3. 전략의 매개 변수 설정은 전략의 유효성을 보장하기 위해 다른 시장 환경에 따라 조정될 수 있습니다.

전략 최적화 방향

  1. VWAP, RSI, 브린 띠의 파라미터 설정을 조정하여 다른 시장 환경과 거래 품종에 맞게 조정할 수 있습니다.
  2. 거래 신호의 신뢰성을 더 높이기 위해 MACD, KDJ 등과 같은 다른 기술 지표를 도입 할 수 있습니다.
  3. 스톱 스톱 손실을 최적화 할 수있는 계산 방법은 이동 스톱 또는 수익 보호 스톱 손실을 사용하는 것과 같은 방법으로 위험을 더 잘 제어하고 수익을 잠금 할 수 있습니다.
  4. 전략의 종합적 성과를 높이기 위해 경제 데이터, 정책 변화 등과 같은 기초적인 분석과 결합할 수 있습니다.

요약하다

이 전략은 VWAP, RSI, 그리고 브린 밴드 세 가지 기술 지표를 결합하여 간단하고 쉽게 사용할 수 있는 정량화 거래 전략을 구현한다. 전략은 동적 스톱 스톱 손실 방식을 채택하여 위험을 효과적으로 제어하고 이익을 잠금 할 수 있다. 전략에는 잠재적인 위험이 있지만, 합리적인 매개 변수 설정과 지속적인 최적화를 통해 전략은 실제 거래에서 좋은 효과를 얻을 수 있다고 믿는다.

전략 소스 코드
/*backtest
start: 2024-06-06 00:00:00
end: 2024-06-13 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("VWAP and RSI Strategy", overlay=true)

// VWAP calculation
vwap = ta.vwap(close)

// RSI calculation
rsi_length = 16
rsi = ta.rsi(close, rsi_length)

// Bollinger Bands calculation
bb_length = 14
bb_std = 2.0
[bb_middle, bb_upper, bb_lower] = ta.bb(close, bb_length, bb_std)

// Variables for VWAP signal calculation
backcandles = 15
float vwapsignal = na

// Function to check if last 15 candles are above or below VWAP
calc_vwapsignal(backcandles) =>
    upt = true
    dnt = true
    for i = 0 to backcandles - 1
        if close[i] < vwap[i]
            upt := false
        if close[i] > vwap[i]
            dnt := false
    if upt and dnt
        3
    else if upt
        2
    else if dnt
        1
    else
        0

// Calculate VWAP signal for each bar
vwapsignal := calc_vwapsignal(backcandles)

// Calculate total signal
totalsignal = 0
if vwapsignal == 2 and close <= bb_lower and rsi < 45
    totalsignal := 2
else if vwapsignal == 1 and close >= bb_upper and rsi > 55
    totalsignal := 1



// Define strategy entry and exit conditions
slatr = 1.2 * ta.atr(7)
TPSLRatio = 1.5

if (totalsignal == 2 and strategy.opentrades == 0)
    strategy.entry("Long", strategy.long, stop=close - slatr, limit=close + slatr * TPSLRatio)

if (totalsignal == 1 and strategy.opentrades == 0)
    strategy.entry("Short", strategy.short, stop=close + slatr, limit=close - slatr * TPSLRatio)

// Additional exit conditions based on RSI
if (strategy.opentrades > 0)
    if (strategy.position_size > 0 and rsi >= 90)
        strategy.close("Long")
    if (strategy.position_size < 0 and rsi <= 10)
        strategy.close("Short")