通过Python进行股票行情量化(Wind)
程序员文章站
2022-07-08 15:50:21
1.本文取某交易月最后5个交易日的数据2.取5次全部A股一天的数据还是取全部A股数5天:a.领导要求每只股票存成一个文件,这样比较方便;b.通过time库在本机测得,取数据和写文件时间比大约1:3,耗时更多在写文件;c.本机程序运行大约25分钟,如果取5次全部A股一天的数据,会造成内存长时间占用较大,且还存在将取得的数据合并、分组、排序的时间开销import datetimeimport mathimport osimport pandas as pdimport xlsxwriter...
1.本文取某交易月最后5个交易日的数据
2.取5次全部A股一天的数据还是取全部A股数5天:
a.领导要求每只股票存成一个文件,这样比较方便;
b.通过time库在本机测得,取数据和写文件时间比大约1:3,耗时更多在写文件;
c.本机程序运行大约25分钟,如果取5次全部A股一天的数据,会造成内存长时间占用较大,且还存在将取得的数据合并、分组、排序的时间开销
import datetime
import math
import os
import pandas as pd
import xlsxwriter as xlsx
from click import progressbar # 进度条
from WindPy import *
folder_target = "C:\\stocks\\"
def check_result(data):
if data.ErrorCode != 0:
print("Error[" + str(data.ErrorCode) + "]\n")
sys.exit()
if os.path.exists(folder_target) == False:
os.mkdir(folder_target)
w.start()
today = ""
print("\n请输入要导出的数据的下一交易月第一天,如需导出2020年11月最后5天,则输入 2020-12-01")
today = input("\n请输入:")
# 简单验证
while today[-2:] != "01":
today = input("\n输入格式错误,请从新输入:")
today = today + "T00:00:00"
endTime = w.tdaysoffset(-1, today, "Period=D;Days=Trading").Times[0]
beginTime = w.tdaysoffset(-5, today, "Period=D;Days=Trading").Times[0]
res = w.wset(
"sectorconstituent", "date=%s;sectorid=a001010100000000" % (str(beginTime))
)
check_result(res)
fields = ["pre_close", "open", "high", "low", "close", "vwap"]
with progressbar(length=len(res.Data[1])) as pbar:
print("\n导出进度:")
for i, code in enumerate(res.Data[1]):
stock = w.wsd(
codes=code,
fields=fields,
beginTime=beginTime,
endTime=endTime,
options="Fill=Previous",
)
excel = xlsx.Workbook("%s.xlsx" % (folder_target + code))
sheet = excel.add_worksheet(code)
sheet.write(0, 0, "代码")
sheet.write(0, 1, "简称")
sheet.write(0, 2, "日期")
sheet.write(0, 3, "前收盘价(元)")
sheet.write(0, 4, "开盘价(元)")
sheet.write(0, 5, "最高价(元)")
sheet.write(0, 6, "最低价(元)")
sheet.write(0, 7, "收盘价(元)")
sheet.write(0, 8, "均价(元)")
for dateN in range(1, 6):
sheet.write(dateN, 0, code)
sheet.write(dateN, 1, res.Data[2][i])
sheet.write(dateN, 2, str(stock.Times[dateN - 1]))
for fieldsN in range(0, len(fields)):
sheet.write(
dateN,
3 + fieldsN,
"--"
if math.isnan(stock.Data[fieldsN][dateN - 1])
else stock.Data[fieldsN][dateN - 1],
)
excel.close()
pbar.update(1)
input("\n%s-%s五个交易日行情导出完成!" % (str(beginTime), str(endTime)))
本文地址:https://blog.csdn.net/tianxiefenxiang/article/details/110941105
推荐阅读
-
Python通过PIL获取图片主要颜色并和颜色库进行对比的方法
-
python实现通过pil模块对图片格式进行转换的方法
-
基于jupyter notebook的python编程(Win10通过OpenCv-3.4.1进行人脸口罩数据集的模型训练并进行戴口罩识别检测)
-
Python数据分析中Groupby用法之通过字典或Series进行分组的实例
-
通过Python进行股票行情量化(Wind)
-
python 通过调取百度接口进行图片OCR文字识别 高识别率
-
python爬虫入门02:教你通过 Fiddler 进行手机抓包
-
python爬虫入门02:教你通过 Fiddler 进行手机抓包
-
Python通过PIL获取图片主要颜色并和颜色库进行对比的方法
-
python实现通过pil模块对图片格式进行转换的方法