이 전략은 동적 지지/저항 수준과 상대적 강도 지표 (RSI) 지표를 결합합니다. 그것은 RSI에 대한 과잉 구매/ 과잉 판매 임계치를 설정하고, RSI가 과잉 구매/ 과잉 판매 영역에 있지 않은 상태에서 가격이 동적 지지/ 저항 수준을 넘을 때 구매/ 판매 신호를 생성합니다.
1. 역동적 지원/저항
보안 함수를 사용하여 닫기 가격을 동적 지지/저항 수준으로 얻습니다. 거래 신호는 가격이 이러한 동적 수준을 통과 할 때 생성됩니다.
2. RSI 지표
특정 기간 동안의 평균 이익과 평균 손실을 계산하여 RSI 값을 생성하고 RSI가 과잉 구매/ 과잉 판매 영역에 도달하는지 여부를 결정합니다.
3. 거래 신호
가격이 동적 수준을 넘어서면, 만약 RSI가 과잉 구매/ 과잉 판매 영역에 있지 않다면, 구매/ 판매 신호가 생성됩니다. 그렇지 않으면, 브레이크 아웃 신호는 무시됩니다.
4. 출구 신호
가격이 역동적인 수준으로 떨어지거나 RSI가 정상 범위에 돌아왔을 때 포지션을 닫습니다.
더 높은 승률을 위해 동적 지원/항항항을 사용하여 트렌드 방향을 결정합니다.
RSI는 가짜 유출을 필터링하고 가짜 입력을 피합니다.
추세와 지표를 결합하면 전략이 다른 시장 조건에 적응 할 수 있습니다.
간단하고 명확한 규칙은 쉽게 적용할 수 있습니다.
다중 테스트에서 잘못된 신호가 나올 수 있습니다
솔로 RSI는 잘못된 판단을 일으킬 수 있습니다. 콤보 필터링을 위해 다른 지표를 추가하십시오.
범위에 한정된 시장에서 빈번하게 거래하면 더 높은 비용이 발생합니다.
부적절한 매개 변수 설정으로 인해 신호가 누락되거나 잘못된 신호가 발생합니다. 다른 자산에 기반한 매개 변수를 최적화하십시오.
기계 학습을 사용하여 RSI 매개 변수를 자동으로 최적화합니다.
스톱 로스/이익 취득 전략을 추가하여 수익을 확보하고 손실을 줄이세요.
안정성을 높이기 위해 콤보 필터링을 위한 더 많은 지표를 포함합니다.
변동성이 낮을 때 변동성 지표를 더 낮은 포지션 크기에 추가합니다.
포지션 사이징 알고리즘을 최적화하여 다른 시장 환경에 따라 포지션을 동적으로 조정합니다.
이 전략은 트렌드 판단과 지표 필터링을 결합하여 주요 수준 주변 트렌드 반전을 효과적으로 파악하고 위험을 제어합니다. 매개 변수 조정, 스톱 손실 / 이익 취득, 더 많은 지표 등을 추가적으로 최적화하면 안정성과 적응력을 향상시켜 더 넓은 범위의 시장에서 안정적인 이익을 창출 할 수 있습니다.
/*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()