当前位置: 首页 > news >正文

python_PyQt5日周月K线纵向对齐显示_1_数据处理

目录

写在前面:

图形结果显示:

数据设计:

代码:

从日数据中计算周数据、月数据

生成图形显示需要的数据格式


写在前面:

“PyQt5日周月K线纵向对齐显示”,将分三篇博文描述

1 数据处理。将数据处理成适合图形显示的格式

2 显示工具开发。用pyqtgraph开发

3 聚焦某段图形

图形结果显示:

显示的结果是,周线级别K线与本周日数据的最后一个交易日对齐,月线级别K线与本月日数据的最后一个交易日对齐。

数据设计:

假设有40个日数据,日线级别的横轴为0,1,2,3,4,...39

012345678910111213141516171819
周三
2021222324252627282930313233343536373839

那周线级别对应的横轴为2,7,12,17,22,27,32,37

月线级别与周线一样的提取方式,这里就不再赘述

代码:

(注意:这里的原始数据来自优矿,所以对于收开高低,交易日的字段对应优矿)

从日数据中计算周数据、月数据

def caculate_week_month_from_day(df):        df['row_i'] = [i for i in range(len(df))]df['o_date'] = pd.to_datetime(df['tradeDate'])df['ma'] = talib.MA(df['closePrice'],timeperiod=20)df['vol_ma'] = talib.MA(df['turnoverVol'],timeperiod=20)df['value_ma'] = talib.MA(df['turnoverValue'],timeperiod=20)week_group = df.resample('W-FRI',on='o_date')month_group = df.resample('M',on='o_date')week_df = week_group.last()week_df['row_i'] = week_group.last()['row_i']week_df['openPrice'] = week_group.first()['openPrice']week_df['lowestPrice'] = week_group.min()['lowestPrice']week_df['highestPrice'] = week_group.max()['highestPrice']week_df['turnoverVol'] = week_group.sum()['turnoverVol']week_df['turnoverValue'] = week_group.sum()['turnoverValue']week_df = week_df.loc[:,self.multi_columns_list].copy()week_df.dropna(axis=0,how='any',subset=['closePrice'],inplace=True)week_df['ma'] = talib.MA(week_df['closePrice'],timeperiod=20)week_df['vol_ma'] = talib.MA(week_df['turnoverVol'],timeperiod=20)week_df['value_ma'] = talib.MA(week_df['turnoverValue'],timeperiod=20)month_df = month_group.last()month_df['row_i'] = month_group.last()['row_i']month_df['openPrice'] = month_group.first()['openPrice']month_df['lowestPrice'] = month_group.min()['lowestPrice']month_df['highestPrice'] = month_group.max()['highestPrice']month_df['turnoverVol'] = month_group.sum()['turnoverVol']month_df['turnoverValue'] = month_group.sum()['turnoverValue']month_df = month_df.loc[:,self.multi_columns_list].copy()month_df.dropna(axis=0,how='any',subset=['closePrice'],inplace=True)month_df['ma'] = talib.MA(month_df['closePrice'],timeperiod=20)month_df['vol_ma'] = talib.MA(month_df['turnoverVol'],timeperiod=20)month_df['value_ma'] = talib.MA(month_df['turnoverValue'],timeperiod=20)return daily_df,week_df,month_df

为了便于说明,这里将日周月数据按Excel表格输出,查看数据情况

day,week,month的row_i分别是日、周、月的横轴位置

生成图形显示需要的数据格式

(要显示K线图和成交量图,所以会分别生成K线数据和成交量数据)

def caculate_show_data(df):k_height_num = 400vol_height_num = 100candle_data = df.loc[:,['row_i','openPrice','closePrice','lowestPrice','highestPrice']].values.tolist()curve_data = {'x':df['row_i'].values.tolist(),'y':df['ma'].values.tolist()}one = {'height_num':k_height_num,'yMin':df['lowestPrice'].min(),'yMax':df['highestPrice'].max(),'data_list':[{'type':'candle','data':candle_data},{'type':'curve','data':curve_data}]}bar_data = df.loc[:,['row_i','openPrice','closePrice','turnoverVol']].values.tolist()curve_data2 = {'x':df['row_i'].values.tolist(),'y':df['vol_ma'].values.tolist()}two = {'height_num':vol_height_num,'yMin':0,'yMax':df['turnoverVol'].max(),'data_list':[{'type': 'bar','data':bar_data},{'type':'curve','data':curve_data2}]}return one,two
http://www.lryc.cn/news/211651.html

相关文章:

  • leetcode经典面试150题---4.删除有序数组中的重复项II
  • Transformer英语-法语机器翻译实例
  • 21.12 Python 实现网站服务器
  • Leetcode.274 H 指数
  • 订单BOM放哪儿?(我的APS项目二)
  • 从0到1之微信小程序快速入门(03)
  • 【面试高高手】—— docker面试题
  • mac电脑怎么永久性彻底删除文件?
  • MySQL(2):环境搭建
  • Android平台GB28181执法记录仪技术方案
  • 【已解决】VSCode运行C#控制台乱码显示
  • MySQL扩展语句和约束条件
  • Java排序学习
  • 《2023中国社交媒体平台指南》丨附下载_三叠云
  • 【unity小技巧】unity排序问题的探究
  • 为什么会被【禅道】工具的公司提出QQ群的反思…………
  • 专业课改革,难度陡然提高,专业课122总分390+南京理工大学818南理工818上岸经验分享
  • Java入门与实践
  • TensorRT量化实战课YOLOv7量化:pytorch_quantization介绍
  • 【23真题】知识点覆盖全!有罕见判断题!
  • K8s外部网络访问之Ingress
  • 中文编程工具免费版下载,中文开发语言工具免费版下载
  • 昂首资本严肃且专业地探讨波浪理论第一波
  • 《论文写作》课程总结
  • 基于SSM的作业提交与查收系统设计与实现
  • Hololens2 报错Microsoft.Windows.System缺少
  • nginx: [emerg] bind() to 0.0.0.0:18888 failed (98: Unknown error)问题解决办法
  • 基于 Redis + Lua 脚本实现分布式锁,确保操作的原子性
  • vue源码分析(七)—— createComponent
  • vue实现图片分页