RSI的c#计算,同花顺

发布时间:2024年01月18日

同花顺的RSI是移动平滑计算,折腾我半天了。为了算当前值,一定要把前面的值记下来。真麻烦??

? ? ? ? ///LC := REF(CLOSE,1);
? ? ? ? /// 当日上涨平均数 = 前一日涨幅平均数*5/6 + 当日涨幅/6 (若某日下跌时,则当日涨幅记为0)
? ? ? ? /// RSI$1:SMA(MAX(CLOSE-LC,0),N1,1)/SMA(ABS(CLOSE-LC),N1,1)*100;?

public static double CalculateRSI(List<StockData> stockDataList, int period = 6)
? ? ? ? {
? ? ? ? ? ? if (stockDataList == null || stockDataList.Count < period)
? ? ? ? ? ? ? ? throw new ArgumentException("Not enough data points to calculate RSI.");
?
? ? ? ? ? ? int 前面的时间段 = period - 1;
? ? ? ? ? ? StockData 今天的 = stockDataList[stockDataList.Count - 1];
? ? ? ? ? ? StockData 前一天的 = stockDataList[stockDataList.Count - 2];
? ? ? ? ? ? double 今天的涨 = Math.Round(Math.Max(0, 今天的.Close - 今天的.Pre_Close), 2);
? ? ? ? ? ? double 今天的滑动涨 = 今天的.SMAMAX=(前一天的.SMAMAX * 前面的时间段 + 今天的涨)/ period;

? ? ? ? ? ? double 今天的幅度 = Math.Round(Math.Abs(今天的.Close - 今天的.Pre_Close), 2);//不管涨跌
? ? ? ? ? ? double 今天的滑动幅度 = 今天的.SMAABS=(前一天的.SMAABS * 前面的时间段 + 今天的幅度) / period;
? ? ? ? ? ? // 计算 RSI
? ? ? ? ? ? double rsi =100*今天的滑动涨/ 今天的滑动幅度;
? ? ? ? ? ? return rsi;
? ? ? ? }

文章来源:https://blog.csdn.net/shankaipingo/article/details/135671894
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。