RSI와 VWAP를 기반으로 한 단기 양적 전략


생성 날짜: 2024-01-19 14:21:15 마지막으로 수정됨: 2024-01-19 14:21:15
복사: 0 클릭수: 1005
avatar of ChaoZhang ChaoZhang
1
집중하다
1628
수행원

RSI와 VWAP를 기반으로 한 단기 양적 전략

개요

이 전략은 RSI-VWAP 단선 전략으로 명명된다. 이 전략은 RSI 지표와 거래량 중화 평균 ((VWAP) 을 기술 지표로 사용하여 다중 허공 신호를 설정하고 구매 결정을 내린다. 이 전략은 시장의 과매매 과매매 현상을 단선에서 포착하여 초과 수익을 얻으려는 전략을 추구한다.

전략 원칙

  1. RSI 지표를 사용하여 시장이 과매매 또는 과매매 상태에 있는지 판단하십시오. RSI 지표 값이 80보다 높으면 과매매 지역이며, 20보다 낮으면 과매매 지역입니다.
  2. RSI 지표는 VWAP를 종결 가격 대신 원천 데이터로 사용합니다. VWAP는 당일 평균 거래 가격을 반영 할 수 있습니다.
  3. RSI 지수 값이 초상가 영역에서 20을 통과하면 구매 신호가 발생한다. RSI 지수 값이 초상가 영역에서 80을 통과하면 판매 신호가 발생한다.
  4. 이 전략은 오버헤드만 하고, 공백을 하지 않는다. 즉, 오버세일 때만 구매하고, 오버세일 때만 판매한다.

우위 분석

  1. VWAP를 RSI의 데이터 소스로 사용하여 RSI 지표가 시장에 대한 판단을 더 정확하게하고 가짜 돌파구에 의해 오도되지 않도록하십시오.
  2. 이 작업은 여러 개의 작업만 수행하여 작업 빈도를 낮출 수 있으며, 장기적으로 안정적인 수익을 얻을 수 있습니다.
  3. RSI 지표 파라미터는 17이며, 단선 연산에 적합하다.
  4. 예상 거래 횟수가 적은 단선 운영 방식을 채택하여 거래 비용을 절감하여 더 높은 수익률을 얻습니다.

위험 분석

  1. 양적 전략 피드백에는 과일접합의 위험이 있으며, 실판 결과는 피드백과 일치하지 않을 수 있다.
  2. 하지만, 이 시장의 수요가 급격히 증가하고 있는 상황에서, 시장의 수요가 급격히 감소하고 있는 상황에서는,
  3. 과매매 판단 기준은 모든 품종에 적합하지 않을 수 있으며, 다른 품종에 대한 매개 변수를 조정할 필요가 있다.
  4. 어떤 기술적인 지표도 잘못된 신호를 만들어 낼 수 있고, 손실을 완전히 피할 수는 없다.

과매매 기준을 적절히 완화하고, 다른 지표와 결합하여 신호를 확인하고, 변수 범위를 조정하는 등의 방법으로 위험을 줄일 수 있다.

최적화 방향

  1. 전략 효과에 대한 다양한 변수의 영향을 테스트하고, RSI 길이를 최적화하고, 오버 바이 오버 시트 경계를 초과합니다.
  2. 손실을 막는 전략을 늘리고, 이동적 손실, 시간적 손실 등을 통해 수익을 일부 잠금하고, 회수량을 줄이십시오.
  3. 다른 지표와 결합하여 신호 필터링을 통해 신호 정확도를 향상시킵니다.
  4. 다양한 품종 특성에 따라 독립적인 파라미터 범위를 설정하여 전략을 다양한 품종에 더 잘 적응시킬 수 있습니다.

요약하다

이 전략은 전반적으로 간단하고 실용적인 단선 전략이다. VWAP를 사용하여 RSI 지표 판단을 더 정확하게하고, 여러 가지 작업을 수행하는 것 만으로 작업 빈도를 줄인다. 전략 아이디어는 명확하고, 이해하기 쉽고 구현하기 쉽고, 양적 거래의 입문에 적합하다. 그러나 어떤 단일 지표 전략도 완벽하지 않으며, 더 나은 실적 효과를 얻기 위해 지속적으로 최적화해야합니다.

전략 소스 코드
/*backtest
start: 2023-12-19 00:00:00
end: 2024-01-18 00:00:00
period: 1h
basePeriod: 15m
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/
// © Xaviz

//#####©ÉÉÉɶN###############################################
//####*..´´´´´´,,,»ëN########################################
//###ë..´´´´´´,,,,,,''%©#####################################
//###'´´´´´´,,,,,,,'''''?¶###################################
//##o´´´´´´,,,,,,,''''''''*©#################################
//##'´´´´´,,,,,,,'''''''^^^~±################################
//#±´´´´´,,,,,,,''''''''^í/;~*©####æ%;í»~~~~;==I±N###########
//#»´´´´,,,,,,'''''''''^;////;»¶X/í~~/~~~;=~~~~~~~~*¶########
//#'´´´,,,,,,''''''''^^;////;%I^~/~~/~~~=~~~;=?;~~~~;?ë######
//©´´,,,,,,,''''''''^^~/////X~/~~/~~/~~»í~~=~~~~~~~~~~^;É####
//¶´,,,,,,,''''''''^^^;///;%;~/~~;í~~»~í?~?~~~?I/~~~~?*=íÑ###
//N,,,,,,,'''''''^^^^^///;;o/~~;;~~;£=»í»;IX/=~~~~~~^^^^'*æ##
//#í,,,,,''''''''^^^^^;;;;;o~»~~~~íX//~/»~;í?IíI»~~^/*?'''=N#
//#%,,,'''''''''^^^^^^í;;;;£;~~~//»I»/£X/X/»í*&~~~^^^^'^*~'É#
//#©,,''''''''^^^^^^^^~;;;;&/~/////*X;í;o*í»~=*?*===^'''''*£#
//##&''''''''^^^^^^^^^^~;;;;X=í~~~»;;;/~;í»~»±;^^^^^';=''''É#
//##N^''''''^^^^^^^^^^~~~;;;;/£;~~/»~~»~~///o~~^^^^''''?^',æ#
//###Ñ''''^^^^^^^^^^^~~~~~;;;;;í*X*í»;~~IX?~~^^^^/?'''''=,=##
//####X'''^^^^^^^^^^~~~~~~~~;;íííííí~~í*=~~~~Ií^'''=''''^»©##
//#####£^^^^^^^^^^^~~~~~~~~~~~íííííí~~~~~*~^^^;/''''='',,N###
//######æ~^^^^^^^^~~~~~~~~~~~~~~íííí~~~~~^*^^^'=''''?',,§####
//########&^^^^^^~~~~~~~~~~~~~~~~~~~~~~~^^=^^''=''''?,íN#####
//#########N?^^~~~~~~~~~~~~~~~~~~~~~~~~^^^=^''^?''';í@#######
//###########N*~~~~~~~~~~~~~~~~~~~~~~~^^^*'''^='''/É#########
//##############@;~~~~~~~~~~~~~~~~~~~^^~='''~?'';É###########
//#################É=~~~~~~~~~~~~~~^^^*~'''*~?§##############
//#####################N§£I/~~~~~~»*?~»o§æN##################

//@version=4
strategy("RSI-VWAP INDICATOR", overlay=false)

// ================================================================================================================================================================================
// RSI VWAP INDICATOR
// ================================================================================================================================================================================

// Initial inputs
Act_RSI_VWAP = input(true, "RSI VOLUME WEIGHTED AVERAGE PRICE")
RSI_VWAP_length = input(17, "RSI-VWAP LENGTH")
RSI_VWAP_overSold = input(19, "RSI-VWAP OVERSOLD", type=input.float)
RSI_VWAP_overBought = input(80, "RSI-VWAP OVERBOUGHT", type=input.float)

// RSI with VWAP as source
RSI_VWAP = rsi(vwap(close), RSI_VWAP_length)

// Plotting, overlay=false
r=plot(RSI_VWAP, color = RSI_VWAP > RSI_VWAP_overBought ? color.red : RSI_VWAP < RSI_VWAP_overSold ? color.lime : color.blue, title="rsi", linewidth=2, style=plot.style_line)
h1=plot(RSI_VWAP_overBought, color = color.gray, style=plot.style_stepline)
h2=plot(RSI_VWAP_overSold, color = color.gray, style=plot.style_stepline)
fill(r,h1, color = RSI_VWAP > RSI_VWAP_overBought ? color.red : na, transp = 60)
fill(r,h2, color = RSI_VWAP < RSI_VWAP_overSold ? color.lime : na, transp = 60)

// Long only Backtest
strategy.entry("Long", strategy.long, when = (crossover(RSI_VWAP, RSI_VWAP_overSold)))
strategy.close("Long", when = (crossunder(RSI_VWAP, RSI_VWAP_overBought)))