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

VWAP 및 RSI 동적 볼링거 밴드 수익 및 중단 손실 전략

저자:차오장, 날짜: 2024-06-14 15:18:39
태그:VWAPRSIBBATR

img

전반적인 설명

이 전략은 세 가지 기술 지표: VWAP (Volume Weighted Average Price), RSI (Relative Strength Index), Bollinger Bands를 결합하여, 동적 인 이익과 스톱 로스를 가진 간단하고 사용하기 쉬운 양적 거래 전략을 구현합니다. 전략의 주요 아이디어는 RSI 및 볼링거 밴드 지표를 사용하여 가격이 과소 구매 또는 과소 판매 범위 내에 있는지 여부를 결정하는 동시에 과거 기간 동안의 가격 추세를 결정하는 VWAP 지표를 사용하는 것입니다. 거래 신호가 결정되면 전략은 위험을 제어하고 이익을 잠금하기 위해 ATR (평균 진정한 범위) 지표에 기반한 동적 인 이익 및 스톱 로스 수준을 계산합니다.

전략 원칙

  1. VWAP, RSI 및 볼링거 밴드 기술 지표의 값을 계산합니다.
  2. 지난 15개의 촛불에서 종료 가격과 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 및 볼링거 밴드 (Bollinger Bands) 를 결합하여 간단하고 사용하기 쉬운 양적 거래 전략을 구현합니다. 이 전략은 위험을 효과적으로 제어하고 이익을 잠금하기 위해 동적 인 수익을 취하고 손실을 중지합니다. 이 전략은 합리적인 매개 변수 설정과 지속적인 최적화로 잠재적인 위험이 있지만 실제 거래에서 좋은 결과를 얻을 수 있다고 믿어집니다.


/*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")


관련

더 많은