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

python代码实现了一个金融数据处理和分析的功能,主要围绕国债期货及相关指数数据展开

# 忽略某些模块的提示信息
import warnings
warnings.filterwarnings("ignore")
# 在全局配置中添加RQData账号信息
import rqdatac as rq 

from typing import List
import pandas as pd
import numpy as np
import re
from datetime import datetime, timedelta,time
from dateutil.relativedelta import relativedelta
from vnsw.alpha_research.data_center import DataCenter
from vnpy.trader.constant import Exchange, Interval
from vnpy.trader.setting import SETTINGS
rq.init(username=SETTINGS["datafeed.username"],password=SETTINGS["datafeed.password"])

def to_clickhouse(dc,table_name,df):
    SAVE_REFERENCE_QUERY = "INSERT INTO {table} VALUES"
    query = SAVE_REFERENCE_QUERY.format(table=table_name)

    # 生成更新时间列
    update = datetime.now()
    df["update"] =update
    # 生成要传参用的DataFrame
    # 写入数据库并返回条数
    try:
        dc.client.insert_dataframe(query, df)
        print('已存储',set(df['symbol']),min(df['interval']),min(df['datetime']),'至',max(df['datetime']))
    except Exception as e:
        print ("报错",e)

def load_rq_data(symbols:List[str],exchange:Exchange,start_date:datetime,end_date:datetime,frequency:str)->pd.DataFrame:#米筐的total_turnover是成交额,open_interest是持仓量
    if frequency=='1d' or frequency=='1m':
        df=rq.get_price(symbols, start_date, end_date,frequency,expect_df=True).reset_index()
    else:
        df=pd.DataFrame()
        start_date=start_date.replace(hour=0, minute=0, second=0,microsecond=0)
        while start_date<end_date:
            # print(start_date)
            df2=rq.get_price(symbols, start_date, start_date,frequency,expect_df=True) #米筐不看时分秒,会把所有涵盖日期的所有的x分钟bar返回
            if df2 is None:
                start_date+=relativedelta(days=1)
                continue
            elif len(df2):
                # print(df2)
                df=pd.concat([df,df2.reset_index()])
            start_date+=relativedelta(days=1)
        if max(df['datetime']).time()<time(15, 15):
            df.drop(df[df['datetime']==max(df['datetime'])].index,inplace=True)  
  
    df.rename(columns={
   'order_book_id':'symbol','date':'datetime','close':'close_price','open':'open_price','high':'high_price','low':'low_price','volume':'volume','open_interest':'open_interest',

http://www.kler.cn/a/472844.html

相关文章:

  • 通过 route 或 ip route 管理Linux主机路由
  • ADO.NET知识总结3---SqlCommand命令对象
  • 使用python将多个Excel表合并成一个表
  • el-table 多级表头
  • 28、使用StreamPark管理作业中,关于默认环境变量设置和默认动态参数设置的修改
  • CANN 学习——基于香橙派 KunpengPro(1)
  • el-table表格合并某一列
  • 【集成学习】Bootstrap抽样
  • 深度学习——回归实战
  • rust学习——环境搭建
  • 海思Linux-DEMO(1)-sample_venc(h265,h264)视频流文件的获取
  • TRAVEO™ T2G的SWAP功能
  • 服务器及MySQL安全设置指南
  • 使用Postman进行Base64解码
  • 使用 Rust 实现零拷贝数据处理:性能优化的极致探索
  • 如何监听Vuex数据的变化?
  • 第四届智能系统、通信与计算机网络国际学术会议(ISCCN 2025)
  • 虚拟机配置静态ip后出现两个ip问题
  • 单片机毕业设计项目分享(4)
  • 实验四 数组和函数
  • Mysql--基础篇--事务(ACID特征及实现原理,事务管理模式,隔离级别,并发问题,锁机制,行级锁,表级锁,意向锁,共享锁,排他锁,死锁,MVCC)
  • 深入学习RabbitMQ的Direct Exchange(直连交换机)
  • 常见的http状态码 + ResponseEntity
  • 设计模式 结构型 桥接模式(Bridge Pattern)与 常见技术框架应用 解析
  • 【centos8 ES】Elasticsearch linux 龙晰8操作系统安装
  • Flink分区方式有哪些