- 金币:
-
- 奖励:
-
- 热心:
-
- 注册时间:
- 2010-11-12
|
|
请教高手:一个关于MACD的C程序
来自:MACD论坛(bbs.shudaoyoufang.com)
作者:weiqiok
浏览:32206
回复:11
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
#include <conio.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#define STOCK_SHORT 12
#define STOCK_LONG 26
#define STOCK_MID 9
void main( void)
{
int i, j, k ;
float EMA12[ STOCK_MID], EMA26[ STOCK_MID] ;
float DEA, DIFF, MACD ;
float ClosePrice[ 35] = { 17.22, 17.20, 17.09, 17.18, 16.92, 16.63, 16.65, 16.70, 16.61, 16.69,
16.26, 16.22, 17.22, 18.04, 17.97, 18.54, 18.34, 19.15, 19.17, 19.55,
19.47, 18.85, 18.52, 18.91, 18.66, 18.56, 18.77, 18.41, 18.57, 18.66,
19.05, 18.92, 18.93, 19.14, 18.65} ;
for( j = 0 ; j < STOCK_MID ; j ++)
{
k = STOCK_MID - 1 - j ;
EMA12[ k] = 0 ;
for( i = 35 - STOCK_SHORT - j ; i < 35 - j ; i ++)
EMA12[ k] += ( i - 35 + STOCK_SHORT + j + 1) * ClosePrice[ i] ;
EMA12[ k] *= 2 ;
EMA12[ k] /= STOCK_SHORT ;
EMA12[ k] /= STOCK_SHORT + 1 ;
EMA26[ k] = 0 ;
for( i = 35 - STOCK_LONG - j ; i < 35 - j ; i ++)
EMA26[ k] += ( i - 35 + STOCK_LONG + j + 1) * ClosePrice[ i] ;
EMA26[ k] *= 2 ;
EMA26[ k] /= STOCK_LONG ;
EMA26[ k] /= STOCK_LONG + 1 ;
}
for( j = 0 ; j < STOCK_MID ; j ++)
DEA += ( j + 1) * ( EMA12[ j] - EMA26[ j]) ;
DEA *= 2 ;
DEA /= STOCK_MID ;
DEA /= STOCK_MID + 1 ;
DIFF = EMA12[ STOCK_MID - 1] - EMA26[ STOCK_MID - 1] ;
MACD = DIFF - DEA ;
return ;
}
以上是我希望根据深发展2010.10.09的数据求出MACD的程序,根据上述程序,我得出:
EMA12 = 18.81 // 12日的 EMA
EMA26 = 18.74 // 26日的 EMA
DIFF = 0.0693 // 2010.10.09 的 DIFF
DEA = 0.1642 // 9日 DIFF 的 EMA
MACD = -0.0949 // MACD
由于很多资料没有关于MACD的算法,而且 SHORT、LONG和MID取的值好像不一样,我不知道我这样的计算是不是正确。
请指正!
[ 本帖最后由 weiqiok 于 2010-11-13 07:05 编辑 ] |
|
|