여러 상대적 강도 지표의 합성 전략

저자:차오장, 날짜: 2024-01-02 12:06:14
태그:

img

전반적인 설명

다중 상대적 강도 지표 (RSI) 간의 합성 전략 (Synthesis between multiple relative strength indicators, RSI) 은 주식을 거래하기 위해 서로 다른 기간을 가진 여러 RSI를 활용하는 타이밍 거래 전략이다. 1, 2, 3, 4, 5 기간 RSI 지표를 동시에 추적한다. RSI 중 어느 하나 임계치 이하로 떨어지면 구매 신호가 생성된다. 모든 RSI가 자신의 임계치를 초과하면 판매 신호가 생성되어 수익을 창출한다. 따라서 주식에서 타이밍 입출이 달성될 수 있다.

전략 논리

이 전략의 핵심 논리는 4-, 7-, 14-, 21-, 및 28-페리오드 RSI를 포함한 1-, 2-, 3-, 4-, 및 5-페리오드 RSI 지표를 동시에 추적하는 것입니다. 5개의 RSI 지표들 각각에 대해 별도의 임계값이 설정됩니다. RSI 중 어느 하나라도 자신의 임계값 아래로 떨어지면 구매 신호가 발사됩니다.

예를 들어, 4 기간 RSI의 임계값은 15로 설정되어 있습니다. 4 기간 RSI가 15 이하로 떨어지면 구매 신호가 생성됩니다. 전략은 다른 RSI도 자신의 임계값 아래로 떨어지는지 확인합니다. 만약 그렇습니다. 더 많은 구매 신호가 생성됩니다.

모든 5개의 RSI 지표가 릴리하여 각자의 임계치를 초과할 때, 수익을 얻기 위해 판매 신호가 생성된다. 여러 기간 지표의 집합 신호를 통해, 엔트리의 정확성을 향상시킬 수 있다.

전략 강점

  1. 여러 개의 RSI를 가진 항목의 정확성을 향상

이 전략은 구매 및 판매 신호를 생성하기 위해 서로 다른 기간의 5 개의 RSI를 사용합니다. 단일 지표는 때때로 잘못된 신호를 생성 할 수 있습니다. 그러나 여러 개의 집합으로 신호의 정확성이 향상 될 수 있으므로 입력의 정확성이 향상됩니다.

  1. 각기 다른 시장 조건에 적합한 다른 기간의 RSI

    이 전략에서 사용되는 1, 2, 3, 4, 5 기간 RSI는 다른 주기의 변동에 적응할 수 있습니다. 예를 들어, 28 기간 RSI는 장기 거래에 적합하며 4 기간 RSI는 단기 거래에 적합합니다. 이것은 전략이 다른 시장 상황에서 작동하는 것을 보장합니다.

  2. 깨끗하고 명확한 코드 구조

    변수 명칭 및 전략 코드 전체 구조는 깔끔하고 명백합니다. 다른 지표 및 신호에 대한 논리 흐름은 명확합니다. 이것은 전략을 이해하기 쉽고 수정하고 최적화 할 수 있도록합니다. 이는 양적 전략에 매우 중요합니다.

전략 의 위험

  1. 유행 시장에서 유효하지 않습니다.

    이 전략은 과잉 구매 및 과잉 판매 신호에 크게 의존합니다. 지속적인 상승 또는 하락 추세 시장에서 그 효과는 손상 될 것입니다. 이것은 역 지표를 사용하는 평균 역전 전략의 유비쿼터스 결함입니다.

  2. 매개 변수 최적화 어려움

    이 전략에는 다양한 지표와 입력 매개 변수가 존재한다. 이것은 매개 변수 최적화에 엄청난 도전을 제기한다. 잘못된 매개 변수 조합은 전략의 효과를 크게 감소시킬 수 있다. 최적화 도구는 전략 성능을 극대화하는 매개 변수 집합을 찾기 위해 활용되어야 한다.

  3. 장기 및 단기 사이의 빈번한 전환

    여러 기간 지표의 사용으로 인해 전략의 장기 및 단기 포지션 변화는 상당히 자주 발생할 수 있습니다. 이것은 거래와 관련된 높은 비용과 가격 미끄러짐과 관련된 위험을 초래할 수 있습니다.

