
이 전략의 이름은 추적형 가치 가중 평균 가격과 상대적으로 강한 지표 조합 전략 . 이 전략은 가치 가중 평균 가격 ((VWAP) 과 상대적으로 강한 지표 ((RSI) 두 가지 지표를 사용하여 트렌드 추적 입구와 과매매 과매출 출구의 조합 전략을 구현한다.
이 전략의 거래 논리는 주로 다음과 같습니다.
이 전략의 기본 거래 논리는 다음과 같습니다. EMA가 큰 트렌드를 판단하고, VWAP는 당일 트렌드를 판단하고, RSI는 과매도 영역을 판단하여 여러 지표의 효과적인 결합을 구현하여 거래의 주요 방향을 올바르게 보장하고, 입수 및 퇴출 신호 효과를 증가시킵니다.
이 전략의 가장 큰 장점은 지표의 조합을 사용하는 데 있습니다. 단일 VWAP는 모든 시장 상황을 완벽하게 대응 할 수 없습니다. 이 시점에 RSI의 보조를 도입하면 단기간의 과매도 돌파구 지점을 가져오는 거래 기회를 식별 할 수 있습니다. 또한, EMA의 적용은 대주기 상향 운동 만 입장을 선택하여 단기간의 조정 역전시설에 갇히지 않도록합니다.
이 조합 지표의 사용 방식은 또한 전략의 안정성을 증가시킨다. RSI가 1~2번의 가짜 브레이크가 발생했을 경우, VWAP와 EMA가 뒷받침하여 잘못된 거래가 발생할 가능성이 거의 없다. 마찬가지로, VWAP가 가짜 브레이크가 발생했을 때, RSI 지표의 확인도 있다. 따라서 이 조합을 사용하면 전략 실행의 성공률이 크게 증가한다.
이 전략의 주요 위험은 VWAP 지표를 사용하는 데 있습니다. VWAP는 당일 평균 거래 가격을 나타냅니다. 그러나 매일의 가격 변동이 VWAP를 중심으로 오르락 내리락하는 것은 아닙니다. 따라서 VWAP의 돌파 신호는 반드시 후시장의 가격이 실제로 계속 돌파 할 수 있음을 보장하지 않습니다. 가짜 돌파구가 발생하면 거래 손실이 발생할 수 있습니다.
또한, RSI 지표는 분기점이 발생하기 쉽다. 시장이 충격적인 정리 단계에 있을 때, RSI는 반복적으로 과매도 영역을 만질 수 있으며, 거래 신호의 빈번한 출력을 초래한다. 이 경우, RSI 신호를 맹목적으로 따라 거래하는 경우에도 위험이 있습니다.
이에 대해, 우리는 전략에 EMA 지수 이동 평균을 대주기 판단으로 채택하고, 대주기 상향일 때만 거래를 고려하여, 이는 상술한 두 가지 문제가 전략에 미치는 영향을 어느 정도 피할 수 있다. 또한, 스톱로스 라인을 설정하여, 일회성 손실을 일정 범위 내에서 제어할 수 있다.
이 전략은 다음의 몇 가지 측면에 초점을 맞추어 더 많은 최적화를 할 수 있습니다.
카르만 평평선, 브린 띠 등과 같은 더 많은 지표가 도입되어 거래 신호가 더 명확하고 신뢰할 수 있습니다.
거래 비용에 대한 최적화. 기존 전략은 수수료의 영향을 고려하지 않고 실제 거래 계좌와 결합하여 포지션 개시 크기를 최적화 할 수 있습니다.
스톱모델을 조정한다. 기존의 스톱모델은 단순하기 때문에 시장의 변화에 완벽하게 대응할 수 없다. 모바일 스톱모델을 테스트하고, 스톱모델을 추적하는 방법도 있다.
다양한 품종의 응용 효과를 테스트한다. 현재는 S&P와 나포 지수에서만 테스트한다. 샘플 범위를 확장하여 전략에 가장 적합한 품종을 찾을 수 있다.
이 전략은 EMA, VWAP 및 RSI의 세 가지 지표의 장점을 종합적으로 활용하여 트렌드 추적과 오버 구매 오버 판매의 효과적인 조합을 구현합니다. 이 전략은 대주기 상향 및 단기 조정 모두에서 합리적인 진입 시기를 찾을 수 있으며 강한 안정성을 가지고 있습니다. 동시에, 전략 최적화 공간은 넓고, 더 많은 지표를 도입하고, 손실을 중지하는 방법을 조정하는 등의 방법으로 전략 승률과 수익 수준을 더욱 향상시킬 수 있습니다.
/*backtest
start: 2024-01-15 00:00:00
end: 2024-01-22 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © mohanee
//@version=4
strategy(title="VWAP and RSI strategy [EEMANI]", overlay=false)
//This strategy combines VWAP and RSI indicators
//BUY RULE
//1. EMA50 > EMA 200
//2. if current close > vwap session value and close>open
//3. check if RSI3 is dipped below 10 for any of last 10 candles
//EXIT RULE
//1. RSI3 crossing down 90 level
//STOP LOSS EXIT
//1. As configured --- default is set to 5%
// variables BEGIN
longEMA = input(200, title="Long EMA", minval=1)
shortEMA = input(50, title="short EMA", minval=1)
rsi1 = input(3,title="RSI Period", minval=1)
rsi_buy_line = input(10,title="RSI Buy Line", minval=5)
rsi_sell_line = input(90,title="RSI Sell Line", minval=50)
stopLoss = input(title="Stop Loss%", defval=5, minval=1)
//variables END
longEMAval= ema(close, longEMA)
shortEMAval= ema(close, shortEMA)
rsiVal=rsi(close,rsi1)
vwapVal=vwap(hlc3)
// Drawings
plot_rsi = plot(rsiVal, title="RSI", color=color.purple, linewidth=1)
//plot_fill = plot(0, color=color.green, editable=false)
//fill(plot_rsi, plot_fill, title="Oscillator Fill", color=color.blue, transp=75)
hline(rsi_buy_line, color=color.green, title="Buy Line", linewidth=2, linestyle=hline.style_dashed)
hline(rsi_sell_line, color=color.purple, title="Sell Line", linewidth=2, linestyle=hline.style_dashed)
//plot(value_ma, title="MA", color=color_ma, linewidth=2)
longCondition= shortEMAval > longEMAval and close>open and close>vwapVal
rsiDipped = rsiVal[1]<rsi_buy_line or rsiVal[2]<rsi_buy_line or rsiVal[3]<rsi_buy_line or rsiVal[4]<rsi_buy_line or rsiVal[5]<rsi_buy_line or rsiVal[6]<rsi_buy_line or rsiVal[7]<rsi_buy_line or rsiVal[8]<rsi_buy_line or rsiVal[9]<rsi_buy_line or rsiVal[10]<rsi_buy_line
//Entry
strategy.entry(id="VWAP_RSI LE", comment="VR LE" , long=true, when= longCondition and rsiDipped )
//Take profit Exit
strategy.close(id="VWAP_RSI LE", comment="TP Exit", when=crossunder(rsiVal,90) )
//stoploss
stopLossVal = strategy.position_avg_price - (strategy.position_avg_price*stopLoss*0.01)
strategy.close(id="VWAP_RSI LE", comment="SL Exit", when= close < stopLossVal)