동적 RSI 충격 운영 전략


생성 날짜: 2023-11-02 16:04:07 마지막으로 수정됨: 2023-11-02 16:04:07
복사: 1 클릭수: 666
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

동적 RSI 충격 운영 전략

개요

이 전략은 동적 지지/저항과 상대적으로 약한 RSI를 결합하여 RSI가 상반된 상반된 범위를 설정하고 동적 지지/저항을 돌파할 때 RSI가 상반된 상반된 범위에 들어갔는지 판단하여 구매 및 판매 신호를 생성합니다.

원칙

1. 동적 지원/저항 위치

security 함수를 사용하여 닫기 가격을 동적인 지지/저항 지점으로 취하고, 가격이 이 동적인 지점을 돌파하면 거래 신호를 발생시킨다.

2. RSI 지표

일정 주기 동안의 평균 상승과 평균 하락을 계산하여 둘을 비교하여 RSI 값을 생성하여 과매매 영역에 진입했는지 판단하십시오.

3. 거래 신호

가격이 동적 지점을 돌파할 때, RSI가 초매권에 들어가지 않았다면, 구매/판매 신호를 발생시킨다. 들어갔다면, 돌파구에서 생성된 신호를 무시한다.

4. 탈퇴 신호

가격이 역동적 지점으로 돌아가는 동안 평소하거나 RSI가 정상 영역으로 돌아가는 동안 평소하십시오.

우위 분석

  1. 동적인 지지/저항 지점을 사용하여 트렌드 방향을 판단하여 수익을 올릴 확률을 높여라.

  2. RSI 지표는 가짜 돌파구를 필터링하고, 횡포를 방지한다.

  3. 트렌드와 지표가 결합되어 다양한 상황에 적용됩니다.

  4. 규칙은 명확하고 실행하기 쉽습니다.

위험과 해결책

  1. 동적비트는 여러 번의 테스트 돌파가 발생할 수 있으며, 잘못된 신호를 유발할 수 있으며, 돌파폭 필터링을 적절히 완화할 수 있다.

  2. 단일 RSI 지표는 잘못된 판단을 일으킬 수 있으며, 다른 지표는 조합 필터링을 위해 도입 할 수 있습니다.

  3. 불안정한 상황에서는 빈번한 입점 개시, 거래 비용이 높을 수 있으며, RSI 정상값 범위를 적절히 완화하여 거래 빈도를 줄일 수 있습니다.

  4. 매개 변수 설정이 잘못되면 누락된 항목이나 엉뚱한 항목이 발생할 수 있습니다. 각 품종에 따라 합리적으로 매개 변수를 선택하십시오.

최적화 방향

  1. 기계 학습 기술을 사용하여 RSI 매개 변수를 자동으로 최적화하십시오.

  2. 수익을 고정하고 손실을 줄이기 위해 Stop Loss Strategies를 추가합니다.

  3. 더 많은 지표와 결합하여 조합 필터링을 통해 전략의 안정성을 향상시킵니다.

  4. 변동률 지표를 늘리고, 낮은 변동률이 있을 때 지위를 낮추는 것.

  5. 포지션 수 알고리즘을 최적화하여 포지션 동적으로 조정하여 다른 시장 환경에 적응하십시오.

요약하다

이 전략은 트렌드 판단과 지표 필터링을 결합하여 중요한 수준 근처의 가격 파괴를 효과적으로 식별하고 위험을 통제하는 전제 하에 높은 수익을 얻을 수 있습니다. 파라미터 설정을 추가로 최적화하고, 스톱 스톱을 증가시키고, 더 많은 지표를 도입함으로써 전략의 안정성과 적응성을 더욱 향상시킬 수 있으며, 더 넓은 시장에서 안정적인 수익을 얻을 수 있습니다.

전략 소스 코드
/*backtest
start: 2022-10-26 00:00:00
end: 2023-11-01 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy(title = "Noro's Levels+RSI Strategy v1.0", shorttitle = "Levels+RSI str 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 3)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
tf = input('W', title = "timeframe 1")
src = input(ohlc4, "Source")
ap = input(true, defval = true, title = "antipila")
cf = input(true, defval = true, title = "color filter")
rsiperiod = input(7, defval = 7, minval = 2, maxval = 100, title = "RSI Period")
rsilimit = input(30, defval = 30, minval = 1, maxval = 50, title = "RSI Limit")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//Level
level = request.security(syminfo.tickerid, tf, src[1])
plot(level, linewidth = 3, color = silver)

//RSI
uprsi = rma(max(change(close), 0), rsiperiod)
dnrsi = rma(-min(change(close), 0), rsiperiod)
rsi = dnrsi == 0 ? 100 : uprsi == 0 ? 0 : 100 - (100 / (1 + uprsi / dnrsi))

//Level Signals
ls = close > level and ap == false ? true : low > level ? true : false
up1 = strategy.position_size == 0 and ls and (close < open or cf == false)
exit1 = close < level and ap == false ? true : high < level ? true : false 

//RSI Signal

up2 = rsi < rsilimit and (close < open or cf == false)
exit2 = rsi > rsilimit and ls == false

//Trading
lot = strategy.position_size != strategy.position_size[1] ? strategy.equity / close * capital / 100 : lot[1]

if up1 or up2 
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot)
    
if  (exit1 and rsi > rsilimit) or exit2
    strategy.close_all()