最近股市過山車,我不會股票,也沒那么多時間玩,于是我玩起了股基。在玩的過程中我發(fā)現(xiàn)這玩意挺好玩的呀,只是我在網(wǎng)頁來回切換,不停按F5的過程中煩了,于是就自己寫了一個股基小助手,在這里拿出來和大家一起分享。
我發(fā)現(xiàn)呢,今日估值,預(yù)估升率,最新凈值,最新升率,昨日升率和最新凈賺是我比較想要知道的??戳撕陀嵕W(wǎng)和百度理財,看了他們傳的數(shù)據(jù),覺得和訊網(wǎng)的比較全面和準確,于是采用抓取和訊網(wǎng)的數(shù)據(jù)。先來個效果圖:

接下來說說我是怎么做的吧,首先,確定請求的地址是:http://quote.funds.hexun.com/list/outxml/quote/IOpenFundData.aspx?fundcode=XXX,查看得到的數(shù)據(jù):

可以看到得到的有四個數(shù)據(jù),包括最新凈值,最新升率,昨日凈值,更新時間。但當(dāng)時間到了股市開市時間時,得到的數(shù)據(jù)是不一樣的,“最新凈值”變成“今日估值”,“最新升率”變成“預(yù)估升率”。于是我把一些信息放到配置文件:

其中自動刷新時間用于每隔一段時間自動刷新數(shù)據(jù),F(xiàn)unds配置存放想要監(jiān)控的股基,組成形式是“基金編號,基金名稱,購買金額,持有份額,起始日期。沒買的賦值前兩個字段,有買的賦值所有字段”。然后建一個股基類:
public class Fund { public string 基金編號 { get; set; } public string 基金名 { get; set; } public double 今日估值 { get; set; } public double 預(yù)估升率 { get; set; } public double 預(yù)估收益 { 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.預(yù)估升率 = 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,最新凈賺是用最新凈值乘以持有份額再減去總額,持有份額就是持有的股基數(shù)量,總額就是購買的金錢總額,這樣得到的最新凈賺其實是沒減去贖回費和托管費的,需要減的大家自己下載一下代碼,自己改去吧。
新聞熱點
疑難解答