最近股市過山車,我不會股票,也沒那麼多時間玩,因而我玩起了股基。在玩的過程當中我發現這玩意挺好玩的呀,只是我在網頁來回切換,不停按F5的過程當中煩了,因而就本身寫了一個股基小助手,在這裏拿出來和你們一塊兒分享。spa
我發現呢,今日估值,預估升率,最新淨值,最新升率,昨日升率和最新淨賺是我比較想要知道的。看了和訊網和百度理財,看了他們傳的數據,以爲和訊網的比較全面和準確,因而採用抓取和訊網的數據。先來個效果圖:3d
接下來講說我是怎麼作的吧,首先,肯定請求的地址是:http://quote.funds.hexun.com/list/outxml/quote/IOpenFundData.aspx?fundcode=XXX,查看獲得的數據:code
能夠看到獲得的有四個數據,包括最新淨值,最新升率,昨日淨值,更新時間。但當時間到了股市開市時間時,獲得的數據是不同的,「最新淨值」變成「今日估值」,「最新升率」變成「預估升率」。因而我把一些信息放到配置文件:xml
其中自動刷新時間用於每隔一段時間自動刷新數據,Funds配置存放想要監控的股基,組成形式是「基金編號,基金名稱,購買金額,持有份額,起始日期。沒買的賦值前兩個字段,有買的賦值全部字段」。而後建一個股基類:blog
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 double 總額 { get; set; } public double 最新淨賺 { get; set; } public DateTime 起始日期 { get; set; } public double 持有份額 { get; set; } public string 更新時間 { get; set; } }
而後在界面加個DataGridView和一個「刷新」按鈕(用於手動刷新),代碼的重點是刷新單個基金類的方法:ip
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,最新淨賺是用最新淨值乘以持有份額再減去總額,持有份額就是持有的股基數量,總額就是購買的金錢總額,這樣獲得的最新淨賺實際上是沒減去贖回費和託管費的,須要減的你們本身下載一下代碼,本身改去吧。get