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

这篇具有很好参考价值的文章主要介绍了python_PyQt5日周月K线纵向对齐显示_1_数据处理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

写在前面:

图形结果显示:

数据设计:

代码:

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

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


写在前面:

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

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

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

3 聚焦某段图形

图形结果显示:

python_PyQt5日周月K线纵向对齐显示_1_数据处理,python杂项,python,开发语言

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

数据设计:

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

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
周三
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39

那周线级别对应的横轴为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表格输出,查看数据情况

python_PyQt5日周月K线纵向对齐显示_1_数据处理,python杂项,python,开发语言

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

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

(要显示K线图和成交量图,所以会分别生成K线数据和成交量数据)文章来源地址https://www.toymoban.com/news/detail-714640.html

def caculate_show_data(df):
        k_height_num = 400
        vol_height_num = 100
        candle_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

到了这里,关于python_PyQt5日周月K线纵向对齐显示_1_数据处理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • PyQt5学习笔记--多线程处理、数据交互

    目录 1--引入多线程的原因 2--PyQt多线程的基本知识 3--多线程登录程序的实例 4--参考 ① 如果Qt只采用单线程任务的方式,当遇到数据处理慢的情形时,会出现GUI卡死的情况。 ② 使用下述例子展示单线程任务的缺陷: ③ 代码: ④ 结果展示: 当点击第一个button时,GUI会出现卡

    2023年04月16日
    浏览(49)
  • [Python] pyqt6+opencv实现摄像头图像的实时读取并显示(完整源代码)

    本文将会介绍如何通过opencv来实时捕获摄像头的图像,并通过pyqt6进行图像视频呈现。 1. 通过opencv的VideoCapture类读取摄像头的每一帧图像,通过pyqt6的QLabel来显示图像 2. 根据获取的图像的宽和高大小以及QLabel的大小来动态调整最后输出的图像的宽和高 3. 调整窗体大小,动态调

    2024年01月24日
    浏览(68)
  • 完美解决 flex 实现一行三个,显示多行,左对齐

    效果图 代码 方法二

    2024年02月07日
    浏览(34)
  • html 怎么设置文本对齐,文本间距,盒子居中显示

    1.在一个盒子中我们怎么让文本水平,垂直居中显示 可以看到此时文本默认是在盒子的左上角显示的,可以 添加行高 (line-height 值 与盒子高度一样就行 ),和 文本对齐方式设置为水平居中 ,代码如下:    2.怎么让盒子中的元素居中显示  这里我们可以看到,盒子中的元

    2024年02月08日
    浏览(47)
  • 【PyQt】PyQt5进阶——串口上位机及实时数据显示

    【Python】PyQt5入门   最近在用PyQt做一个串口上位机,需要串口通信和实时显示曲线。这里简单记录一些关键点。   这个是在安装PyQt5时自动安装的组件,使用方法比较简单,主要是两个模块: QSerialPort , QSerialPortInfo   以上就是串口部分的代码,比较简单,利用代码提

    2024年02月12日
    浏览(54)
  • pyqt 显示图片的若干方法

    date: 2022-11-30 14:23 status: public title: ‘pyqt 显示图片的若干方法’ 特点是最简单,但功能也最少。 来源 【PyQtGraph】显示图像 特点 可以对图片进行缩放操作,继承了pyqtgraph 的一些特点功能。 来源:PyQt5-使用scrollArea实现图片查看器功能 特点是当窗口大小小于scrollArea 区域大小时

    2023年04月15日
    浏览(18)
  • 【Python COM】Word 自动纵向合并相同内容单元格

    docxtempl 库不支持动态纵向合并单元格,所以写了这段代码用来曲线救国。 需要纵向合并的单元格加上在文本末尾加上“【纵向合并】”,然后调用此函数,就会自动纵向合并相同内容的单元格。 需要安装 pywin32 库。 有一定概率会出现各种 pywintypes.com_err ,一般再多试几次就

    2024年02月12日
    浏览(33)
  • PyQt实现视频抽帧显示

    PyQt实现视频抽帧显示 导入必要的库。 创建一个QTimer对象,用于循环读取视频帧并进行抽帧。 定义show_frame函数,该函数将读取视频帧并将其显示在PyQt窗口中。

    2024年02月07日
    浏览(34)
  • python实现两张图片左右(横向)和纵向(上下)拼接组合

    主要用于对两幅图像进行左右组合或者上下组合,详细代码如下: 左右组合 上下组合

    2024年02月15日
    浏览(54)
  • pyqt怎么让窗口显示在最前面

    可以使用 PyQt 的 setWindowFlag() 函数来设置窗口的 \\\"AlwaysOnTop\\\" 标志。这样就可以让窗口始终显示在最前面了。 下面是一个例子: 注意,这个方法并不是在所有系统上都有效,有些系统可能会忽略这个标志。如果想要实现在所有系统上都能让窗口显示在最前面,可以使用 PyQt 的

    2024年02月15日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包