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的值,判断股票的趋势变化,并累加对应 的上涨和下跌的股票数。 这段代码的返回值是一个数组,其中包含了本周期上涨的股票数、本 周期下跌的股票数、上一周期上涨的股票数和上一周期下跌的股票数。 希望以上代码能对您有所帮助。


发布评论