吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 44852|回复: 557
上一主题 下一主题
收起左侧

[其他转载] Excel自动获取基金估值、计算当日收益和累计收益【2021/01/30更新】

    [复制链接]
跳转到指定楼层
楼主
haogg 发表于 2020-6-4 11:13 回帖奖励
本帖最后由 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)

点评

实际持有金额为什么等于持仓成本价*持有份额,不应该是最新净值*持有份额么  发表于 2020-6-7 13:43

免费评分

参与人数 97吾爱币 +90 热心值 +86 收起 理由
qintomb + 1 谢谢@Thanks!
飞翔的巧克力 + 1 + 1 谢谢@Thanks!
hztaolei + 1 + 1 谢谢@Thanks!
DrPilgrim + 1 + 1 谢谢@Thanks!
白袂敛秋风 + 1 + 1 我很赞同!
linbaochuan + 1 + 1 谢谢@Thanks!
x295677950 + 1 + 1 麻烦楼主大神后期修复的时候顺带解决一下刷新时报错:与服务器的连接意外终.
毓梓 + 1 用心讨论,共获提升!
MinnieLui + 1 谢谢@Thanks!
ketcer + 1 热心回复!
limitless2019 + 1 + 1 谢谢@Thanks!
亚斯蓝 + 1 谢谢@Thanks!
zhusiwei111 + 1 + 1 我很赞同!
zqz133 + 1 + 1 热心回复!
CYJJ + 1 + 1 我很赞同!
ZSNFLC + 1 + 1 用心讨论,共获提升!
TAT章北海 + 1 + 1 谢谢@Thanks!
soyadokio + 1 谢谢@Thanks!
k一切尽在掌握 + 1 + 1 谢谢@Thanks!
QQQRRR + 1 + 1 我很赞同!
wangyue10231 + 1 + 1 不错
xuan6160 + 1 + 1 热心回复!
酒笙 + 1 + 1 热心回复!
onecloud + 1 + 1 热心回复!
ningfei + 1 + 1 谢谢@Thanks!
jojo881077 + 1 + 1 鼓励转贴优秀软件安全工具和文档!
银之四木 + 1 谢谢@Thanks!
pjj3604 + 1 + 1 我很赞同!
绿叶红花 + 1 + 1 用心讨论,共获提升!
xsj-126 + 1 + 1 谢谢@Thanks!
qilinsanshao + 1 + 1 鼓励转贴优秀软件安全工具和文档!
Emma_Shao + 1 + 1 我很赞同!
天天404 + 1 + 1 谢谢@Thanks!
今吾非 + 1 + 1 谢谢@Thanks!
夏天的雪223 + 1 我很赞同!
江上客 + 1 谢谢@Thanks!
nofailyoung + 1 + 1 用心讨论,共获提升!
a88319111 + 1 + 1 用心讨论,共获提升!
gdxfzb + 1 谢谢@Thanks!
xiaobao_88 + 1 + 1 谢谢@Thanks!
chaobii + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
pj2016 + 1 谢谢@Thanks!
Lami52 + 1 + 1 鼓励转贴优秀软件安全工具和文档!
lmc6 + 1 + 1 谢谢@Thanks!
泡麺 + 1 + 1 谢谢@Thanks!
似水520 + 1 + 1 热心回复!
aooaoooaoo + 1 谢谢@Thanks!
啧啧 + 1 + 1 谢谢@Thanks!
fjw94 + 1 + 1 我很赞同!
神马都浮云 + 1 + 1 文档能否加一列自动获取的单位净值? 实际金额计算也有问题,跟软件显示的.
匿0名 + 1 + 1 谢谢@Thanks!
343003199 + 1 + 1 谢谢@Thanks!
panye + 1 + 1 谢谢@Thanks!
我脑海中的微笑 + 1 我很赞同!
化繁为简 + 1 + 1 谢谢@Thanks!
人生梦复梦 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
lyh。。。。。 + 1 + 1 谢谢@Thanks!
OceanJ4Nnn + 1 + 1 谢谢@Thanks!
lanmming + 1 + 1 实际持有金额为什么等于持仓成本价*持有份额,不应该是最新净值*持有份额么
伊始戊邪 + 1 + 1 谢谢@Thanks!
姓王的邻居 + 1 429,ActiveX部件不能创建对象
keyouli + 1 谢谢@Thanks!
gabriel36 + 1 + 1 谢谢@Thanks!
Yu__Geng + 1 + 1 我很赞同!
pdc9911 + 1 + 1 谢谢@Thanks!
wh666 + 1 + 1 谢谢@Thanks!
曾经的树叶 + 2 + 1 非常感谢楼主的热心回复
做个谦虚的人 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
xroot + 1 + 1 谢谢@Thanks!
shaunkelly + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
qishuochn + 1 我很赞同!
jkl5322203 + 3 + 1 WPS不能用吗
deep521 + 1 + 1 我很赞同!
wcu1117 + 1 已经处理,感谢您对吾爱破解论坛的支持!
轻狂绕时光 + 1 + 1 热心回复!
Leon丶SS + 1 + 1 感谢大佬!!!
w460270218 + 1 + 1 谢谢@Thanks!
ckawxy + 1 + 1 我很赞同!
自去经心 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
olivery52 + 1 我很赞同!
nishidagea + 1 + 1 我很赞同!
Pankris + 1 我很赞同!
苏紫方璇 + 5 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
许夜 + 1 我很赞同!
kkkkb + 1 我很赞同!
凉米饭 + 2 + 1 我很赞同!
0001 + 2 + 1 谢谢@Thanks!
xy93 + 1 谢谢@Thanks!
fisheep + 1 求加强版
kc00882002 + 1 + 1 谢谢@Thanks!
Azulgrana + 1 + 1 谢谢@Thanks!
q13467982 + 1 谢谢@Thanks!
shou0823 + 1 + 1 大佬刷新不了啊,一按Ctrl+r出来一个打开的文件夹
平Fan_d世界 + 1 热心回复!
Python9527 + 1 + 1 我很赞同!
从入门到入狱 + 1 + 1 我很赞同!
火蜥蜴 + 1 + 1 我很赞同!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

