java.lang.Object
io.runon.trading.technical.analysis.indicators.Rsi

public class Rsi extends Object
RSI는 일정 기간 동안 주가가 전일 가격에 비해 상승한 변화량과 하락한 변화량의 평균값을 구하여, 상승한 변화량이 크면 과매수로, 하락한 변화량이 크면 과매도로 판단하는 방식이다. 계산 방법은 다음과 같다. 주어진 기간의 모든 날의 주가에 대해서 가격이 전일 가격보다 상승한 날의 상승분은 U(up) 값이라고 하고, 가격이 전일 가격보다 하락한 날의 하락분은 D(down) 값이라고 한다. U값과 D값의 평균값을 구하여 그것을 각각 AU(average ups)와 AD(average downs)라 한다. AU를 AD값으로 나눈 것을 RS(relative strength) 값이라고 한다. RS 값이 크다는 것은 일정 기간 하락한 폭보다 상승한 폭이 크다는 것을 의미한다. 다음 계산에 의하여 RSI 값을 구한다. RSI 계산 공식 : RSI = RS / (1 + RS) 또는, 다음과 같이 구해도 결과는 동일하다. RSI = AU / (AU + AD) 대체로 이 값은 백분율로 나타낸다. 이 지표의 파라메터로는 기간을 며칠 동안으로 할 것인가가 있다. Welles Wilder는 14일을 사용할 것을 권유했다. 대체로 사용되는 값은 9일, 14~15일, 25~28일 등이다. RSI 그래프는 이동평균선을 함께 나타내는 것이 보통이며, 이동평균선을 며칠선으로 할 것인가 역시 파라메터로 주어진다. RSI를 15일에 대하여 구하고 5일 이동평균선을 함께 표시하는 경우 그래프에 (15, 5)라고 표시해주는 것이 일반적이다. 유사한 지표로는 스토캐스틱이 있다. RSI 그래프의 형태는 fast stochastic 과 비슷하게 나온다. 참고자료 -ko.wikipedia.org/wiki/RSI_(%ED%88%AC%EC%9E%90%EC%A7%80%ED%91%9C) U = 전날 가격보다 오늘 상승할때의 상승폭 (up) D = 전달 가격보다 오늘 하락할때의 하락폭 (down) AU = 일정기간 (N) U의 평균값 AD = 일정기간 (N) D의 평균값 RS = AU / AD RSI = RS / (1 + RS) = AU / (AU + AD) RSI 시그널 = RSI 이동평균선 기본적으로 6일을 사용 매매전략 70% 이상이면 과매수 30% 이하이면 과매도 RSI 시그널이 상향돌파하면 단기적 매수세가 늘어나는 추세 RSI 시그널이 하향돌파하면 단기적 매도세가 늘어나느 추세 단기 투자방법 RSI 가 70% 초과하고 RSI 시그널이 하향돌파 (데드크로스) 할 경우 매도 RSI 가 30% 밑들고 RSI 시크널이 상향돌파(골든크로스) 할 경우 매수 장기 주가가 장기적인 상승추세일 때에는 70%를 초과하는 경우가 많으므로 50% 아래로 가면 매수 주가가 장기적인 하락추세일때는 50%를 밑도는 경우가 많으므로 50%를 초과할 때 매수 참고자료 - md2biz.tistory.com/400 rsi score 를 먼저 메소드화 하고 장 단기 추세에 관련해서는 추세와 연동한다 (trend line)
Author:
macle
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final int
     
    static final int
     
  • Constructor Summary

    Constructors
    Constructor
    Description
    Rsi()
     
  • Method Summary

    Modifier and Type
    Method
    Description
    static BigDecimal
    get(int upCount, int downCount, BigDecimal upSum, BigDecimal downSum)
     
    static BigDecimal
    get(io.runon.trading.PriceChangeRate[] priceChangeRates)
    rsi 점수 얻기 특정기간 n은 14일을 권장하므로 기본값 14를 세팅한 값 9, 25도 많이 사용함
    static BigDecimal
    get(io.runon.trading.PriceChangeRate[] priceChangeRates, int n, int end)
    rsi 점수 얻기 구할 수 없을때 -1.0
    static BigDecimal
    get(BigDecimal[] priceChangeRates)
    rsi 점수 얻기 특정기간 n은 14일을 권장하므로 기본값 14를 세팅한 값 9, 25도 많이 사용함
    static BigDecimal
    get(BigDecimal[] priceChangeRates, int n, int end)
    rsi 점수 얻기 구할 수 없을때 -1.0
    static BigDecimal[]
    getArray(io.runon.trading.PriceChangeRate[] array, int resultLength)
     
    static BigDecimal[]
    getArray(io.runon.trading.PriceChangeRate[] array, int n, int resultLength)
    최신 데이터 기준으로 rsi 배열읃 얻는다.
    static BigDecimal[]
    getArray(io.runon.trading.PriceChangeRate[] array, int n, int startIndex, int end)
     
    static BigDecimal[]
    getArray(BigDecimal[] array, int resultLength)
    최신 데이터 기준으로 rsi 배열읃 얻는다.
    static BigDecimal[]
    getArray(BigDecimal[] array, int n, int resultLength)
    최신 데이터 기준으로 rsi 배열읃 얻는다.
    static BigDecimal[]
    getArray(BigDecimal[] array, int n, int startIndex, int end)
     
    static BigDecimal[]
    getSignal(BigDecimal[] rsiArray)
    rsi signal 이평선 보통 6일을 많이 사용함
    static BigDecimal[]
    getSignal(BigDecimal[] rsiArray, int n, int signalCount)
    rsi signal 이평선 보통 6일을 많이 사용함
    static io.runon.trading.TimeNumber[]
    getTimeNumbers(CandleStick[] array, int n, int resultLength)
    최신 데이터 기준으로 rsi 배열읃 얻는다.
    static io.runon.trading.TimeNumber[]
    getTimeNumbers(CandleStick[] array, int n, int startIndex, int end)
     

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

  • Constructor Details

    • Rsi

      public Rsi()
  • Method Details

    • get

      public static BigDecimal get(io.runon.trading.PriceChangeRate[] priceChangeRates)
      rsi 점수 얻기 특정기간 n은 14일을 권장하므로 기본값 14를 세팅한 값 9, 25도 많이 사용함
      Parameters:
      priceChangeRates - 가격 변화율 배열
      Returns:
      rsi score (0~100)
    • get

      public static BigDecimal get(BigDecimal[] priceChangeRates)
      rsi 점수 얻기 특정기간 n은 14일을 권장하므로 기본값 14를 세팅한 값 9, 25도 많이 사용함
      Parameters:
      priceChangeRates - 가격 변화율 배열
      Returns:
      rsi score (0~100)
    • get

      public static BigDecimal get(BigDecimal[] priceChangeRates, int n, int end)
      rsi 점수 얻기 구할 수 없을때 -1.0
      Parameters:
      priceChangeRates - 가격 변화율 배열
      n - 특정기간 n
      end - 배열의 끝지점
      Returns:
      rsi score ( 0~100)
    • get

      public static BigDecimal get(io.runon.trading.PriceChangeRate[] priceChangeRates, int n, int end)
      rsi 점수 얻기 구할 수 없을때 -1.0
      Parameters:
      priceChangeRates - 가격 변화율 배열
      n - 특정기간 n
      end - 배열의 끝지점
      Returns:
      rsi score ( 0~100)
    • get

      public static BigDecimal get(int upCount, int downCount, BigDecimal upSum, BigDecimal downSum)
    • getArray

      public static BigDecimal[] getArray(BigDecimal[] array, int resultLength)
      최신 데이터 기준으로 rsi 배열읃 얻는다.
      Parameters:
      array - 가격 변화율 배열
      resultLength - 얻고 싶은 rsi 개수
      Returns:
      rsi 배열
    • getArray

      public static BigDecimal[] getArray(BigDecimal[] array, int n, int resultLength)
      최신 데이터 기준으로 rsi 배열읃 얻는다.
      Parameters:
      array - 가격 변화율 배열
      n - 특정기간
      resultLength - 얻고 싶은 rsi 개수
      Returns:
      rsi 배열
    • getArray

      public static BigDecimal[] getArray(BigDecimal[] array, int n, int startIndex, int end)
    • getArray

      public static BigDecimal[] getArray(io.runon.trading.PriceChangeRate[] array, int resultLength)
    • getArray

      public static BigDecimal[] getArray(io.runon.trading.PriceChangeRate[] array, int n, int resultLength)
      최신 데이터 기준으로 rsi 배열읃 얻는다.
      Parameters:
      array - 가격 변화율 배열
      n - 특정기간
      resultLength - 얻고 싶은 rsi 개수
      Returns:
      rsi 배열
    • getArray

      public static BigDecimal[] getArray(io.runon.trading.PriceChangeRate[] array, int n, int startIndex, int end)
    • getTimeNumbers

      public static io.runon.trading.TimeNumber[] getTimeNumbers(CandleStick[] array, int n, int resultLength)
      최신 데이터 기준으로 rsi 배열읃 얻는다.
      Parameters:
      array - 가격 변화율 배열
      n - 특정기간
      resultLength - 얻고 싶은 rsi 개수
      Returns:
      rsi 배열
    • getTimeNumbers

      public static io.runon.trading.TimeNumber[] getTimeNumbers(CandleStick[] array, int n, int startIndex, int end)
    • getSignal

      public static BigDecimal[] getSignal(BigDecimal[] rsiArray)
      rsi signal 이평선 보통 6일을 많이 사용함
      Parameters:
      rsiArray - rsi 배열
      Returns:
      rsi signal 배열
    • getSignal

      public static BigDecimal[] getSignal(BigDecimal[] rsiArray, int n, int signalCount)
      rsi signal 이평선 보통 6일을 많이 사용함
      Parameters:
      rsiArray - rsi 배열
      n - 특정기간 ( 몇일로 평균을 만들건지) 보통 6일을 많이 사용함
      signalCount - 얻고 싶은 signal 개수
      Returns:
      rsi signal 배열