chnxn 发表于 2011-1-17 23:00:29

Microsoft Office Access助你股海冲浪【原创精品】

本帖最后由 chnxn 于 2011-1-18 14:57 编辑

【本帖系原创作品,独家发布于点拨论坛。谢绝任何网站、媒体转载本页内容!】

无论各位来自哪一个行业,总免不了要记录一些数据。比如,当老师的,要记录学生成绩,做生意的,要记录一些合同,商品资料什么的,就算工作不需要,家庭理财总是必须的,比如说记录一些买卖股票的数据。可能有许多人经常使用Excel来做这些记录。
Excel的计算功能是强大的,作为统计报表当然很好。不过,Excel也有缺点,数据一多,访问起来就不那么方便,查找起来相当费劲。有没有更好的办法呢?当然是有的。本人作为一个近20年股龄的老股民,根据自己的体会,觉得用Microsoft Office Access来记录更为合适。网上当然也有记录股票交易记录的软件,股票交易系统里也有持股成本数量等记录。但是,要么库存证券只有现在的,没有过去的,并且没有明细账,要么分类无法按照自己的意愿,总的来说,并不如意。自己动手才是最适合自己的。论坛里应该也不乏股市弄潮儿,我想把自己设计的股票交易数据库分享给点拨论坛的朋友。
这个数据库最好能区分曾经的持股和现在的持股,每只股票都能分类查询,可以知道库存的各种股票,已结的各种股票,每只股票的盈亏,库存股票的持股成本,每只股票的每一笔明细交易。库存股票的总成本,等等。
下面就介绍如何使用Microsoft Office Access建立证券交易数据库的方法。
1.      表的设计:
Microsoft Office Access数据库最基本的是表。表是我们用来输入数据的。表的设计极为关键,是数据库是否便于输入数据,访问数据,并形成报表的关键。从某种意义上看,表结构的设计思路比数据库软件的知识更重要。
股票交易无非是要记录交易日期,股票名称,数量,单价,总价,印花税,手续费,杂费等等。
如果照这样来设计一个表,那跟Excel没什么两样。从以上这些项目的特点来看,股票名称,印花税,手续费都是一一对应,独一无二的,必须单独设计,就像学生数据库里的学号,科目,合同数据库里的合同号,商品名等等一样。此外,再设计一个交易明细表,共四个表。
现在,让我们由浅入深地开始设计。

首先,打开Microsoft Office Acces,新建一个空白数据库,里面有一个空表,右击之,选择--设计视图 填入表名称:证券名称。如上图。
这个表有两个字段:
字段名称:证券ID,数据类型:文本,字段大小:6位,必填字段:是,空字符串:否,索引:有(无重复),输入法:关闭,其余不用改。
最后是右击字段名称,选择—主键,设置后证券ID左侧会出现一个钥匙标记。
字段名称:证券名称,数据类型:文本,字段大小,目前8位就够了,我安排了10位,必填字段:是,空字符串:否,索引:无,输入法:开启(这里要打汉字),其余不用改。
同理设计印花税和手续费两个表,重要的是印花税税率和手续费费率的数据类型是数字,字段大小是单精度,单精度就足够了,没必要使用双精度型。
印花税ID和手续费ID也可以设置主键,不设主键似乎也没什么关系,不过,索引:有(无重复)是绝对必要的。

证券ID字段的设置

证券名称字段的设置

印花税ID字段的设置

印花税税率字段的设置

手续费YD字段的设置

手续费费率字段的设置

以上是三个表的设计图。
下面我们开始设计最常用的交易明细表。

日期字段的设置

证券ID字段的设置

证券数量字段的设置

单价字段的设置

印花税ID字段的设置

手续费ID字段的设置

其它杂费字段的设置

交易类型字段的设置

交易标记字段的设置

备注字段的设置
这个表不设主键,共10个字段,其中证券ID用于输入证券代码如000001等,印花税ID输入00、01等,手续费ID输入000、008等,分别对应其它3个表。其它杂费、交易类型、交易标记、备注的作用已写在说明中。说明中的文字在你输入该字段数据时会出现在状态条,给你提示。
字段的详细设置在前面的几张途中。
有几点补充一下:这里应该设置默认值和有效性规则,以提高效率并减少错误。另外,证券数量应该采用长整型数据,若用整型,购买26000股时就会出错,长整型数据足够普通人使用了。其它杂费主要是上海市场的过户费,此外,派息也纳入此字段,不过派息应该填入负值。交易标记采用 是/否 型数据,最为节省,只有一位,也就是 0和1。设计数据类型要根据需要,而不是越大越好,否则,占据硬盘,而且降低速度。

证券ID字段查阅的设置

印花税ID字段查阅的设置

