c# RSI演算法實現

來源:互聯網
上載者:User

此演算法在WP7 個人炒股軟體 GilStock 中用到

同花順演算法描述:

LC := REF(CLOSE,1);
RSI$1:SMA(MAX(CLOSE-LC,0),N1,1)/SMA(ABS(CLOSE-LC),N1,1)*100;
RSI$2:SMA(MAX(CLOSE-LC,0),N2,1)/SMA(ABS(CLOSE-LC),N2,1)*100;
RSI$3:SMA(MAX(CLOSE-LC,0),N3,1)/SMA(ABS(CLOSE-LC),N3,1)*100; 
a:20;
d:80;

 

c#實現,理論區間內和新股上市的R1,R2,R3分別在N1,N2,N3天后的資料才是正常的。

 

View Code  /// <summary>
        /// RSI演算法 --跟同花順一致
        /// </summary>
        /// <param name="N">6</param>
        /// <param name="M1">12</param>
        /// <param name="M2">24</param>
        /// <param name="KLStocklist">K線資料</param>
        /// <returns></returns>
        public static List<KLinfo> ComputationRSI(int N1, int N2, int N3, List<KLinfo> KLStocklist)
        {
            for (int i = 0; i < KLStocklist.Count; i++)
            {
                
                double RSI1 = 0;
                double RSI2 = 0;
                double RSI3 = 0;
                if (KLStocklist[i].KID == 1)
                {

                    
                    KLStocklist[i].RSI1 = 0;
                    KLStocklist[i].RSI2 = 0;
                    KLStocklist[i].RSI3 = 0;
                    KLStocklist[i].RSI1ABSEma =0;
                    KLStocklist[i].RSI1ABSEma = 0;
                    KLStocklist[i].RSI2ABSEma = 0;
                    KLStocklist[i].RSI2ABSEma = 0;
                    KLStocklist[i].RSI3ABSEma = 0;
                    KLStocklist[i].RSI3ABSEma = 0;
                }
                else
                {
                    double Rmax = Math.Max(0, KLStocklist[i].ClosePrice - KLStocklist[i - 1].ClosePrice);
                    double RAbs = Math.Abs(KLStocklist[i].ClosePrice - KLStocklist[i - 1].ClosePrice);
                    KLStocklist[i].RSI1MaxEma = (Rmax + (N1 - 1) * KLStocklist[i - 1].RSI1MaxEma) / N1;
                    KLStocklist[i].RSI1ABSEma = (RAbs + (N1 - 1) * KLStocklist[i - 1].RSI1ABSEma) / N1;

                    KLStocklist[i].RSI2MaxEma = (Rmax + (N2 - 1) * KLStocklist[i - 1].RSI2MaxEma) / N2;
                    KLStocklist[i].RSI2ABSEma = (RAbs + (N2 - 1) * KLStocklist[i - 1].RSI2ABSEma) / N2;

                    KLStocklist[i].RSI3MaxEma = (Rmax + (N3 - 1) * KLStocklist[i - 1].RSI3MaxEma) / N3;
                    KLStocklist[i].RSI3ABSEma = (RAbs + (N3 - 1) * KLStocklist[i - 1].RSI3ABSEma) / N3;

                    if (KLStocklist[i].RSI1ABSEma != 0) RSI1 = (KLStocklist[i].RSI1MaxEma / KLStocklist[i].RSI1ABSEma) * 100; 
                    KLStocklist[i].RSI1 = RSI1;

                    if (KLStocklist[i].RSI2ABSEma != 0) RSI2 = (KLStocklist[i].RSI2MaxEma / KLStocklist[i].RSI2ABSEma) * 100;
                    KLStocklist[i].RSI2 = RSI2;

                    if (KLStocklist[i].RSI3ABSEma != 0) RSI3 = (KLStocklist[i].RSI3MaxEma / KLStocklist[i].RSI3ABSEma) * 100;
                    KLStocklist[i].RSI3 = RSI3;
                   
                }

                
          
            }

            return KLStocklist;

        
        }

WP7 效果:

同花順效果:

最後一個資料對不上因為在交易時間,時候有時間差

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.