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