c# RSI算法实现

此算法在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天后的数据才是正常的。

 

ExpandedBlockStart.gif 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 效果:

同花顺效果:

最后一个数据对不上因为在交易时间,截图时候有时间差

转载于:https://www.cnblogs.com/longyue/archive/2011/11/11/2245345.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值