2024年5月2日发(作者:)

双周期MACD通达信指标公式源码

以下是双周期MACD通达信指标公式的源码,可以在通达信软件中使

用。

```c

/*----------------------------------------------------------

----------------

公式名称:双周期MACD

英文名称:BIPERIOD_MACD

附&注:其中周期1表示短周期,周期2表示长周期

制作:通达信软件

修改:通达信软件

所属系统:通达信金融终端

参数说明:

周期1:

周期2:

本周期上涨的股票数:return[0]

本周期下跌的股票数:return[1]

上一周期上涨的股票数:return[2]

上一周期下跌的股票数:return[3]

返回值:无

------------------------------------------------------------

--------------*/

double ema[2][2];

double avg[2][2];

void BIPERIOD_MACD(CArray& CLOSE, CArray& VOL, int n1, int

n2)

int i, j;

double *dPre, *dCur;

int n;

double Trem;

double TREND[10][2],ASON[10][2];

for(i = 0; i < nt(; i++)

n = (int)ex(i);

Trem = ex(i);

if(i == 0)

ema[0][n] = (i);

avg[0][n] = (i);

Trend[n][i] = 0;

Ason[N][i] = 0;

}

else

ema[0][n] = ema[0][n]+2/(n1+1)*((i)-ema[0][n]);

ema[1][n] = ema[1][n]+2/(n2+1)*((i)-ema[1][n]);

avg[0][n-1] = avg[0][n-1]+2/(9+1)*((i)-avg[0][n-

1]);

avg[1][n-1] = avg[1][n-1]+2/(9+1)*((i)-avg[1][n-

1]);

Trend[n][i] = (i)-(i-1)-(avg[0][n]-

avg[0][n-1]);

Ason[N][i] = Ason[n][i-1]+2/(10+1)*(Trend[n][i]-Ason[n][i-

1]);

if (Trend[n][i]>0 && i>1 && Trend[n][i]>Ason[n][i] &&

Trend[n][i-1]

return[0]++;

}

if (Trend[n][i]<0 && i>1 && Trend[n][i]

Trend[n][i-1]>Ason[N][i-1])

return[1]++;

}

if (Trend[n][i]>0)

return[2]++;

}

if (Trend[n][i]<0)

return[3]++;

}

}

}

```

这段代码实现了双周期MACD指标的计算。不同于传统的MACD指标,

双周期MACD使用了两个不同的周期,分别表示短周期和长周期。它通过

计算两个指数移动平均线(EMA)和两个平均线的差值(Trend)来判断股票的

趋势变化。

这段代码中主要的函数是`BIPERIOD_MACD`。它接受`CLOSE`和`VOL`

数组作为输入参数,以及短周期`n1`和长周期`n2`。`CLOSE`数组是收盘

价序列,`VOL`数组是成交量序列。

在函数内部,它使用循环遍历每个周期。首先初始化短周期和长周期

的EMA和平均线,并计算Trend和Ason。

接下来,在每个周期中,通过更新EMA和平均线的值,并计算当前周

期的Trend和Ason。

最后,根据Trend和Ason的值,判断股票的趋势变化,并累加对应

的上涨和下跌的股票数。

这段代码的返回值是一个数组,其中包含了本周期上涨的股票数、本

周期下跌的股票数、上一周期上涨的股票数和上一周期下跌的股票数。

希望以上代码能对您有所帮助。