每日股市大盘自动复盘(基于聚宽量化投资平台)

直接上代码,代码里需要用到聚宽平台的jqdata,可在聚宽研究环境中运行。

import numpy as np
import datetime
import jqdata
from jqdata import *
import pandas as pd
import matplotlib.pyplot as plt
import json           #字符转换
matplotlib.rcParams['axes.unicode_minus']=False  #图像中负号显示不正常
import matplotlib.ticker as mtk###########可设定参数#############
# 设定复盘日期,-1为今天,-2为昨天,最多可看至十天前
trade_day = -1
##################################
#获取日期相关信息
def get_date(date,daynumb):startday = list(jqdata.get_trade_days(end_date=date,count=daynumb))[0]now1 = date.strftime("%Y-%m-%d %H:%M")now2 = datetime.datetime.strptime(now1, "%Y-%m-%d %H:%M")ne = now2 + datetime.timedelta(hours = 15) now3 = startday.strftime("%Y-%m-%d %H:%M")now4 = datetime.datetime.strptime(now3, "%Y-%m-%d %H:%M")ns = now4 + datetime.timedelta(hours = 9)npr = list(jqdata.get_trade_days(end_date=date,count=daynumb+1))[0]return npr,ns,ne#获取各指数日内日开盘价、收盘价、涨幅、振幅
def indexinfo(index,npr,ns,ne):Data_min = get_price(index,frequency='1m',start_date= ns, end_date= ne,fields=['open', 'close', 'high', 'low', 'volume'],fq='pre')Data_day = get_price(index,frequency='1d',end_date= today,fields=['open', 'close', 'high', 'low', 'volume','pre_close'],fq='pre',count = 1)open_price = Data_min['open'][0]close_price =  Data_min['close'][-1]rise = (Data_day['close'][0]/Data_day['pre_close'][0]-1)*100amplitude = ((Data_day['high'][0]-Data_day['low'][0])/Data_day['close'][0])*100return open_price,close_price,rise,amplitude# 指数文字报告
def index_report(today, indexlist, labels):print ("股票每日报告:",today,'\n')for i in range(len(indexlist)):open_price,close_price,rise,amplitude =indexinfo(indexlist[i],npr,ns1,ne1)if rise > 0:print("\033[0;31m %s \033[0m"%labels[i],end='') print("开盘报%s点,收盘%s点,上涨%.2f%%,振幅为%.2f%%;\n"%(open_price,close_price,rise,amplitude))else:print("\033[0;32m %s \033[0m"%labels[i],end='') print("开盘报%s点,收盘%s点,下跌%.2f%%,振幅为%.2f%%;\n"%(open_price,close_price,-rise,amplitude))
# 指数画图
def index_drawing(indexlist):fig1, ax4 = plt.subplots(figsize=(12,6))fig2, ax5 = plt.subplots(figsize=(12,3))scale_ls = np.array(range(len(indexlist)))+1def format_date(x, pos=None):        idx = np.clip(int(x+0.5), 0, Data.shape[0]-1)return Data['time'].iat[idx]for i in range(len(indexlist)):code0 = indexlist[i]Datap = get_price(code0,frequency='1d',end_date=npr,fields=['close'],skip_paused=False,fq='pre',count = 1)Data = get_price(code0,frequency='1m',start_date= ns1, end_date=ne1,fields=['open', 'close', 'high', 'low', 'volume'],fq='pre')Data['time']  = list(Data.index)xax = np.arange(Data.shape[0])val = ((Data['close']-Datap['close'][0])/Datap['close'][0])*100ax4.plot(xax, val, label= labels[i])if val[-1]<0:ax5.bar(i+1,val[-1],width =0.2,color = 'lightgreen')elif val[-1]>0:ax5.bar(i+1,val[-1],width =0.2,color = 'pink')xmajorLocator = mtk.MultipleLocator(30)    ax4.xaxis.set_major_locator(xmajorLocator)ax4.xaxis.set_major_formatter(mtk.FuncFormatter(format_date))   fmt='%.2f%%'  yticks = mtk.FormatStrFormatter(fmt)        ax4.yaxis.set_major_formatter(yticks)ax4.grid(True)fig1.autofmt_xdate()ax4.legend(loc='upper right',ncol=4)ax4.set_xlabel('时间',fontsize=15)ax4.set_ylabel('收益率',fontsize=15)ax4.set_title('各大指数每日复盘',fontsize=15);ax5.grid(True)plt.xticks(scale_ls,labels,fontsize=15)ax5.set_ylabel('收益率',fontsize=15)ax5.yaxis.set_major_formatter(yticks)plt.show()today = list(jqdata.get_trade_days(end_date=datetime.datetime.now().date(),count=10))[trade_day]
# 交易开盘、收盘等时间相关日期
npr,ns1,ne1 = get_date(today,1)
yesterday = list(jqdata.get_trade_days(end_date=datetime.datetime.now().date(),count=3))[0]
npr2,ns2,ne2 = get_date(yesterday,1)
#常用指数及代码
indexlist= ['000001.XSHG','399001.XSHE','000016.XSHG','000300.XSHG','000905.XSHG','000906.XSHG','399005.XSHE','399006.XSHE']
labels   = ['上证指数','深证成指','上证50', '沪深300', '中证500', '中证800','中小板','创业板指'] 
index_report(today, indexlist, labels)
index_drawing(indexlist)

