吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5148|回复: 11
收起左侧

[Python 转载] 计算股票的涨跌幅,并计算任意股票的协方差

[复制链接]
wuqi001 发表于 2021-3-18 17:01
所用数据来自与通达信。计算协方差时将非共有的日期数据删除。(ps:本文纯属python pandas练手文,供各位看官以消遣之用。涨跌幅和协方差用excel计算明显更为简单,)
计算协方差所用库为pandas。
计算涨跌幅。有兴趣的朋友可将其中的代码放入循环中,进行改进。
# -*- codeing = utf-8 -*-
# @Time : 2021/3/12 17:16
# @AuThor : wuqi
# @file : 0001.py
# @SOFTWARE :PyCharm
#计算股票的涨跌幅
import xlrd
import xlwt
# from pandas import pd
filepath=r'C:\Users\wuqi001\Desktop\00.xlsx'    #第一个文件的路径
sefilepath=r'C:\Users\wuqi001\Desktop\01.xlsx'  #第二个文件的路径


#可任意往其中加入excel文件的地址

#文件的保存地址
savepath=r'C:\Users\wuqi001\Desktop\0.xls'

#计算涨幅
def getrate(filepath):
    workbook=xlrd.open_workbook(filepath,encoding_override='utf-8')
    a=workbook.sheet_by_index(0)        #通过索引找到表
    nums=a.nrows                        #得到总行数
    cols=a.col_values(4)                #取出第五列,即收盘价格
    l_price=cols[4:-1]                  #取出所有整型值

    # print(l_price)
    ratelist=[]

    for i in range(1,nums-5):
        rate=(l_price-l_price[i-1])/l_price[i-1]
        ratelist.append(rate)
        # print(ratelist)
    return ratelist

#取出该股票的日期
def getDate(filepath):
    workbook = xlrd.open_workbook(filepath, encoding_override='utf-8')
    a = workbook.sheet_by_index(0)
    nums = a.nrows
    dates=a.col_values(0)
    id=a.cell_value(0,0)
    l_data=dates[4:-1]
    datalist=[]
    for i in range(1,nums-5):

        datalist.append(l_data)
        # print(ratelist)
    return datalist,id


if __name__ == '__main__':
    #此过程可扩展
    ratelist=getrate(filepath)          #将涨跌赋给ratalist
    ratelist2=getrate(sefilepath)

    datelist1,id1=getDate(filepath)     #将日期赋给datalist
    datelist2,id2=getDate(sefilepath)




    book=xlwt.Workbook(encoding='utf-8')        #创建工作表
    sheet=book.add_sheet('001',cell_overwrite_ok=True)      #创建表单
    # sheet.write(0,0,'涨跌')
    sheet.write(0,0,'日期')       #写入日期
    sheet.write(0, 1, id1)         #写入股票名

    sheet.write(0, 3, '日期')
    sheet.write(0, 4, id2)




    for i in range(len(datelist1)):         #写入数据
        sheet.write(i+1,0,datelist1)
    for i in range(len(ratelist)):
        sheet.write(i+1,1,ratelist)

    for j in range(len(datelist2)):
        sheet.write(j+1,3,datelist2[j])
    for j in range(len(ratelist2)):
        sheet.write(j+1,4,ratelist2[j])





    book.save(savepath)















免费评分

参与人数 3吾爱币 +3 热心值 +3 收起 理由
竹轩 + 1 + 1 可惜了没成品不知道咋运行,但还是多谢LZ的热心分享,分还是给你了
王星星 + 1 + 1 谢谢@Thanks!
hanyufeng + 1 + 1 希望能出个成品,非常需要这样的小软件

查看全部评分

本帖被以下淘专辑推荐:

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

头像被屏蔽
王星星 发表于 2021-3-18 17:27
提示: 作者被禁止或删除 内容自动屏蔽
绕梁之英 发表于 2021-3-18 17:36
只想表示一下没看懂,最好直接告诉我买那支。
微凉ii 发表于 2021-3-18 18:13
hlzzwabc 发表于 2021-3-18 18:38
是预测吗?
山金哥 发表于 2021-3-18 18:45
有求一个股票交割单的生成器  各位大佬有吗
lhp369 发表于 2021-3-18 18:56
非常好的动心
lsd163 发表于 2021-3-18 22:03
请问做什么用的?
cowardice-boy 发表于 2021-3-18 22:47
好家伙,看不懂
wanshiz 发表于 2021-3-19 08:23
楼主厉害,练出这等代码。传闻“量化交易”吧,仿佛有些味道儿。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-25 11:47

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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