请教高手:一个关于MACD的C程序
#include <conio.h>#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#defineSTOCK_SHORT 12
#defineSTOCK_LONG 26
#defineSTOCK_MID 9
voidmain( void)
{
inti, 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 编辑 ] 记得很久以前,“指南针”软件刚推出时,我也像你现在这样琢磨。久了,看透了,就不折腾了。把程式设计这套本事用在统计上,比用在技术指标上,效率要高多了。不过,后来微软和金山先后推出了 Offices 办公系统,用它们又比用 C 语音,效率要高多了! 原帖由 奔腾 于 2010-11-12 15:36 发表 http://bbs.macd.cn/static/image/common/back.gif
记得很久以前,“指南针”软件刚推出时,我也像你现在这样琢磨。久了,看透了,就不折腾了。把程式设计这套本事用在统计上,比用在技术指标上,效率要高多了。不过,后来微软和金山先后推出了 Offices 办公系统 ...
小弟愚钝,天天研究写公式统计,硬是没摸出门道 原帖由 如来伸掌 于 2010-11-12 15:43 发表
小弟愚钝,天天研究写公式统计,硬是没摸出门道
技术指标给出的数据只是一个形态数据,精确性不重要,只要形态对就成了。每个技术指标都有它特定的弱点,没有哪种技术指标完美无缺。如果想探寻某种完美的技术指标,那是在浪费时间。
你把每笔交易做个记录,买卖的原因,当前的图形,后市的判断都保存好,每间隔一段时间拿出来看看,总结总结,这比在技术指标研讨上,效率要高得多。 网上有介绍计算MACD公式的,LZ可以去查查,以前我用EXCEL VBS写过的。 原帖由 ipworld 于 2010-11-12 16:06 发表
网上有介绍计算MACD公式的,LZ可以去查查,以前我用EXCEL VBS写过的。
那能否帮忙用我的数据跟我验证一下是否正确?多谢了! 楼主还没明白啊,上面的奔腾兄说的很清楚了 原帖由 daidelta 于 2010-11-12 20:00 发表
楼主还没明白啊,上面的奔腾兄说的很清楚了
呵呵,我不是纠缠在指标是否精确,而是想了解我的指标思路(或者说算法)是否正确,如果算法没有问题,我就做接下来的工作。
其实你并不了解我要做什么,我当然知道指标是死的,人是活的,但指标既然大家都用,一定有它的科学性的。
为什么大家只是泛泛而谈,不给我实际的指点呢?我希望有一个真正懂的高手指点,谢谢! 原帖由 weiqiok 于 2010-11-13 05:36 发表
呵呵,我不是纠缠在指标是否精确,而是想了解我的指标思路(或者说算法)是否正确,如果算法没有问题,我就做接下来的工作。
其实你并不了解我要做什么,我当然知道指标是死的,人是活的,但指标既然大家 ...
验证算法是否正确,那就是说接下来你准备设计一个属于自己的指标系统哟。佩服,真的很佩服你,时间多得用不玩。很多年前,为了应先生那一百万的悬赏,我用 C 来开发 GO 程式,为了设计一套高效的算法就花了两个来月。问题是,就是现在的冠军程式朝鲜的银星,连我这个业余初段都下不过,更别说那一百万的悬赏了。说这么多,只想告诉你:人的一生时间短暂,要把有限的时间用在效率最高的事情上;大多数人都是平常人,要做自己能力范围内的事情;能把自己能力范围内的事情做好,人的一生就不会白活。 原帖由 奔腾 于 2010-11-13 07:03 发表:<br>
验证算法是否正确,那就是说接下来你准备设计一个属于自己的指标系统哟。佩服,真的很佩服你,时间多得用不玩。
晕哦,呵呵,你还是曲解了我的意思,我是想验证【我的MACD算法】是不是正确。
今天早上我就发现了问题,已经做了修改,但似乎跟股票分析软件还有一些差距,不过已经接近了。
其实,我就是想求证一下我得到的结果(我的算法)是不是正确,没别的意思。
如果【我的算法】(再强调一次)正确了,我就能够继续往下走。
说到围棋,你算是找对人了,我的围棋网站在国内(甚至世界)应该是很领先的了,呵呵。
围棋学研网:http://www.weiqiok.com
人机对弈,我也很有想法,如果我有时间和精力,打败【银星】应该是可以做到的,
此外,布局方面,我应该可以做得很强,有空可以看看我的【谱度系统】,哈哈,功能非常强的。
[ 本帖最后由 weiqiok 于 2010-11-13 07:29 编辑 ] 感谢 Weiqiok 的执着,但是我也认可 奔腾 的建议,没有一个万能的程序,如果有巴菲特会倾其所编写或购买,但是我会支持您Weiqiok,坚持您的想法继续做下去.虽然它不会是万能的,但也许它是最适合您自己的. 原帖由 ray_zhao 于 2010-11-13 17:20 发表 http://bbs.macd.cn/static/image/common/back.gif
感谢 Weiqiok 的执着,但是我也认可 奔腾 的建议,没有一个万能的程序,如果有巴菲特会倾其所编写或购买,但是我会支持您Weiqiok,坚持您的想法继续做下去.虽然它不会是万能的,但也许它是最适合您自己的.
其实,说真的,我不是自己在做算法,股票,我是门外汉。
我仅仅是应用,我希望借助几个指标来帮我做选股的参考,所以请教大家,看看我做的【MACD】有没有问题,仅此而已。
不过,我有了自己的程序和指标的分析,我想,各种指标可以自由为我所用了,也是很好的一件事。
感谢【ray_zhao】的支持!
页:
[1]