RSI-VWAP 단기 양성 전략

저자:차오장, 날짜: 2024-01-19 14:21:15
태그:

img

전반적인 설명

이 전략은 RSI-VWAP 단기 전략이라고 불린다. 이 전략은 RSI 지표와 볼륨 가중 평균 가격 (VWAP) 을 기술 지표로 사용하여 긴 및 짧은 신호를 생성하고 따라서 구매 및 판매 결정을 내린다. 이 전략은 과도한 수익을 달성하기 위해 단기 시장에서 과소 구매 및 과소 판매 현상을 포착하는 것을 목표로 한다.

전략 원칙

  1. RSI 지표를 사용하여 시장이 과소매 또는 과소매인지 결정합니다. RSI 값 80 이상은 과소매 영역을 나타내고 20 이하는 과소매 영역을 나타냅니다.
  2. RSI 지표는 종료 가격 대신 VWAP를 소스 데이터로 사용합니다. VWAP는 하루 평균 거래 가격을 더 잘 반영합니다.
  3. 구매 신호는 RSI가 초판 영역에서 20을 넘을 때 생성됩니다. 판매 신호는 RSI가 초판 영역에서 80을 넘을 때 생성됩니다.
  4. 이 전략은 길고 짧지 않습니다. 즉, 과잉 판매를 구매하고 과잉 구매를 판매합니다.

이점 분석

  1. RSI의 데이터 소스로 VWAP를 사용하면 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)))

더 많은