
什么是MACD指标?
MACD指标全称为Moving Average Convergence Divergence,是股票市场中常用的一种技术指标。它由两条线组成:快速线(DIF)和慢速线(DEA),以及一条柱状线组成的MACD。通过计算短期(12日)和长期(26日)指数移动平均线之间的差异,以及两条移动平均线的差异的指数移动平均线,MACD指标可以帮助我们判断股票价格的趋势以及买卖的时机。
MACD指标的背离问题
尽管MACD指标被广泛应用于研究市场走势,但它并非没有缺陷。在实际应用中,我们常常遇到背离问题,即指标与实际价格趋势相背离。例如,当指标形成新低而价格却形成新高时,我们就遇到了背离。这使得我们在使用MACD指标进行交易时可能产生错误的判断。
徐翔改良的MACD指标
徐翔改良的MACD指标是基于MACD指标的背离问题提出的一种改进方法。徐翔在原有的MACD指标基础上,引入了关键的五个构件:市场波动、先验背景、历史参照、波段判断和趋势发展。通过对这些构件进行综合评判和对比分析,徐翔改良的MACD指标可以更准确地捕捉市场的变化趋势,并避免了背离问题的干扰。
改良MACD指标源码示例
下面是一个简单示例的改良MACD指标源码:
#define BIAS_PERIOD 8
vector calcBIAS(const vector& prices)
{
vector bias(prices.size(), 0.0);
for (int i = BIAS_PERIOD; i < prices.size(); ++i) {
double sum = 0.0;
for (int j = 0; j < BIAS_PERIOD; ++j) {
sum += prices[i - j];
}
double ave = sum / BIAS_PERIOD;
bias[i] = (prices[i] - ave) / ave * 100;
}
return bias;
}
vector calcMACD(const vector& prices, int shortPeriod, int longPeriod, int signalPeriod)
{
vector macd(prices.size(), 0.0);
vector shortEMA = calcEMA(prices, shortPeriod);
vector longEMA = calcEMA(prices, longPeriod);
for (int i = longPeriod; i < prices.size(); ++i) {
macd[i] = shortEMA[i] - longEMA[i];
}
vector signal = calcEMA(macd, signalPeriod);
for (int i = longPeriod + signalPeriod; i < prices.size(); ++i) {
macd[i] = macd[i] - signal[i];
}
return macd;
}
void checkDivergence(const vector& prices)
{
vector bias = calcBIAS(prices);
vector macd = calcMACD(prices, 12, 26, 9);
for (int i = 1; i < prices.size() - 1; ++i) {
if ((macd[i - 1] 0 && prices[i-1] 0 && macd[i] prices[i])) {
cout << \"Divergence detected at index \" << i << endl;
cout << \"Price: \" << prices[i - 1] << \" vs \" << prices[i] << endl;
cout << \"MACD: \" << macd[i - 1] << \" vs \" << macd[i] << endl;
}
if ((bias[i - 1] 0 && prices[i-1] 0 && bias[i] prices[i])) {
cout << \"Divergence detected at index \" << i << endl;
cout << \"Price: \" << prices[i - 1] << \" vs \" << prices[i] << endl;
cout << \"BIAS: \" << bias[i - 1] << \" vs \" << bias[i] << endl;
}
}
}
int main()
{
vector prices = {10, 12, 15, 18, 16, 14, 12, 10, 11, 14, 16};
checkDivergence(prices);
return 0;
}
这是一个使用C++语言编写的示例源码,用于检测给定价格序列中的MACD和BIAS的背离情况。通过计算MACD和BIAS指标,然后根据其正负变化判断是否存在背离。在检测到背离时,该程序会输出相应的信息,例如出现背离的索引、价格以及指标值。
结论
徐翔改良的MACD指标源码示例提供了一个更能准确反映市场变化趋势的技术指标。通过引入新的构件和综合评判,该指标能够避免原有MACD指标的背离问题,并帮助交易者更好地判断买入和卖出的时机。当然,这只是一个简单的示例,实际应用中的改良MACD指标可能更加复杂且具有更高的准确性。