Stoch RSI를 기반으로 한 추세 추종 전략


생성 날짜: 2024-02-02 11:23:29 마지막으로 수정됨: 2024-02-02 11:23:29
복사: 0 클릭수: 649
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

Stoch RSI를 기반으로 한 추세 추종 전략

개요

이 전략은 스토흐 RSI 지표의 설계에 기반한 트렌드 추적 전략이다. RSI와 스토흐 지표의 장점을 결합하여 스토흐 RSI의 교차로 거래 신호를 생성하고, 트렌드 추적 메커니즘을 사용하여 스톱 및 스톱 라인을 동적으로 조정하여 최적화된 재원 관리를 구현한다.

전략 원칙

이 전략은 RSI의 Stoch K와 D선을 계산하여, Stoch RSI의 K선이 하위에서 20을 돌파할 때 구매 신호를 발생시킨다. 그 다음에는 이전 몇 K선 최저 가격의 기준으로 한 중지 지점을 설정하고, 가격이 상승함에 따라 중지 지점을 동적으로 조정한다. 동시에 최고 가격에 기반한 중지 지선을 설정하여, 가격이 중지 지점에 도달했을 때 포지션 중단을 한다.

우위 분석

이 전략은 스토치 RSI 지표와 결합하여 시장의 추세를 판단하고 신호를 생성하여 단일 RSI 지표의 한계를 피합니다. 동시에, 트렌드 추적 메커니즘은 스톱 로드 라인을 가격과 함께 지속적으로 조정 할 수있게하여, 조기 스톱 로드 탈퇴의 위험을 피하고, 트렌드 상황을 지속적으로 잡을 수 있습니다. 또한, RSI 지표는 자체적으로 좋은 승률을 가지고 있습니다.

위험 분석

이 전략은 주로 스토흐 RSI 지표에 의존하여 트렌드를 판단하고 교차 신호를 생성하며, 지표 자체가 잘못된 신호를 내보낸다면, 특정 위험에 직면하게 된다. 또한, 충격적인 상황에서, 스톱 라인 및 스톱 라인이 자주 유발될 수 있으므로, 전략의 수익성에 영향을 미칩니다. 변수 최적화를 통해 위험을 줄일 수 있다.

최적화 방향

  • 스토흐 RSI의 파라미터를 최적화하여 K선과 D선의 평평 속도를 조정하여 잘못된 신호의 가능성을 낮추는
  • 스포드라인과 스포드라인의 설정을 최적화하여 변수 안정성을 향상시킵니다.
  • 지진이 발생했을 때 을 피하기 위해 필터링 조건을 추가합니다.
  • 포지션 관리 메커니즘을 추가하고 시장 상황에 따라 포지션 크기를 조정합니다.

요약하다

이 전략은 스토크 RSI 지표의 장점을 통합하고, 트렌드 추적 메커니즘을 설계하여 트렌드 상황을 효과적으로 식별하고, 스톱 로드 스톱을 동적으로 조정하여 수익 가능성을 증가시킵니다. 매개 변수를 최적화하면 전략의 안정성과 추적 능력을 더욱 향상시킬 수 있습니다.

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

//@version=2

strategy("sdf",calc_on_every_tick=true,precision=8,
     default_qty_type=strategy.fixed,currency="USD")
//entradas y variables de indicadores
smoothK = input(3, minval=1)
smoothD = input(3, minval=1)
lengthRSI = input(14, minval=1)
lengthStoch = input(14, minval=1)
src = input(close, title="RSI Source")
rsi1 = rsi(src, lengthRSI)
k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
d = sma(k, smoothD)
overbought=input(80)
oversold=input(20)
//entradas de stop , trail, profit
stop=input(1500)
stop_dentro_de_los_ultimos_lows=input(20)
trail_points=input(500)
trail_offset=input(100)
profit=input(1000)
riesgo_en_dolares=input(15)
marsi=sma(rsi(close,14),14)
//condicion de compra: k>80
buycondition=crossover(k,20) and security(syminfo.ticker,"240",rsi(close,14)>marsi)
bgcolor( security(syminfo.ticker,"240",rsi(close,14)>marsi) ? yellow : na , transp=0)

if year>2014
    strategy.entry("l",strategy.long,qty=1,when=buycondition)
    velasiguente=barssince(buycondition)+1  //cierre en cada vela nueva independientemente si subeObaja.FUNCIONANDO
    strategy.close("l",when=velasiguente>2)       //cierre en cada vela nueva independientemente si subeObaja.FUNCIONANDO
    //paradaMasBajo=lowest(low,stop_dentro_de_los_ultimos_lows)//stop_dentro_de_los_ultimos_lows, NO PROBADA 
    //strategy.exit("l",loss=paradaMasBajo,profit=profit)
plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)