运行结果如下:
在这里插入图片描述
在这里插入图片描述
(下面这段代码是刚入门的时候写的。。。太烂啦 有兴趣自己优化一下。。。)

#统计全A股信息
allstock = get_all_securities(types=['stock'])finalrep = []
rise = 0
fall = 0risestop = []
fallstop = []
risestopprice = []
fallstopprice = []
risestopamp = []
fallstopamp = []
risestoptype = []
fallstoptype = []a0 = 0
a1 = 0
a2 = 0
a3 = 0
a4 = 0
a5 = 0
a6 = 0
a7 = 0
a8 = 0
a9 = 0
fa0 = 0
fa1 = 0
fa2 = 0
fa3 = 0
fa4 = 0
fa5 = 0
fa6 = 0
fa7 = 0
fa8 = 0
fa9 = 0for i in range(len(allstock)):code = allstock.index[i]Datap = get_price(code,frequency='1d',end_date=npr,fields=['close'],skip_paused=False,fq='pre',count = 1)Data = get_price(code,frequency='1m',start_date= ns1, end_date= ne1,fields=['open', 'close', 'high', 'low', 'volume','high_limit','low_limit'],fq='pre')rep = (Data['close']-Datap['close'][0])/Datap['close'][0]if rep[-1] > 0:rise+=1if rep[-1] < 0:fall+=1if 0<rep[-1]<=0.01:a0+=1if 0.01<rep[-1]<=0.02:a1+=1if 0.02<rep[-1]<=0.03:a2+=1if 0.03<rep[-1]<=0.04:a3+=1if 0.04<rep[-1]<=0.05:a4+=1if 0.05<rep[-1]<=0.06:a5+=1if 0.06<rep[-1]<=0.07:a6+=1if 0.07<rep[-1]<=0.08:a7+=1if 0.08<rep[-1]<=0.09:a8+=1if 0.09<rep[-1]:a9+=1if -0.01<=rep[-1]<0:fa0+=1if -0.02<=rep[-1]<-0.01:fa1+=1if -0.03<=rep[-1]<-0.02:fa2+=1if -0.04<=rep[-1]<-0.03:fa3+=1if -0.05<=rep[-1]<-0.04:fa4+=1if -0.06<=rep[-1]<-0.05:fa5+=1if -0.07<=rep[-1]<-0.06:fa6+=1if -0.08<=rep[-1]<-0.07:fa7+=1if -0.09<=rep[-1]<-0.08:fa8+=1if rep[-1]<-0.09:fa9+=1if round(Data['close'][-1],2) == round(Datap['close'][0]*1.1,2):risestop.append(code)risestopprice.append(Data['close'][-1])x = round(Data['close'][-1]/Datap['close'][0],4)-1baix = '%.2f%%' % (x * 100)risestopamp.append(baix)count = 0for element in Data['close']:if element == Data['close'][-1]:count+=1if count == len(Data['close']):risestoptype.append(1)else:risestoptype.append(0)if round(Data['close'][-1],2) == round(Datap['close'][0]*0.9,2):fallstop.append(code)fallstopprice.append(Data['close'][-1])x = round(Data['close'][-1]/Datap['close'][0],4)-1baix = '%.2f%%' % (x * 100)fallstopamp.append(baix)count = 0for element in Data['close']:if element == Data['close'][-1]:count+=1if count == len(Data['close']):fallstoptype.append(1)else:fallstoptype.append(0)if get_extras('is_st', code, start_date=ns1, end_date=ne1).values:if round(Data['close'][-1],2) == round(Datap['close'][0]*1.05,2):risestop.append(code)risestopprice.append(Data['close'][-1])x = round(Data['close'][-1]/Datap['close'][0],4)-1baix = '%.2f%%' % (x * 100)risestopamp.append(baix)count = 0for element in Data['close']:if element == Data['close'][-1]:count+=1if count == len(Data['close']):risestoptype.append(1)else:risestoptype.append(0)if round(Data['close'][-1],2) == round(Datap['close'][0]*0.95,2):fallstop.append(code)fallstopprice.append(Data['close'][-1])x = round(Data['close'][-1]/Datap['close'][0],4)-1baix = '%.2f%%' % (x * 100)fallstopamp.append(baix)count = 0for element in Data['close']:if element == Data['close'][-1]:count+=1if count == len(Data['close']):fallstoptype.append(1)else:fallstoptype.append(0)finalrep.append(float('%.3f' % rep[-1]))risestopinfo = pd.DataFrame(columns=('股票代码', '股票名称', '收盘价','涨跌幅','涨停类型(1为一字涨停,0为自然涨停)'))
risestopinfo['股票代码'] = risestop
risestopinfo['股票名称'] = allstock.display_name[risestop].values
risestopinfo['收盘价'] = risestopprice
risestopinfo['涨跌幅'] = risestopamp
risestopinfo['涨停类型(1为一字涨停,0为自然涨停)'] = risestoptypefallstopinfo = pd.DataFrame(columns=('股票代码', '股票名称', '收盘价','涨跌幅','跌停类型(1为一字跌停,0为自然跌停)'))
fallstopinfo['股票代码'] = fallstop
fallstopinfo['股票名称'] = allstock.display_name[fallstop].values
fallstopinfo['收盘价'] = fallstopprice
fallstopinfo['涨跌幅'] = fallstopamp
fallstopinfo['跌停类型(1为一字跌停,0为自然跌停)'] = fallstoptype#统计一字跌停、自然跌停个数
zi = 0
yi = 0
for element in risestopinfo['涨停类型(1为一字涨停,0为自然涨停)']:if element == 0 :zi +=1if element == 1:yi += 1zi1 = 0
yi1 = 0
for element in fallstopinfo['跌停类型(1为一字跌停,0为自然跌停)']:if element == 0 :zi1 +=1if element == 1:yi1 += 1
#沪深两市十日成交额及成交量
tenday = list(jqdata.get_trade_days(end_date=datetime.datetime.now().date(),count=11))data = get_price('000001.XSHG', start_date=tenday[0], end_date=tenday[-2], frequency='daily', fields=['volume','money'])
data2 = get_price('399001.XSHE', start_date=tenday[0], end_date=tenday[-2], frequency='daily', fields=['volume','money'])
dvolume = data['volume']
dmoney = data['money']
dvolume2 = data2['volume']
dmoney2 = data2['money']
bar_width = 0.35xax = np.arange(data.shape[0])fig = plt.figure(figsize=(12,6))ax1 = fig.add_subplot(111)
ax1.bar(xax+(bar_width)/2, dvolume/100000000,bar_width,color = 'lightgreen',label="沪市")
ax1.bar(xax-(bar_width)/2, dvolume2/100000000,bar_width,color = 'pink',label="深市")
ax1.set_ylabel("成交量(亿股)",fontsize=15)
ax1.set_title("沪深两市十日成交额及成交量",fontsize=15)
ax1.set_xlabel("日期",fontsize=15)
ax1.legend(loc='upper right')ax2 = ax1.twinx()
ax2.plot(xax, dmoney/100000000,color='green',marker='o')
ax2.plot(xax, dmoney2/100000000,color='red',marker='o')
ax2.set_ylim([0, 3000])
ax2.set_ylabel("成交额(亿元)",fontsize=15)fig.autofmt_xdate()
plt.xticks(xax,data.index.strftime("%Y-%m-%d"),fontsize=15)
plt.show()#沪深两市中,涨跌股票
drawlist=[]
drawlistlabels = ['上涨','下跌']
colorlabel = ['pink','lightgreen']
drawlist.append(rise)
drawlist.append(fall)
plt.pie(drawlist,autopct='%1.1f%%',labels=drawlistlabels,colors= colorlabel,startangle=50,explode=[0.05,0.05],shadow = True)
plt.axis('equal')
plt.title('沪深两市,股票涨跌比',fontsize=15)
plt.show()#个股涨跌数量统计
liststock = [fa9,fa8,fa7,fa6,fa5,fa4,fa3,fa2,fa1,fa0,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9]
liststockx = []
zdf = ['<-9%','-9%~-8%','-8%~-7%','-7%~-6%','-6%~-5%','-5%~-4%','-4%~-3%','-3%~-2%','-2%~-1%','-1%~0','0~1%','1%~2%','2%~3%','3%~4%','4%~5%','5%~6%','6%~7%','7%~8%','8%~9%','>9%']
for i in range(len(liststock)):liststockx.append(i)
fig, ax2 = plt.subplots(figsize=(12,6))for i in range(0,10):ax2.bar(liststockx[i], liststock[i],bar_width,color = 'lightgreen')ax2.text(liststockx[i]-0.1, liststock[i]+10, liststock[i])for i in range(10,20):ax2.bar(liststockx[i], liststock[i],bar_width,color = 'pink')ax2.text(liststockx[i]-0.1, liststock[i]+10, liststock[i])fig.autofmt_xdate()
ax2.set_ylabel("股票数量",fontsize=15)
ax2.set_title("个股涨跌数量统计",fontsize=15)
ax2.set_xlabel("涨跌幅",fontsize=15)
plt.xticks(liststockx,zdf,fontsize=15)
plt.show()