최적화 위한 지침

  1. 트렌드를 따르는 지표를 포함

    MA 및 BOLL와 같은 트렌드 도구가 추가 될 수 있습니다. 트렌드 도구가 역 지표가 생성하는 신호와 일치 할 때만 신호가 취됩니다. 이는 지속적인 트렌드 상황에서 손실을 피하는 데 도움이됩니다.

  2. RSI 지표의 수를 줄이세요

    사용 된 RSI 도구의 수를 줄이도록 시도하십시오. 이것은 매개 변수 최적화의 어려움을 완화합니다. 실험은 2에서 3 개의 지표를 이미 만족스러운 효과를 창출 할 수 있음을 보여줍니다.

  3. 파라미터 범위를 최적화

    그래디언트 하락과 무작위 검색과 같은 최적화 방법을 사용하여 최적의 범위와 RSI 매개 변수 및 임계값의 조합을 찾으십시오. 이것은 전략 성능을 극대화합니다.

결론

RSI 합성의 전략은 다양한 기간의 여러 RSI에서 집회 신호를 통해 거래 신호를 생성합니다. 이것은 주식 거래의 타이밍을 실현하기 위해 엔트리의 정확성을 향상시킵니다. 여러 지표의 사용으로 인해 물려받은 이점에도 불구하고 트렌딩 시장의 비효율성과 최적화에 어려움을 포함한 결함이 남아 있습니다. 트렌드 도구를 추가하고 지표 수를 줄이고 매개 변수 최적화와 같은 방법은 전략의 견고함을 더욱 향상시키는 데 도움이 될 수 있습니다.


/*backtest
start: 2022-12-26 00:00:00
end: 2024-01-01 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy(title = "Noro's Symphony v1.0", shorttitle = "Symphony 1.0", overlay = false, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 20)

//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 = "Lot, %")
usersi1 = input(true, defval = true, title = "Use RSI 1")
rsiperiod1 = input(4, defval = 4, minval = 2, maxval = 100, title = "RSI 1 Period")
rsilimit1 = input(15, defval = 15, minval = 2, maxval = 50, title = "RSI 1 Limit")
usersi2 = input(true, defval = true, title = "Use RSI 2")
rsiperiod2 = input(7, defval = 7, minval = 2, maxval = 100, title = "RSI 2 Period")
rsilimit2 = input(20, defval = 20, minval = 2, maxval = 50, title = "RSI 2 Limit")
usersi3 = input(true, defval = true, title = "Use RSI 3")
rsiperiod3 = input(14, defval = 14, minval = 2, maxval = 100, title = "RSI 3 Period")
rsilimit3 = input(25, defval = 25, minval = 2, maxval = 50, title = "RSI 3 Limit")
usersi4 = input(true, defval = true, title = "Use RSI 4")
rsiperiod4 = input(21, defval = 21, minval = 2, maxval = 100, title = "RSI 4 Period")
rsilimit4 = input(30, defval = 30, minval = 2, maxval = 50, title = "RSI 4 Limit")
usersi5 = input(true, defval = true, title = "Use RSI 5")
rsiperiod5 = input(28, defval = 28, minval = 2, maxval = 100, title = "RSI 5 Period")
rsilimit5 = input(35, defval = 35, minval = 2, maxval = 50, title = "RSI 5 Limit")
cf = input(false, defval = false, title = "Use color filter")
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")

//RSI
rsi1 = rsi(close, rsiperiod1)
rsi2 = rsi(close, rsiperiod2)
rsi3 = rsi(close, rsiperiod3)
rsi4 = rsi(close, rsiperiod4)
rsi5 = rsi(close, rsiperiod5)

//Signals
up1 = rsi1 < rsilimit1 and usersi1  
up2 = rsi2 < rsilimit2 and usersi2
up3 = rsi3 < rsilimit3 and usersi3
up4 = rsi4 < rsilimit4 and usersi4
up5 = rsi5 < rsilimit5 and usersi5

up = up1 or up2 or up3 or up4 or up5
exit = rsi1 > rsilimit1 and rsi2 > rsilimit2 and rsi3 > rsilimit3 and rsi4 > rsilimit4 and rsi5 > rsilimit5
lot = strategy.position_size == 0 ? strategy.equity / close * capital / 100 : lot[1]

//Background
col = up ? lime : na
bgcolor(col, transp = 0)

//Trading
if up and (close < open or cf == false)
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot)
 
if  exit
    strategy.close_all()

더 많은