2014-03-25 4 views
1

RSI(Relative Strength Index)을 계산하려고합니다. 나는이일부 프로그래밍 언어 (JS/C# ..)를 사용하여 RSI (Relative Strength Index)를 계산하십시오.

**Date|Close|Change|Gain|Loss** 
같은 데이터가

이를 계산하는 공식은

RSI = 100 - 100/(1+RS) 
where RS = Average Gain/Average Loss 

Source

그래서 나도 JavaScript 또는 C# 일부 프로그래밍 언어를 통해 계산하려는 것입니다하지만 난 몰라 프로그래밍 언어로 변환하는 방법이나 필요한 단계가 무엇인지 정확하게 설명합니다.

내 문제를 더 이해하고 싶은 것이 있으면 설명하려고합니다.

답변

0

모든 언어로 쉽게 작성할 수있는 의사 코드로 작성합니다. 그것을 코딩 짧은 방법은 다음과 같습니다

v0 = 0 
v1 = 0 
v2 = 0 
v3 = 1/N      
v4 = 0 

if Step == 1: #initialisation 
    v0 = (Price[t] - Price[t-N])/N 
    v1 = mean(abs(diff(Price[(t-N):t])) # average price change over previous N 
else 
    v2 = Price[t] - Price[t-1] 
    v0 = vv[t-1] + v3 * (v2 - v0[t-1]) 
    v1 = v1[t-1] + v3 * (abs(v2) - v1[t-1]) 

if v1 != 0: 
    v4 = v0/v1 
else 
    v4 = 0 

RSI = 50 * (v4 + 1) 

이것은 아마 당신의 시뮬레이션에서 RSI을 적용하는 가장 효율적인 방법입니다. RSI를 공식을 번역하는

3

간단한 방법 :

public static double CalculateRsi(IEnumerable<double> closePrices) 
    { 
     var prices = closePrices as double[] ?? closePrices.ToArray(); 

     double sumGain = 0; 
     double sumLoss = 0; 
     for (int i = 1; i < prices.Length; i++) 
     { 
      var difference = prices[i] - prices[i - 1]; 
      if (difference >= 0) 
      { 
       sumGain += difference; 
      } 
      else 
      { 
       sumLoss -= difference; 
      } 
     } 

     if (sumGain == 0) return 0; 
     if (Math.Abs(sumLoss) < Tolerance) return 100; 

     var relativeStrength = sumGain/sumLoss; 

     return 100.0 - (100.0/(1 + relativeStrength)); 
    } 

다른 방법으로 RSI를 구현하는 프로젝트의 많음이있다. An incremental way can be found here