运行结果如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

from collections import Counter# 展示股票池行业分布
def get_stock_industry_distribution(stock_pool, rise=True):hy_name_list = []for i in range(len(stock_pool)):try:hy_name = get_industry(stock_pool[i])[stock_pool[i]]['jq_l1']['industry_name']hy_name_list.append(hy_name)except:passprint(hy_name_list)result=Counter(hy_name_list)result = np.array(sorted(result.items(), key=lambda d:d[0]))fig = plt.figure(figsize=(12,6))plt.pie(result[:,1],autopct='%1.1f%%',labels=result[:,0])plt.axis('equal')plt.show()print ("沪深两市中,股票涨停%d只,跌停%d只。"%(len(risestop),len(fallstop)))
print ("涨停股票中,一字涨停%d只,自然涨停%d只。\n跌停股票中,一字跌停%d只,自然跌停%d只。"%(yi,zi,yi1,zi1))print('\n')
print('\033[0;31m涨停股票\033[0m',end='')
print('行业分布:')
get_stock_industry_distribution(risestopinfo['股票代码'])
print('\033[0;32m跌停股票\033[0m',end='')
print('行业分布:')
get_stock_industry_distribution(fallstopinfo['股票代码'])

运行结果如下:
在这里插入图片描述
在这里插入图片描述

