本帖最后由 haogg 于 2021-1-30 14:55 编辑
一直没的时间来更新这个小工具,看好像还是有人在用,反馈说刷新不了数据了,抽空修复了下重新发上来,附件是最新版,修复了不能获取净值数据。
后期有时间了再来更新一些收集到的需求:
【*】可切换数据源
【*】可查看昨日估值
【*】更方便更智能的插入基金方式
---------------------------------------------------------------分割线----------------------------------------------------
看到好多坛友因为输错基金代码或者输入了没有实时估值数据的基金而导致报错,就更新了一些容错处理,如果出现异常也不会直接报错了,而是会有友好的提示并且不影响后面的流程【2020/06/05】:
动图中的货币型基金就是没有当日估值这些数据的,只有年化收益,所以是不支持的,还有后面添加的南方原油这个基金估值不会及时公布,所以也获取不到当日的估值,现在这些基金都能很友好的处理了,而不是直接报错,附件和代码已更新。
---------------------------------------------------------------分割线----------------------------------------------------
没想到这个小工具这么多人捧场,我也看到了很多大家的意见,所以连忙进行了一些更新【2020/06/04】:
1、增删基金不需要去修改代码了,只要你保持合计那一行的B列值为####,脚本就能自动识别出需要查询的基金代码截止范围。
2、可以自动获取基金名称(感谢坛友@平Fan_d世界 )
3、新增夏普比率指标,这是个用来判断该基金风险和收益关系的一个指标,我看有些坛友需要,而且数据源也有这个指标,我就抓出来了。
4、新增盘中估值
*夏普比率一栏是可以下拉选择1年期、2年期、3年期这些周期的指标,有些基金成立时间没有那么多年,所以会出现有些两年或者三年期的值为“--”
*第一次打开会风险提示,一定要选择启用宏,不然没法用。wps不知道支不支持,楼主用的是office2010
详情请看下面动图和附件(已更新)
------------------------------------------------我是分割线-----------------------------------------------------------------------------------
昨天看看到有坛友发布了一个自动监控基金的vba,想起了我年初基金建仓时,因为支付宝第二天才能更新昨天的收益和估值,所以自己做的一个vba脚本,能获取到当天的估值和预估收益,好让自己当天就能判断是否加减仓,也分享给大家,算是抛砖引玉。估值可能会和支付宝估值以及第二天实际净值有些误差,因为每个平台的对基金的仓位估算都不一致,支付宝自己的估值和第二天公布的净值也会不一致,但是一般各个平台的估值和实际净值出入不大,这里采取的是东方财富的估值数据。
先上截图
使用说明都附在附件中的excel里面了,下面是vba代码:
[Actionscript3] 纯文本查看 复制代码
Sub 获取涨幅()
Sheets(1).Range("S300").Formula = "=MATCH(" & """####""" & ",B:B,0)-1"
endRow = Sheets(1).Range("S300").Value
Sheets(1).Range("S300").ClearContents
For i = 2 To endRow
If Sheets(1).Range("B" & i).Text <> "" Then
Sheets(1).Range("F" & i) = "正在加载..."
Sheets(1).Range("H" & i) = "正在加载..."
Sheets(1).Range("K" & i) = "正在加载..."
Set HTML = CreateObject("htmlfile")
Set http = CreateObject("Msxml2.ServerXMLHTTP")
Value = Sheets(1).Range("B" & i).Text
HTML.designMode = "on"
http.Open "GET", "http://fund.eastmoney.com/" & Value & ".html", False
http.send
strHtml = http.responseText
If strHtml <> "" Then
HTML.write strHtml
Set trs = HTML.getElementById("gz_gszzl")
Set gz_gsz = HTML.getElementById("gz_gsz")
If Sheets(1).Range("A" & i).Value = "" Then
Title = HTML.getElementsByTagName("title")(0).innerText
Title = Left(Title, InStrRev(Title, "(") - 1)
Sheets(1).Range("A" & i) = Title
End If
If TypeName(trs) <> "Nothing" And TypeName(gz_gsz) <> "Nothing" Then
Sheets(1).Range("K" & i) = gz_gsz.innerText
' 累计收益 (含预估)
gsz = gz_gsz.innerText
If gsz = "--" Then
gsz = "0"
End If
Sheets(1).Range("H" & i) = (gsz - Sheets(1).Range("D" & i).Value) * Sheets(1).Range("C" & i).Value
' 今日估值
' Debug.Print (trs.innerText)
If trs.innerText = "0.00%" Then
Sheets(1).Range("F" & i) = "'" & trs.innerText
Else
Sheets(1).Range("F" & i) = trs.innerText
End If
Call 获取风险指标(Value, i)
Else
Sheets(1).Range("F" & i) = "不支持该基金"
Sheets(1).Range("H" & i) = "不支持该基金"
Sheets(1).Range("K" & i) = "不支持该基金"
End If
Else
Sheets(1).Range("F" & i) = "获取出错,请检查基金代码后重试"
Sheets(1).Range("H" & i) = "获取出错,请检查基金代码后重试"
Sheets(1).Range("K" & i) = "获取出错,请检查基金代码后重试"
End If
End If
Next
End Sub
Sub 获取风险指标(code, i)
Sheets(1).Range("J" & i) = "正在加载..."
Set HTML = CreateObject("htmlfile")
Set http = CreateObject("Msxml2.ServerXMLHTTP")
HTML.designMode = "on"
http.Open "GET", "http://fundf10.eastmoney.com/tsdata_" & code & ".html", False
http.send
strHtml = http.responseText
HTML.write strHtml
Set td = HTML.getElementsByTagName("table")(1).getElementsByTagName("tr")(2).getElementsByTagName("td")
y = Sheets(1).Range("J1").Value
y1 = CStr(td(1).innerText)
y2 = CStr(td(2).innerText)
y3 = CStr(td(3).innerText)
Sheets(1).Range("J" & i).Formula = "=IF(INDEX(J1,1)=" & """夏普比率(1年)""" & "," & Chr(34) & y1 & Chr(34) & ",IF(INDEX(J1,1)=" & """夏普比率(2年)""" & "," & Chr(34) & y2 & Chr(34) & "," & Chr(34) & y3 & Chr(34) & "))"
End Sub
有些人可能不知道查看持仓成本和份额,我这里以支付宝里面的基金为例给大家演示一下:
首先进入支付宝基金持有页,然后点击具体的基金进入详情页
进入详情以后可以看到基金代码,点击小箭头展开持有详情,然后就能看到成本和份额了
基金模板.zip
(25.36 KB, 下载次数: 5217)
|