手续费ID字段查阅的设置
证券ID、印花税ID和手续费ID这3个字段还必须设置 查阅 。采用列表框较合适。字段来源于其它表, 要按实际情况设置,还有绑定列以及列宽等都要设置,各位可参阅这3 张图进行设置。
这样,表设计就算完成了。表设计一定要非常仔细,反复检查。等到使用后,甚至是建立查询后再发现问题就比较难以修改了,有时甚至无法修改,因为数据库内各个单元已经有了千丝万缕的关系就无法修改了。
2.      表 关系的创建:



如图,点击 数据库工具—关系,右击—显示表,全部4个表都添加,按图一一拖动鼠标,创建—保存即可。
现在,4个表的关系已经建立,构成了数据库的基础。
3.      表的数据输入:


证券名称、印花税、手续费3个表都只有2个字段,输入非常简单。右击该表,选择—打开,即可输入。证券代码和名称根据需要输入,印花税,设置了0,0.1%,0.3%,手续费设置了0,0.08%,0.15%,各位可以根据需要添加。记得将3个表格的第一项都设置为升序。参阅上图。

交易明细表的输入比较有讲究。看看上图就知道了。
日期:当年格式为1/3,即当年1月3日,往年格式为10/1/3,2010年年1月3日。
证券ID输入如000905,代表厦门港务。
证券数量:按交易量输入,派息输入0。
单价:一般按实际交易量输入,派息和送股输入0。
印花税ID:买入(包括新股中签)输入00,卖出按默认值,不用输入即为01。
手续费ID:新股中签和配股输入:000,其余按默认值(本例是015,个人根据自己的情况设置默认值),虽然派息和送股手续费也是0,但由于单价是0,因此可以不理睬而按照默认值。
其它杂费:沪市二级市场过户费0.1元/百股,至少1元,派息为负数,其余为默认值0。
交易类型:买入(包括送配股)为1,卖出为-1,派息为0。
交易标记:默认值,若某只股票全部卖完,即去除勾(这一点极为重要,若数据很多,可点击证券ID上方的三角形文件筛选器,去除全选,再勾上所需证券代码即可迅速找到所需记录)。
备注:用于记录杂项信息,通常是派息送配股信息就足够,本例用来解释该表,平时一般不填。本字段安40个字节用来打字说明,其实实际应用仅20个足够了。
以上图片输入的数据并非实战,仅为了解释输入方法而已。
有一点强调一下,交易明细 表 中有3个字段来自其它3个表。如果你购买的股票未在 表 证券名称 中添加,你在交易明细 表 中的输入是无法被数据库其它对象所应用,也就是无效的。你必须先在 表 证券名称 中添加。同理,若新增手续费率,必须在 表 手续费 中添加,并在 表 交易明细 的该字段中修改默认值和有效性规则。 表 印花税 处理方式同 表 手续费 。
怎么样?数据的输入是不是十分简单,若是不满意,还可以创建窗体来输入,更为显得一目了然。创建窗体的方法是,点击 交易明细 表,然后点击 创建--窗体,稍作设计调整即可,这里不介绍了。

先看个图吧,后面在供下载的文件里提供一个窗体。

一个重要提示:输入数据后若对表进行修改,一旦涉及重要部分,关闭表时会出现如上图提示,若没有充分把握,请单击否,或者保存数据库副本,以免出现问题。

4.      数据已经输入。那么,如何访问呢?访问数据库应该用查询,可以对设计进行分类,筛选,达到自己的要求。我们可以进程需要的访问制成相应的查询,到时候只要点击鼠标,即可达到目的。
这个数据库其实很简单,只要做一个全面的证券交易明细查询,即可以此为基础,派生出多个所需的查询,因此,这个查询是最为关键,最为精致的一个查询。下面介绍如何制作证券交易明细查询:

点击 创建—查询设计,即可看到查询设计视图。右击—显示表,将4个表都添加,然后关闭显示表。