print ("涨停股票")
risestopinfo

在这里插入图片描述

print("跌停股票")
fallstopinfo

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/33793.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

复盘股票问题

通过leetcode上的几道经典的股票问题&#xff0c;我们由浅入深地认识到动态规划的精妙之处&#xff0c;下面我们来复盘一下股票问题的解题思路&#xff0c;看我们是如何抽丝剥茧&#xff0c;一步一步地逼近正确思路&#xff0c;迎来柳暗花明的。 首先还是老生常谈的问题&#…

基于qstock的量化复盘与自动盯盘

01 引言 qstock量化分析库和教程自发布以来已经有一段时间了。收到不少读者的反馈&#xff0c;希望在qstock上添加更多的实用功能和案例研究。在回应这些反馈的同时&#xff0c;公众号也一直在努力改进现有的功能和教程内容。我们的目标是为用户提供更全面、更实用、更易于理解…

腾讯 Angel Graph 图计算框架在智能风控中的应用

本文约6800字&#xff0c;建议阅读15分钟 本文为你分享腾讯的姜亚松老师的图计算框架Angel Graph。 [ 导读 ] 图计算在智能风控场景有着广泛的应用&#xff0c;但是图的规模和计算的复杂度往往会制约落地的使用&#xff0c;目前各家机构都开展了图计算框架的自研&#xff0c;来…

