徐翔改良的MAcD指标源码(改进MACD背离指标源码)

徐翔改良的MAcD指标源码(改进MACD背离指标源码)

什么是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指标可能更加复杂且具有更高的准确性。

相关推荐

  • 暂无文章