用鼠标拉入所需字段,也可以键入字段名,再在其下方用鼠标选择表。有些字段是计算字段,必须使用表达式。右击字段—选择生成器,然后输入表达式。由于这个问题解释起来很繁琐,因此直接提供表达式如上图。
[证券量: [交易明细]![证券数量]*[交易明细]![交易类型] :证券量是查询的字段名, [交易明细]![证券数量]*[交易明细]![交易类型] 表示交易明细表 中的这两个字段的乘积。

[证券量: [交易明细]![证券数量]*[交易明细]![交易类型] :证券量是查询的字段名, [交易明细]![证券数量]*[交易明细]![交易类型] 表示交易明细表 中的这两个字段的乘积。

手续费1: [价值]*[手续费]![手续费费率]:手续费1是个中间查询字段, 券商规定若手续费小于5元时按5元收费。真正的手续费反映在后面的手续费字段。

手续费: IIf([手续费1]>5 Or [手续费1]=0,[手续费1],5):这才是真正的手续费。
手续费: IIf 是个函数名,
手续费1]>5 Or [手续费1]=0 是条件,
手续费1 表示 满足条件,则手续费 就是本函数返回的值,
5 表示 若不满足条件,则 5就是本函数返回的值。
这样正好满足若按手续费率收取的手续费不足5元收5元的券商要求,手续费为 0 是新股认购、配股等,属于免手续费的。这一切都完美了。是不是?

最后按照自己的意愿调整字段顺序,然后转到数据视图看效果,调整列宽。若有显示格式不对的,例如总值等显示成小数的,可再回到设计视图,将该字段属性改成货币格式即可。

chnxn 发表于 2011-1-17 23:02:15

本帖最后由 chnxn 于 2011-2-5 22:28 编辑


貌似很复杂,列位看官请不要头晕。其实本人对Office的函数也不熟。只是明白必须找一个有附加条件的函数。点开表达式生成器,在里面找,数组、转换、日期、财务、算术等肯定不是,很快就在程序流程里找到iif,这个iff看上去就像,假如吗,就是一个条件,然后在帮助里搜索一下即有该函数的语法。


右击 证券交易明细查询, 选择复制,粘贴,改名,确定,打开设计视图,在 交易标记下方键入yes,保存,就增加了一个证券进行明细查询(库存)的查询了。
还可以创建如 库存证券、库存证券明细、库存证券总成本、已结证券盈亏明细、已结证券总盈亏 等查询。具体不介绍了,各位打开上传的查询,进入设计视图便知。


利用查询访问数据库十分简便。打开某个查询,点击某字段的筛选器,去掉全选,选中需要的项目,如昊华能源,即可看到所需股票的结果。若在设计视图中进行筛选,可以获得非常复杂的筛选结果。筛选后关闭查询时,会提示你十分保存改动,若想保持原设计不变,单击否便是。

查询还有更强大的功能,可以对数据进行整理,分类,更新,清除过期数据,整理数据库等等。这对于合同,学生等数据库意义较大,这里就不多提了。
查询同样可以制成窗体,个人觉得没什么意义。

数据库不同于其它文件,删除任何数据,任何对象,都是不可恢复的,没有什么回收站。重命名也是充满风险的,比如本数据库任何一个 表 的重命名将导致整个数据库的失灵,查询的重命名也可能出问题,一个查询重命名了,任何基于这个查询的对象将失灵,这一点请务必注意。

数据库可以导出为Excel文件,也可以从Excel导入成 表。Access 是Office 的组件,当然也可以制作报表,弄成饼图、柱状图什么的,不过个人认为那是单位宣传科的事,对我们来说,赚钱才是硬道理。是不是。以前在电脑爱好者看到一篇用Excel记录证券交易的文章和表格。跟Access 比,简直是小儿科。

自制股票交易数据库的缺点的无法接通股票软件的数据接口,但也避免了体积巨大臃肿速度缓慢的毛病。若要知道你库存股票的盈亏,只要将 库存证券总成本 和 你在券商户头的股票市值 比较一下即可分晓,一秒功夫。

数据库的事说完了,谈谈股市。股市如战场,知己知彼才能百战不殆。知彼即知庄家,很难,所以很难战胜庄家。但知己是比较可能做到的,这个数据库就能帮你做到知己。你可以知道,你的资金都在战场的哪一位置。如果你做到了知己,庄家要吞掉你就更难。你的资金就是你的兵,你要善于分配你的兵力,不要全体被庄家包了饺子。最后说一句老套的话:股市多有风险,入市后果自负。

上传的文件有4个,两个空数据库,供各位使用和修改,两个提供了实战数据,供研究数据库的使用。分别为Office 2007 版本和Office 2000版本。

附件仅供点拨论坛(积分满200分的)活跃会员下载,非点拨论坛会员不得下载附件!

此数据库费了我不少精力,现献给论坛朋友。若用得顺手,股市赚钱,别忘了给我加分哦!

:lol


**** Hidden Message *****

chnxn 发表于 2011-1-17 23:02:37

本帖最后由 chnxn 于 2011-1-18 14:28 编辑

可以说已经写得非常详尽,一般的教程会略去许多细节,希望对各位有益。
比Excel稍微难一点,功能却强大许多。
花一点时间研究,定大有收益。

5317987 发表于 2011-1-18 19:48:43

花一点时间研究,定大有收益。

xroot 发表于 2011-2-5 21:11:09

好东西啊,可惜我现在已经退出股坛了。
不过这思路不错,ACCESS是个好东西。扩展开来,可以用到其它地方。
谢分享了,新年第一帖,顺祝新年快乐!

lin97623 发表于 2011-2-14 22:54:43

好东西!谢谢楼主分享好好学习

flashget 发表于 2011-2-17 01:17:55

确实是神贴啊,特地来下载看看access怎么配置的

chnxn 发表于 2011-4-7 10:20:33

本人在二楼贴图的那只股票已经向上突破。一年内的收益超过100%啊,真是不错:

IsaacZ 发表于 2011-4-7 15:06:14

恭喜恭喜!

刘宝林 发表于 2011-4-7 15:44:29

楼主真的是在帮助别人的过程中丰富自己
页: [1] 2 3
查看完整版本: Microsoft Office Access助你股海冲浪【原创精品】