金融风控数据分析

一、信贷底层库表详解与数据集市构建 1.信贷业务底层数据核心库表穿透式详解 1&#xff09;客户信息表结构与数据&#xff08;customer_info&#xff09; 客户信息表是根据客户在前端申请信贷产品时主动填写的信息收集的&#xff0c;部分可验证字段可直接用于风控规则&#…

python金融风控评分卡模型和数据分析(加强版)

在公众号「python风控模型」里回复关键字&#xff1a;学习资料 扣扣学习群&#xff1a;1026993837 领学习资料 金融风控模型和数据分析很难&#xff1f;逻辑回归评分卡/catboost/xgboost/lightgbm/等模型用python一次全部搞定&#xff01;增加数据分析和数据可视化实战&#xf…

python金融风控评分卡模型和数据分析(加强版)-收藏

信用评分卡 信用评分是指根据银行客户的各种历史信用资料&#xff0c;利用一定的信用评分模型&#xff0c;得到不同等级的信用分数&#xff0c;根据客户的信用分数&#xff0c;授信者可以通过分析客户按时还款的可能性&#xff0c;据此决定是否给予授信以及授信的额度和利率。 …

风控建模一、初步认识风控

风险控制&#xff08;Risk Control)&#xff0c;简称风控&#xff0c;是互联网金融的核心。 一、基础知识 1.1 A/B/C卡 A卡&#xff08;Application score card&#xff09;即申请评分模型&#xff08;贷款前&#xff09;&#xff0c;用于预测申请时点&#xff08;申请信用卡…

全面了解风控指标体系

说明 风险管理主要分为四大部分&#xff1a;风险识别、风险分析、风险监控、风险应对。而在量化风险管理的今天&#xff0c;这四个风控部分全都离不开风险指标的梳理、判断、追踪。在信贷业务中&#xff0c;常见贷款流程为&#xff1a;**申请>审批>签约放款>贷后管理…

风控报表体系建设与风控指标

文章目录 风控报表体系建设贷中&#xff1a;监控贷中&#xff1a;资产质量报表贷后&#xff1a;审批监控贷后&#xff1a;拒绝原因分布贷后&#xff1a;用户特征监控贷后&#xff1a;模型监控催收业绩表催收效率表一、应收账款(含销账)(Account Receivable, AR)二、期末贷款余额…

风控模型评估方法以及大数据风控模型概念

