码迷,mamicode.com
首页 > 其他好文 > 详细

股基小助手

时间:2015-05-09 16:26:01      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:

  最近股市过山车,我不会股票,也没那么多时间玩,于是我玩起了股基。在玩的过程中我发现这玩意挺好玩的呀,只是我在网页来回切换,不停按F5的过程中烦了,于是就自己写了一个股基小助手,在这里拿出来和大家一起分享。

  我发现呢,今日估值,预估升率,最新净值,最新升率,昨日升率和最新净赚是我比较想要知道的。看了和讯网和百度理财,看了他们传的数据,觉得和讯网的比较全面和准确,于是采用抓取和讯网的数据。先来个效果图:技术分享

  接下来说说我是怎么做的吧,首先,确定请求的地址是:http://quote.funds.hexun.com/list/outxml/quote/IOpenFundData.aspx?fundcode=XXX,查看得到的数据:

技术分享

  可以看到得到的有四个数据,包括最新净值,最新升率,昨日净值,更新时间。但当时间到了股市开市时间时,得到的数据是不一样的,“最新净值”变成“今日估值”,“最新升率”变成“预估升率”。于是我把一些信息放到配置文件:

技术分享

  其中自动刷新时间用于每隔一段时间自动刷新数据,Funds配置存放想要监控的股基,组成形式是“基金编号,基金名称,购买金额,持有份额,起始日期。没买的赋值前两个字段,有买的赋值所有字段”,没买的赋值前两个字段,有买的赋值所有字段。然后建一个股基类:

    public class Fund
    {
        public string 基金编号 { get; set; }

        public string 基金名 { get; set; }

        public double 今日估值 { get; set; }

        public double 预估升率 { get; set; }

        public double 最新净值 { get; set; }

        public double 最新升率 { get; set; }

        public double 昨日净值 { get; set; }

        public double 总额 { get; set; }

        public double 最新净赚 { get; set; }

        public DateTime 起始日期 { get; set; }

        public double 持有份额 { get; set; }

        public string 更新时间 { get; set; }
    }

    然后在界面加个DataGridView和一个“刷新”按钮(用于手动刷新),代码的重点是刷新单个基金类的方法:

        private void UpdateFund(Fund fund)
        {
            string data = _client.DownloadString(Resources.UrlHexunFund + fund.基金编号);
            string[] datas = data.Split(‘,‘);

            if (datas[0].Contains("最新净值"))
            {
                fund.最新净值 = Convert.ToDouble(datas[1]);
                fund.最新升率 = Convert.ToDouble(datas[2]);
                fund.昨日净值 = Convert.ToDouble(datas[4].Split(‘]‘)[0]);
            }
            else
            {
                fund.今日估值 = Convert.ToDouble(datas[1]);
                fund.预估升率 = Convert.ToDouble(datas[2]);
                fund.最新净值 = Convert.ToDouble(datas[4].Split(‘]‘)[0]);
            }

            var money = fund.最新净值 * fund.持有份额 - fund.总额;
            fund.最新净赚 = money;
            fund.更新时间 = datas[5].Split(‘\‘‘)[1];
        }

  需要说明一下的是_client是一个WebClient,最新净赚是用最新净值乘以持有份额再减去总额,持有份额就是持有的股基数量,总额就是购买的金钱总额,这样得到的最新净赚其实是没减去手续费,管理费和赎回费的,需要减的大家自己下载一下代码,自己改去吧。

  需要股基小软件的,点击一下右边文字:股基小软件

 

股基小助手

标签:

原文地址:http://www.cnblogs.com/hambert/p/4490566.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!