如何制作一个实时统计股票的excel,求高手指点
2018-11-21 · 品牌创于1988,专注IT教育
打开excel软件,第一行输入名称,然后进行合并居中。
第二行输入下图图例中各项数值的名称。
至此准备工作已基本完成。
从第三行开始输入从股票账户中获取的数据,并输入相应的计算公式。这里参考开放式基金的运作方式来引入一个净值概念,主要是考虑后续可能会有资金的变化,比如取出资金,追加资金等,运作一段时间后,取出追加资金都按当时的净值折算成份额,以保持净值平稳过渡,更科学的计算相对的收益率。如果是新账户建议净值取值为1元,投入多少资金就折算成多少份额。如果是老账户为了考虑以前的业绩可以用最新的资产除以投资额,从而折算成最新的净值。
从第二次数据开始,折算份额计算公式=(下一期资产总额-前一期资产总额)/上一期每份净值+上一期的折算份额;可以在excel里设定成公式,从第三次数据开始拉右下角的小黑点(如下图所示的小黑点),就可以自动在下一行引用这个公式。其他的公式也可用此法。
股票市值直接从股票账户上获取,现金也是。其中总资产=股票市值+现金。持仓比例=股票市值/总资产。每份净值=总资产/折算份额。上证指数可以直接从行情软件上获取。
为了与大盘上证指数进行对比,判断是否跑赢大盘,引入一个转换指数概念。
第一期转换指数与每份净值数值相等。以后的转换指数=最新的上证指数/基期上证指数值*基期每份净值。
总盈利=总资产-总投资,总赢环比基期为0,下一期总赢环比=最新一期总盈利-上一期总盈利,指数环比增幅=(最新一期指数值-上一期指数值)/上一期指数值*100,净值环比增幅=(最新一期每份净值-上一期净值)/上一期净值*100。
为统计最新一期较基期累计的业绩,引入总体指数增幅概念,总体指数增幅=(最新一期指数值-基期指数值)/基期指数值*100,总体净值增幅=(最新一期每份净值-基期净值)/基期净值*100。
为统计判断是否跑赢大盘以及跑赢大盘的程度,引入净值增幅与大盘增幅差值的概念,差值=总体净值增幅-总体指数增幅,差值数值越大说明跑赢大盘的程度越多,业绩也越好。
基础数据形成后,接下来就是根据基础数据来制表了。图表主要应用三列数据,横坐标引入日期数据,纵坐标引入每份净值和转换净值数据。
操作方法以excel2003为例,是插入-图表-折线图(选择第一个折线图类型),点击下一步,选项卡选系列,系列框中点击添加,名称栏目填写每份净值,值一栏点击右侧的按钮,弹出一个框,然后选取每份净值一列的所有数值。再点击右侧按钮,回到原有界面。再添加系列2,改名为转换净值,重复前面操作,将数值换为转换净值即可。在分类X轴处选取日期一列的数值后,点击确定,图表就制作完成了。以后更新曲线图也很简单,只要将三个数字(净值、转换净值、日期)最后的数字改为加1就行了,比如图例现在是13,等A14的数据形成后,将三个数据的13都改为14就完成图表更新了。
刚好前段时间写了一个,小修改一下就可以给你用了。
【假设前提】你的股票代码都在A列,并且是 xxxxxx.sh(或者sz)的格式
Sub gpAPI() '【注意】Excel中,Alt+F11,插入,模块,粘贴这段代码,然后F5
On Error Resume Next
Dim URL As String, HttpReq As Object
Dim StrText As String, Tbox As String
Let URL = "http://qt.gtimg.cn/q=s_": Set HttpReq = CreateObject("MSXML2.XMLHTTP.3.0")
i = 3
Dim Rng As Range
Do While Range("A" & i) <> ""
Set Rng = Range("A" & i)
url_right = Right(Rng, 2) & Left(Rng, 6)
With HttpReq
.Open "GET", URL & url_right, False
.send
StrText = .responseText
If .Status = 200 Then
StrText = .responseText
Else: Tbox = Tbox & Chr(13) & "Error - Connection timed out"
End If
End With
temp = cut(StrText) '转码、截字符串、清洗替换
Cells(i, 2).Value = Split(temp, "~")(1) '取数组写入列
Cells(i, 3).Value = Split(temp, "~")(3)
i = i + 1
Loop
Cells(i, 2) = "" & " " & Now
End Sub
Function cut(str As String) '截取字符串并替换指定字符
cut = Replace(str, Chr(10), "") '替换指定字符
cut = Replace(cut, ";", "")
cut = Replace(cut, """", "") '替换指定字符
If cut Like "*pv_none_match=1*" Then cut = "~N/A" 'Error02 - No matching item
End Function
我想问怎么编啊。。
找程序员,开发程序的问需要专业的编程知识,你这股票都玩到编程了,一个字:牛