更新一下有效性指标中的区分能力指标&#xff1a; KS(Kolmogorov-Smirnov)&#xff1a;KS用于模型风险区分能力进行评估&#xff0c;指标衡量的是好坏样本累计分部之间的差值。好坏样本累计差异越大&#xff0c;KS指标越大&#xff0c;那么模型的风险区分能力越强。 KS的计算步…

风控评分模型

一 概述 余额支付的风险识别模型分为两类&#xff1a;&#xff08;1&#xff09;盗号交易识别风险 和 &#xff08;2&#xff09;盗卡交易识别风险。其中盗卡交易识别风险和余额有关主要是由于骗子注册号码帮盗来的卡&#xff0c;然后进行充值到余额&#xff0c;通过余额支付销…

惊艳!AI创意字体真绝了;6道AIGC高频面试题与解答;为啥语音助手还没集成LLM;深度学习算法红宝书 | ShowMeAI日报

&#x1f440;日报&周刊合集 | &#x1f3a1;生产力工具与行业应用大全 | &#x1f9e1; 点赞关注评论拜托啦&#xff01; &#x1f916; 惊艳&#xff01;手把手教你使用 Stable Diffusion 制作AI创意字体 最近AI创意字体刷爆了 ShowMeAI 社群&#xff01;伙伴们纷纷惊叹这…

qt无法显示图片的原因

qt无法显示图片&#xff1a; 原因&#xff1a; 1.检查图片路径&#xff0c;将图片路径改为全路径 如图片路径单为./jpg时&#xff0c;找不到图片&#xff0c;为全路径时可以找到 2.检查图片格式&#xff0c;不要乱改图片的后缀&#xff08;如1.jpg改成1.png&#xff09;&#…

关于Chrome不显示图片的问题

chrome图片不显示的解决方案 如果 你的IE和火狐浏览器可以正常显示图片&#xff0c;但是唯独谷歌浏览器无法显示图片&#xff0c;并且右键在新窗口中打开图片也是没有问题的。主要原因是因为你的图片链接不是https协议&#xff0c;被浏览器认为是不安全的&#xff0c;所以被浏览…

谷歌浏览器csdn图片无法显示

前排提示&#xff0c;博客中的图片不显示&#xff0c;但是同样的连接放到其他浏览器比如Microsoft Edge应该就能正常显示&#xff0c;文章中有一些步骤截图&#xff0c;请将该文章链接拷贝到其他浏览器查看图片。 看了很多博客的方案都没有解决&#xff0c;综合一下我的解决方…

解决图片不显示的问题

我的副业&#xff1a;觉得我的文章写得不错就支持一下我的副业吧 手机卡、流量卡领取&#xff1a;https://lsqstudy.github.io/post/d76a15aa112345.html 阅读导航 跳转到总目录 解决步骤 1、下载所有图片 链接&#xff1a;https://pan.baidu.com/s/1Q3Xw2GLCX_1ZavS6hIjwKg 提…

ImageWatch无法显示图像

问题描述&#xff1a; 最近遇到一个问题&#xff0c;VS里用来查看Opencv图像的ImageWatch插件&#xff0c;一直显示invalid&#xff0c;如下图&#xff1a; 无效尝试&#xff1a; 重装过ImageWatch插件&#xff0c;没用&#xff0c;Release和Debug都无法查看&#xff0c;最后…

解决im.show()不能显示图片问题

在Python中有一个很有用的图像处理插件&#xff1a;PIL(Python Imageing Library)&#xff0c;PIL目前版本为1.1.7&#xff0c;在PIL处理图像的时候&#xff0c;有时show()一下图片&#xff0c;发现如下&#xff1a; 图(1)无法显示图片 出现该问题的原因如下&#xff1a; 解决…

html无法显示图片解决方法

规范书写 无论你采用服务器调用还是浏览器都要使用相对路径&#xff0c;不然代码迁移很麻烦 相对路径同目录下直接使用文件名 例如下面这种情况index.html 使用img标签可以直接这样写 <img src"firefox-icon.jpg" alt"firefox-icon">低级目录向高…