1. 概念与核心逻辑 RSI(Relative Strength Index)用于衡量价格变动的速度和变化量,判断市场的超买(价格过高)或超卖(价格过低)状态。它是一个 0 到 100 之间的指标,反映市场在一段时间内是“过热”还是“过冷”。核心交易逻辑为:
2. 计算公式 RSI计算基于N周期(默认周期 N = 14,也可以自定义)内价格涨跌幅的平均值: ![]() RSI计算公式 3. Java代码示例 // 计算RSI public static double calculateRSI(List<StrategyDataDTO> strategyDataList, int period) { // 实现RSI计算逻辑 double avgGain = 0; double avgLoss = 0; // 计算初始14日平均涨跌幅 for (int i = 1; i <= period; i++) { double change = strategyDataList.get(i).getClosePrice().doubleValue() - strategyDataList.get(i-1).getClosePrice().doubleValue(); if (change > 0) avgGain += change; else avgLoss += Math.abs(change); } avgGain /= period; avgLoss /= period; // 计算后续RSI值(平滑处理), 因为从第15根开始有RSI值 for (int i = period + 1; i < strategyDataList.size(); i++) { double change = strategyDataList.get(i).getClosePrice().doubleValue() - strategyDataList.get(i-1).getClosePrice().doubleValue(); avgGain = (avgGain * (period - 1) + (change > 0 ? change : 0)) / period; avgLoss = (avgLoss * (period - 1) + (change < 0 ? Math.abs(change) : 0)) / period; } double rs = avgLoss == 0 ? 100 : avgGain / avgLoss; double rsi = 100 - (100 / (1 + rs)); return rsi; } // 生成交易信号 public String generateSignal(double rsi) { if (rsi >= 70) return 'SELL'; if (rsi <= 30) return 'BUY'; return 'HOLD'; } 4. 策略优缺点分析
5. 数据采集周期与K线级别
6、适合的期货合约品种
7、实盘数据测试结果 ![]() RSI每日收益汇总 ![]() RSI合约参数与收益统计 RSI策略是目前实盘跑下来,数据最好的策略,实盘跑了一个多月,前期数据都很不错,基本都是处于盈利的状态,后面几天效果不理想,可能是因为我改动了k线级别的缘故,之前一直使用的是1日线,后面部分合约改成了小时线,分钟线,跑出来的效果不太理想,所以现在又改回日线了。 继续观察,优化... |
|