MACD(Moving Average Convergence/Divergence)是一种趋势跟踪类指标。它由三部分组成:DIF、DEA和MACD柱。
DIF的计算公式如下:
DIF = EMA(12) - EMA(26)
其中,EMA(12)是12日指数移动平均值,EMA(26)是26日指数移动平均值。
DEA的计算公式如下:
DEA = (DIF1 + DIF2 + DIF3 + … + DIFn) / M
其中,DIF1、DIF2、DIF3、…、DIFn是过去M天的DIF值,M是计算DEA值所需的数据天数。
MACD柱的计算公式如下:
MACD柱 = DIF - DEA
要计算MACD指标,需要先获取收盘价,然后根据公式计算DIF、DEA和MACD柱。
下面是使用Qt和C++计算MACD指标的示例代码:
#include <QVector>
double getEMA(int N)
{
// 获取最近N天的收盘价
QVector<double> closes = getCloses(N);
// 归一化收盘价
for (int i = 0; i < closes.size(); i++)
{
closes[i] /= 100.0;
}
// 计算EMA
double sum = 0;
for (int i = 0; i < N; i++)
{
sum += closes[i];
}
double EMA = sum / N;
for (int i = N - 1; i >= 0; i--)
{
EMA = (closes[i] * 2 + (N - 1) * EMA) / (N + 1);
}
// 还原收盘价
EMA *= 100.0;
return EMA;
}
double getDIF()
{
// 计算DIF
double EMA12 = getEMA(12);
double EMA26 = getEMA(26);
return EMA12 - EMA26;
}
double getDEA(int M)
{
// 获取过去M天的DIF值
QVector<double> DIFs = getDIFs(M);
// 计算DEA
double sum = 0;
for (int i = 0; i < M; i++)
{
sum += DIFs[i];
}
double DEA = sum / M;
for (int i = M; i < DIFs.size(); i++)
{
DEA = (DIFs[i] * 2 + (M - 1) * DEA) / (M + 1);
}
return DEA;
}
double getMACD()
{
// 获取当日的DIF值和DEA值
double DIF = getDIF();
double DEA = getDEA();
// 计算MACD柱
return DIF - DEA;
}
在上面的代码中,getCloses(N)
函数用于获取最近N天的收盘价,getDIFs(M)
函数用于获取过去M天的DIF值。 注意:上面的代码仅供参考,实际应用中可能需要根据需要进行修改。 希望上面的示例代码能够帮助你实现计算MACD指标的功能。
python如何在游戏界面进行文本输入和编辑
python如何给声音增加回声效果
Python如何遍历查看所有系统可用字体
Python如何调用pygame库来启动摄像头捕获图像并显示
python编写一段会跳动的文字
c#程序与USB HID设备进行通信
Python如何把sqlite完全加载到内存中操作
streamlit如何布局
Python的faker库,测试工作者的福音
Python程序如何进行性能分析
Python 如何使用dask库来并行化Pandas DataFrame
Python如何用Numba加速科学计算和数据分析
python 如何把多个列表合成一个
如何反汇编和分析Python字节码,了解代码的执行过程
python kaleido 库
Python如何把一个列表按照一定数量均匀的切片
python 非常好用的标准库itertools
Python pygame库开发的射击小游戏(二娃大战外星人)完整示例.
Python如何从新浪财经爬去分价表数据
如何将一个Sqlite数据库Db中的所有表快速拆分到多个db文件中