通达信CCI RSI KDJ多指标共振与C++源代码详解
创作时间:
作者:
@小白创作中心
通达信CCI RSI KDJ多指标共振与C++源代码详解
引用
1
来源
1.
http://www.360doc.com/content/25/0219/03/17132703_1147091321.shtml
本文将分享一段通达信软件中CCI、RSI、KDJ多指标共振的源代码。这些技术指标主要用于判断股票市场的买卖时机和底部信号。文章将详细解释这些指标的原理和计算方法,并提供具体的C++代码实现。
技术指标详解
通道线(CCI)
通道线(Commodity Channel Index,CCI)主要用于衡量价格与平均价格之间的偏离程度,帮助投资者识别市场趋势。其计算公式为:
CCI = (TYP - MA(TYP, M)) / (0.015 * AVEDEV(TYP, M))
其中,TYP是典型价格((最高价+最低价+收盘价)/3),MA是移动平均值,AVEDEV是平均偏差。
相对强弱指标(RSI)
相对强弱指标(Relative Strength Index,RSI)用于衡量市场强弱,其计算公式为:
RSI = (RSI1 - 50) * 5.3
其中,RSI1是通过比较一段时间内的平均涨跌幅度计算得出的。
随机指标(KDJ)
随机指标(Stochastic Oscillator,KDJ)通过计算一段时间内的最高价、最低价和收盘价来判断市场买卖信号。其计算公式为:
RSV = (CLOSE - LLV(LOW, N)) / (HHV(HIGH, N) - LLV(LOW, N)) * 100
K = SMA(RSV, 3, 1)
D = SMA(K, 3, 1)
J = 3 * K - 2 * D
指数平滑移动平均(EMA)
指数平滑移动平均(Exponential Moving Average,EMA)是对价格进行指数加权平滑处理,更看重近期的数据。其计算公式为:
EMA = alpha * data[i] + (1 - alpha) * EMA[i - 1]
其中,alpha是平滑系数。
加权移动平均(SMA)
加权移动平均(Simple Moving Average,SMA)是对价格进行加权平均处理,把价格波动给平滑了。其计算公式为:
SMA = sum(data) / period
判断底部的算法逻辑
这段代码通过多种条件组合来判断底部信号:
- 超卖判断:
- 当RSI值低于某个阈值(比如-100),可能说明市场超卖了。
- 当K值和J2值低于某个阈值(比如-100),也可能说明市场到底部了。
- 趋势反转判断:
- 用RR(即RR1 > RR2)判断当前趋势是不是向上反转了。
- 再结合CB1(指数平滑处理后的指标),看看是不是低于-100,进一步确认是不是底部。
- 共振条件:
- 通过SSTT1、SSTT2、SSTT3这些条件组合,当多个指标同时满足超卖且趋势反转时,就标记为底部信号。
源代码实现
以下是具体的C++代码实现:
#include <iostream>
#include <vector>
#include <cmath>
#include <algorithm>
#include <numeric>
using namespace std;
// 计算简单移动平均线
double SMA(const vector<double>& data, int period) {
vector<double> sma(data.size() - period + 1, 0.0);
for (size_t i = period - 1; i < data.size(); ++i) {
double sum = 0.0;
for (int j = 0; j < period; ++j) {
sum += data[i - j];
}
sma[i - period + 1] = sum / period;
}
return sma.back();
}
// 计算指数移动平均线
double EMA(const vector<double>& data, int period) {
vector<double> ema(data.size(), 0.0);
ema[0] = data[0];
double alpha = 2.0 / (period + 1);
for (size_t i = 1; i < data.size(); ++i) {
ema[i] = alpha * data[i] + (1 - alpha) * ema[i - 1];
}
return ema.back();
}
// 计算平均偏差
double AVEDEV(const vector<double>& data, int period) {
vector<double> avgdev(data.size() - period + 1, 0.0);
for (size_t i = period - 1; i < data.size(); ++i) {
double sum = 0.0;
double mean = SMA(vector<double>(data.begin() + i - period + 1, data.begin() + i + 1), period);
for (int j = 0; j < period; ++j) {
sum += abs(data[i - j] - mean);
}
avgdev[i - period + 1] = sum / period;
}
return avgdev.back();
}
// 计算RSI指标
double RSI(const vector<double>& close, int period) {
vector<double> gains, losses;
for (size_t i = 1; i < close.size(); ++i) {
double change = close[i] - close[i - 1];
if (change > 0) {
gains.push_back(change);
losses.push_back(0);
} else {
gains.push_back(0);
losses.push_back(abs(change));
}
}
double avg_gain = SMA(gains, period);
double avg_loss = SMA(losses, period);
return avg_gain / avg_loss * 100;
}
风险提示
本指标仅供技术研究与学习交流使用。资本市场具有高度不确定性,任何基于本指标的投资决策都需要自行承担风险,不构成任何投资建议。
热门推荐
如何让你的宠物狗狗感到安全(探索狗狗内心世界)
中医治疗便秘的心理调节法:王悦和陈沛教你告别便秘烦恼
中医治疗便秘有良方
北师大教授边玉芳:培养心理韧性,打造高情绪价值家庭
提升婚姻情绪价值,让爱情保鲜
情绪管理:打造温馨家庭氛围的关键
提升情绪价值:夫妻高效沟通的七个实用技巧
上海女童走丢事件引发关注,中国儿童防走失平台助力儿童安全
双十一和气生财:商家如何实现销售与口碑双赢?
公园遛娃防走丢攻略:这些安全要点请收好
从《她是我最好的朋友》看儿童心理疏导:一个温暖的启示
从上海女童走失事件看儿童安全:家长必修的防护指南
4岁女童海滩走失悲剧:谁该为这场意外负责?
北京中医研究所李博教你告别便秘烦恼
香蕉食疗便秘,你get了吗?
中医调理便秘有妙招:辨证施治+生活调理双管齐下
阿达德神:古两河流域的正义之神
道教养生,尊生贵生的秘密
道教起源揭秘:从老子到张角
揭秘“云篆天书”:道教符号的艺术魅力
道教起源揭秘:从老子到张道陵
个人信息泄露?教你应对邮箱验证码轰炸
Verification Code
邮箱安全保卫战:验证码的正确姿势
Gmail+临时邮箱:验证码接收新姿势
双减后,如何在家教中传递情绪价值?
彭凯平教授揭秘情绪价值:不是单向给予,而是共同创造
杨绛教你提升情绪价值,幸福感爆棚!
职场情绪价值:如何正确理解和应用?
甩掉包袱的八个秘诀——如何让你的演讲幽默有趣