来自 62#
 楼主| haogg 发表于 2020-6-4 17:50 |楼主
大多数的报错是因为基金代码没有用0来补足六位,我已经更新了附件,会自动用0补齐六位,如果已经下载了的可以按以下方式将单元格式修改成自定义-类型里面输入六个0:

免费评分

参与人数 1热心值 +1 收起 理由
凉米饭 + 1 我很赞同!

查看全部评分

推荐
平Fan_d世界 发表于 2020-6-4 11:49
做了下修改,输入代码自动获取名称

基金模板.7z

602.66 KB, 下载次数: 1659, 下载积分: 吾爱币 -1 CB

免费评分

参与人数 3吾爱币 +4 热心值 +2 收起 理由
似水520 + 1 + 1 我很赞同!
w460270218 + 2 + 1 谢谢@Thanks!
xy93 + 1 谢谢@Thanks!

查看全部评分

推荐
novajo 发表于 2020-8-26 17:00
原先获取数据的网页因为多了一条警示,在按确认按钮之前的今日估值都是空,所以刷不出来了。
我没学过vba,瞎猫抓到一个处理方法,宏做了简单的编辑,给大家参考:
1.http get页面,换到每一个单独基金净值的页面上去抓取: http://fundf10.eastmoney.com/jjjz_" & Value & ".html"
2.页面中筛选标签id,使用:
Set trs = HTML.getElementById("fund_gszf")
Set gz_gsz = HTML.getElementById("fund_gsz")

免费评分

参与人数 3吾爱币 +3 热心值 +2 收起 理由
bluetear + 1 + 1 我很赞同!
阳阳小宝 + 1 + 1 谢谢@Thanks!
神级用户 + 1 谢谢@Thanks!

查看全部评分

推荐
 楼主| haogg 发表于 2020-6-6 10:25 |楼主
曾经的树叶 发表于 2020-6-6 09:54
如果我想再加一个基金的话,需要怎么做!

插入一行,然后复制一行模板数据,再粘贴到新插入的行,将粘贴的新行中的名称删除,修改基金代码、成本,份额就可以了。我主贴新更新的动图有这个操作,你可以看下

点评

楼主的回复也是很认真  发表于 2020-6-6 11:28

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
凉米饭 + 1 + 1 我很赞同!

查看全部评分

推荐
从入门到入狱 发表于 2020-6-4 11:26
大佬牛逼啊,下载了。
推荐
zhouxukai 发表于 2020-9-6 16:44
novajo 发表于 2020-9-2 21:25
对应的网页按F12,要找里面的元素,不是所有的都有对应element ID的。

谢谢,我找到了,那没有ID标签的咋办,如单位净值,我找了下就没有,原楼主的获取页面中,有坛友给出的单位净值获取代码fix_dwjz = HTML.getElementsByTagName("span")(12).innerText,你能看懂吗?我也找不到对应的代码
推荐
蜗牛会爬树 发表于 2020-7-3 15:35
就是为了这个注册的账号,哈哈哈哈哈,太棒了
推荐
 楼主| haogg 发表于 2020-6-4 17:30 |楼主
shou0823 发表于 2020-6-4 15:19
点启用了,CTRL+R后出现的这个文件C:%users\Public\Nwt\cache\recv

可能和你的其他软件快捷键冲突了,你可以把宏的快捷键修改
推荐
凉米饭 发表于 2020-6-5 14:21
                                                   


为什么这个今日估值 和 今日估计收益一直不变了
推荐
 楼主| haogg 发表于 2020-6-5 17:49 |楼主
凉米饭 发表于 2020-6-5 17:39
这写法 我实在是看不懂

免费评分

参与人数 1吾爱币 +2 热心值 +1 收起 理由
凉米饭 + 2 + 1 我很赞同!

查看全部评分

沙发
火蜥蜴 发表于 2020-6-4 11:25
很不错的工具,暂时用不上,先收藏了
4#
winwoo 发表于 2020-6-4 11:27
大佬牛逼啊,下载了。
5#
花心乞丐 发表于 2020-6-4 11:34
不容易  投资有风险
6#
jhjhsxs 发表于 2020-6-4 11:34
很不错,请问能否加上sharpe ratio 和sortino ratio呢?谢谢
7#
cjfkqtsj 发表于 2020-6-4 11:39
谢谢分享
8#
 楼主| haogg 发表于 2020-6-4 11:42 |楼主
jhjhsxs 发表于 2020-6-4 11:34
很不错,请问能否加上sharpe ratio 和sortino ratio呢?谢谢

这些专业的投资指标,需要很多参数,等以后有空了看能不能加上去
9#
albertmellon 发表于 2020-6-4 11:43
这个真的是好东西啊,支持啊!
10#
领袖 发表于 2020-6-4 11:45
谢谢分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 06:22

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表