如何制作一个实时统计股票的excel,求高手指点

2024-11-22 19:50:57
推荐回答(5个)
回答(1):

  • 打开excel软件,第一行输入名称,然后进行合并居中。

    第二行输入下图图例中各项数值的名称。

    至此准备工作已基本完成。

  • 从第三行开始输入从股票账户中获取的数据,并输入相应的计算公式。这里参考开放式基金的运作方式来引入一个净值概念,主要是考虑后续可能会有资金的变化,比如取出资金,追加资金等,运作一段时间后,取出追加资金都按当时的净值折算成份额,以保持净值平稳过渡,更科学的计算相对的收益率。如果是新账户建议净值取值为1元,投入多少资金就折算成多少份额。如果是老账户为了考虑以前的业绩可以用最新的资产除以投资额,从而折算成最新的净值。

  • 从第二次数据开始,折算份额计算公式=(下一期资产总额-前一期资产总额)/上一期每份净值+上一期的折算份额;可以在excel里设定成公式,从第三次数据开始拉右下角的小黑点(如下图所示的小黑点),就可以自动在下一行引用这个公式。其他的公式也可用此法。

  • 股票市值直接从股票账户上获取,现金也是。其中总资产=股票市值+现金。持仓比例=股票市值/总资产。每份净值=总资产/折算份额。上证指数可以直接从行情软件上获取。

  • 为了与大盘上证指数进行对比,判断是否跑赢大盘,引入一个转换指数概念。

    第一期转换指数与每份净值数值相等。以后的转换指数=最新的上证指数/基期上证指数值*基期每份净值。

  • 总盈利=总资产-总投资,总赢环比基期为0,下一期总赢环比=最新一期总盈利-上一期总盈利,指数环比增幅=(最新一期指数值-上一期指数值)/上一期指数值*100,净值环比增幅=(最新一期每份净值-上一期净值)/上一期净值*100。

  • 为统计最新一期较基期累计的业绩,引入总体指数增幅概念,总体指数增幅=(最新一期指数值-基期指数值)/基期指数值*100,总体净值增幅=(最新一期每份净值-基期净值)/基期净值*100。

  • 为统计判断是否跑赢大盘以及跑赢大盘的程度,引入净值增幅与大盘增幅差值的概念,差值=总体净值增幅-总体指数增幅,差值数值越大说明跑赢大盘的程度越多,业绩也越好。

  • 基础数据形成后,接下来就是根据基础数据来制表了。图表主要应用三列数据,横坐标引入日期数据,纵坐标引入每份净值和转换净值数据。

    操作方法以excel2003为例,是插入-图表-折线图(选择第一个折线图类型),点击下一步,选项卡选系列,系列框中点击添加,名称栏目填写每份净值,值一栏点击右侧的按钮,弹出一个框,然后选取每份净值一列的所有数值。再点击右侧按钮,回到原有界面。再添加系列2,改名为转换净值,重复前面操作,将数值换为转换净值即可。在分类X轴处选取日期一列的数值后,点击确定,图表就制作完成了。以后更新曲线图也很简单,只要将三个数字(净值、转换净值、日期)最后的数字改为加1就行了,比如图例现在是13,等A14的数据形成后,将三个数据的13都改为14就完成图表更新了。

回答(2):

回答(3):

刚好前段时间写了一个,小修改一下就可以给你用了。

【假设前提】你的股票代码都在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

回答(4):

想法挺好,但是感觉没啥用啊,另外股票软件可能不够直观但是这个功能也有。

回答(5):

这是用股票分析软件来实现的,要是用excel表来实现除非你有股票软件的开源码,来实现嵌入式函数对接,不过太专业了,我的水平肯定不行