python量化学习笔记

with open(path_dst, 'ab') as f:

1、表示文件如果存在,在文件末尾添加二进制数据;不存在会创建一个新的二进制文件用于追加数据

Config = CommonST()Create_string_buffer(config.size)If mode_extract:For row in df_data.intertuples()If row[-2]!=0:Config.struct.pack_into(buffer, 0, *row)F.write(buffer)

2、将数据写入二进制文件

2.1 class CommonST(CommonBase)

# 分笔数据csv合成秒/分钟二进制Def __init__(self):# 源csv文件列信息Self.index_drop = [0,1] + list(range(7,28))Self.columns_tick = [“NOW”,“CJBS”,”AMOUNT”,”VOLUME”]Self.index_time_tick = 2Self.index_now=3Self.index_cjbs=4Self.index_amt=5Self.index_vol = 6Self.dc_resample={‘closed’:’left’,’label’:‘right’}# 目标文件列信息Self.columns = [‘TIME’,‘OPEN’,‘HIGH’,‘LOW’,‘VOLUME’,‘AMOUNT’,‘CJBS’]Self.index_time=0Self.index_float=list(range(4))Self.index_int=list(range(4,7))# 二进制数据结构Self.setStruct(‘I’+4*‘f’+2*‘Q’+’I’)

3、csv转Tick数据

Df_data = df.copy()# 删除不需要的数据Df_data.drop(config.index_drop, axis = 1, inplace=True)# 调整收盘数据时间
t = df_data.loc[df_data.index[-1], config.index_time]If t[-8:] >‘15:00:00’:Df_data.loc[df_data.index[-1],config.index_time] = t[:-8] + ‘15:00:00’# 转换数据类型Df_data[config.index_time]=df_data[config.index_time].apply(Util.UtilDatetime.str2Timestamp).astype(unit32)Df_data[config.index_float] = df_data[config.index_float].astype(float32)Df_data[config.index_int] = df_data[config.index_int].apply(Util.UtilUnit.str2Uint32)

4、删除成交额为0的数据

Df_data = df_data[df_data[config.index_amt].astype(int) != 0]Df_data.reset_index(drop=True, inplace=True)

5、zip用法

Ls_n = [1,2,3]Ls_path_dst=[‘a’,‘b’,‘c’]Result = zip(ls_n, ls_path_dst)List(result) # 输出:[(1,‘a’),(2,‘b’),(3,‘c’)]

6、数字长度不足2位,则左侧填充0

f‘0930{n:0>2}’

7、调整开盘和收盘价格

t = Timestamp(df_data_copy.loc[0, config.index_time_tick])Dc_date = {‘year’: t.year,‘month’: t.month,‘day’:t.day}Time = Timestamp(hour=9,minute=30,second=0,**dc_date)

8、时间序列

Df_data_copy.set_index(config.index_time_tick, inplace=True)Df_data_copy.index = DatetimeIndex(df_data_copy.index)Df_data_copy.columns = config.columns_tick

9、重采样

Df_result[0] = df_data_copy.NOW.resample(**dc_resample).first()

10、增减数据

Time1 = Timestamp(hour=11, minute=30, second=0, **dc_date)Time2 = Timestamp(hour=13,minute=0,second=0,**dc_date)Df_result = df_result.loc[(df_result.index <= time1) | (df_result.index > time2)

11、补充缺失的价格:

For index in range(1, len(df_result)):If isnan(df_result.iloc[index, 3]):Last_close = df_result.iloc[index - 1,3]Df_result.iloc[index, list(range(4))] = last_close

12、转换数据类型:

Df_result.index = df_result.index.to_series().apply(Util.UtilDatetime.str2Timestamp).astype(uint32)Df_result[config.index_float] = df_result[config.index_float].astype(float32)Df_result[config.index_int] = df_result[config.index_int].astype(unit64)

13、合成1分钟数据

① 删除不需要的数据

② 删除成交额为0的数据

③ 获取上一个收盘价

④ 调整开盘数据时间

⑤ 调整收盘数据时间

⑥ 时间序列

⑦ 降采样

⑧ 增减数据

⑨ 补充缺失的价格

⑩ 转换数据类型

返回1T数据

14、

resampleChart(config, path_dst, df_1T, dc_resample):

① 降采样

② 整理数据类型

③ 返回nT数据

15、从1分钟合成n分钟

① 时间序列

② 合成

16、复权

① 全部计算

② 读取除权数据

Read_csv(path_pwr, header=None)

③ 计算除权价格

前复权、后复权、不复权

17、整理分笔csv数据

读取数据

① tick.csv -> tick.bin

分笔csv文件转换为二进制

② tick.csv -> 15S/30S/1T

分笔数据计算秒钟数据和1分钟数据

③ 1T -> nT

1分钟数据合成n分钟数据

④ with0_none -> with0_back/forth

删除成交额为0的数据

⑤ 除权数据

18、主程序

① 更新除权数据

PwrMgr().getPwr()

② 整理分笔数据

Path.join(PATH_FOLDER_TICK_TODAY,market)Listdir(path_folder_tick_today_market)TickProcessProcess(market, path_folder_tick_today_market,ls_file_tick_csv[i:i+300])Process.start()Ls_process.append(process)

③ 新数据替换旧数据

PwrMgr().replacePwr()

19、停止定时任务

# ============停止定时任务============
def produce_stop_bat(pid, name):cmd_stop = f'taskkill /pid {pid} /f'  # 关闭指定进程cmd_del_self = 'del %0'  # 删除自身文件bat_name = f'stop_{name}.bat'with open(bat_name, 'w') as f:f.write(f'{cmd_stop}\n{cmd_del_self}')pid = os.getpid()
myfilename = os.path.split(__file__)[-1].split(".")[0]
produce_stop_bat(pid, myfilename)

20、记录日志

# ============记录日志===============
log_dir = 'log'  # 日志存放文件夹名称
log_path = os.path.join(os.getcwd(), log_dir)
if not os.path.isdir(log_path):os.makedirs(log_path)logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
log_time = time.strftime("%Y-%m-%d_%H-%M-%S", time.localtime(time.time()))
log_path = os.path.join(log_dir, f'{log_time}.log')
main_log_handler = logging.FileHandler(log_path, 'w+', encoding='utf8')
main_log_handler.setLevel(logging.DEBUG)
formatter = logging.Formatter("%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s")
main_log_handler.setFormatter(formatter)
logger.addHandler(main_log_handler)
# ============记录日志===============

21、定时任务

# ============定时任务===============
file_autotask = os.path.join(os.getcwd(), 'autotask(代码).csv')
# print(file_autotask)
sec = 60
while True:datetime_now = datetime.now()weekday_now = str(datetime_now.weekday() + 1)# print(weekday_now)time_now = datetime_now.hour * 60 + datetime_now.minutewith open(file_autotask, 'r', encoding='utf8') as f:ls_row = [row.strip('\r\n').split(',') for row in f.readlines()]for task_name, task_date, task_time, task_path in ls_row:if weekday_now in str(task_date):# if len(weekday_now) != task_date:#     print('\n[Warn]落库异常:' + str(len(task_date)) + '条\n')task_hour, task_min = task_time.split(':')task_time = int(task_hour) * 60 + int(task_min)if time_now == task_time:Popen(rf'python {task_path}')command = rf'python {task_path}'logger.info(f'执行 {task_name}: {command}')time.sleep(sec)
# ============定时任务===============

22、不同模块导入方法

# CommonUtil模块位于D:\1lqm\lqm_test\
module_path = 'D:\\1lqm\\lqm_test\\'
if module_path not in sys.path:sys.path.append(module_path)
from CommonUtil.dateUtil import DateHandler

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

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

相关文章

JAVA的基础面试三

1.何为Spring Bean容器?Spring Bean容器与Spring IOC 容器有什么不同吗? 答&#xff1a;用于创建bean对象,管理bean对象的那个容器 Spring IOC 容器本质上指的的就是Spring Bean容器, Spring Bean容器中最核心一个机制是IOC机制( 控制反转),所以有时候又将springbean容器称之…

视觉空间效应

一、视觉空间效应 概况 视觉空间效应&#xff0c;是人类视觉系统&#xff08;Human Visual System&#xff0c;HVS&#xff09;的一个特点&#xff0c;也称为"视觉距离效应"。即距离观察者更近的目标像素对颜色感知产生更强烈的影响&#xff0c;而距离较远的目标像素…

PSIM仿真DSP28335ADC功能并使用SCI串口模块输出曲线

在使用PSIM 2022 软件仿真DSP28335单片机时&#xff0c;发现里面还有SCI串口打印模块&#xff0c;在仿真软件里面可以看到串口数据&#xff0c;但是将代码下载到单片机上之后&#xff0c;使用串口助手却看不到任何数据&#xff0c;经过一番探索终于发现&#xff0c;串口不是这样…

C语言或C++通过IShellLinkA创建或解析lnk快捷方式(使用char字符数组)

本例程用到的COM接口有IShellLinkA和IPersistFile。 请注意因为函数参数的类型不为BSTR&#xff0c;所以这两个接口可直接传char *或wchar_t *字符串&#xff0c;不需要提前转化为BSTR类型。 C语言的写法&#xff1a; /* 这个程序只能在C编译器下编译成功, 请确保源文件的扩展…

Linux基本常用命令大全(一)

一、基本命令 1.1 关机和重启 关机 shutdown -h now 立刻关机 shutdown -h 5 5分钟后关机 poweroff 立刻关机 重启 shutdown -r now 立刻重启 shutdown -r 5 5分钟后重启 reboot 立刻重启 1.2 帮助命令 –help命令 shutdown --help&#xff1a; ifconfig --help&#xff1a…

Spring Boot的创建和使用

Spring的诞生是为了简化Java程序开发的&#xff0c;而Spring Boot的诞生是为了简化Spring程序开发的。 目录 Spring Boot 的优点 Spring Boot 项目创建 Spring Boot 目录介绍 Spring Boot 运行 Spring Boot 的优点 快速集成框架&#xff0c;Spring Boot 提供了启动添加依赖…

Java毕业设计-基于ssm的学生社团活动管理系统-第82期

获取源码资料&#xff0c;请移步从戎源码网&#xff1a;从戎源码网_专业的计算机毕业设计网站 项目介绍 基于ssm的学生社团活动管理系统&#xff1a;前端 jsp、jquery、ajax&#xff0c;后端 springmvc、spring、mybaties&#xff0c;角色分为管理员、学生、社团、用户&#…

K8s知识点总结_part2

为什么我们会需要 Pod&#xff1f; 容器的本质是一种特殊的进程&#xff0c;如果映射到系统中&#xff0c;容器镜像就是这个系统里的“.exe”安装包。 那么 Kubernetes 呢&#xff1f;Kubernetes 就是操作系统 在一个真正的操作系统里&#xff0c;进程并不是“孤苦伶仃”地独…

Java SE:面向对象(下)

1. static关键字 静态区的特点&#xff1a;静态区里面的每一样东西都是唯一有且仅有一个的&#xff0c;如此时str1 "abc"即此时静态区里面已经创建了字符串abc并将abc地址赋给str1&#xff0c;后面在进行赋值也不会在静态区开辟一串新的"abc" 1.1 static修…

【超简版,代码可用!】【0基础Python爬虫入门——下载歌曲/视频】

安装第三方模块— requests 完成图片操作后输入&#xff1a;pip install requests 科普&#xff1a; get:公开数据 post:加密 &#xff0c;个人信息 进入某音乐网页&#xff0c;打开开发者工具F12 选择网络&#xff0c;再选择—>媒体——>获取URL【先完成刷新页面】 科…

庞加莱猜想与品牌营销:网络集成化生态系统的力量

在数学界&#xff0c;庞加莱猜想一直是一个令人着迷的问题。而今&#xff0c;这一猜想与品牌营销产生了奇妙的联系。本文将结合庞加莱猜想&#xff0c;探讨品牌如何通过网络集成化生态系统实现低成本的市场推广&#xff0c;唤醒需求侧需求并扩展用户圈层。 首先&#xff0c;庞…

软考14-上午题-编译、解释程序翻译阶段

一、编译、解释程序【回顾】 目的&#xff1a;高级程序设计语言&#xff08;汇编语言、高级语言&#xff09;—【翻译】—>机器语言 1-1、编译方式 将高级语言书写的源程序——>目标程序&#xff08;汇编语言、机器语言&#xff09; 包含的工作阶段&#xff1a;词法分…

计算机中丢失VCRUNTIME140_1.dll

去微软官网下载安装 Visual C 下载地址&#xff1a;Latest supported Visual C Redistributable downloads | Microsoft Learn https://aka.ms/vs/17/release/vc_redist.x64.exe Visual Studio 2015、2017、2019 和 2022 下表列出了 Visual Studio 2015、2017、2019 和 2022 …

OSS存储引擎如何使用以及如何添加图片【建议收藏】

Aliyun OSS对象存储&#xff0c;可以用来做文件服务器&#xff0c;存放一些文件&#xff0c;图片等资源&#xff0c;那么我们使用OSS&#xff0c;需要经历以下步骤&#xff1a; 这里就从如何开通OSS服务开始进行&#xff0c;到如何上传一个资源文件到OSS结束。 1、阿里云注册 …

【install命令中的-g, -S, -D参数详细介绍】

install命令中的-g, -S, -D参数详细介绍 1. install命令中的-g, -S, -D参数 1. install命令中的-g, -S, -D参数 install 命令在不同的上下文中有不同的含义&#xff0c;例如在 Unix/Linux 系统中&#xff0c;install 是一个用来复制文件和设置属性的命令&#xff0c;然而&…

贪心算法详解

文章目录 前言一、什么是贪心算法二、贪心算法的特点1.贪心策略的提出2.贪心策略的正确性 三、学习贪心算法的方向总结 前言 在本次文章中我们将会详细介绍贪心算法的相关内容 一、什么是贪心算法 贪心算法&#xff1a;在解决问题时&#xff0c;每一步都选择最优解&#xff0…

Linux:vim的相关知识

目录 vim 是一个较为常见的编译文件的命令操作。 三种模式的区分的作用如下&#xff1a; 命令模式&#xff1a; 插入模式&#xff1a; 进入插入模式的标志&#xff1a;左下角有INSERT 底行模式&#xff1a; 命令模式的常见命令&#xff1a; 底行模式常见命令&#xff1…

初识k8s(概述、原理、安装)

文章目录 概述由来主要功能 K8S架构架构图组件说明ClusterMasterNodekubectl 组件处理流程 K8S概念组成PodPod控制器ReplicationController&#xff08;副本控制器&#xff09;ReplicaSet &#xff08;副本集&#xff09;DeploymentStatefulSet &#xff08;有状态副本集&#…

借助GPT,我是如何帮同事秒解bug

背景 昨天晚上8点多&#xff0c;正准备下班 同事突然跑过来&#xff0c;问我&#xff1a;为什么用aws命令行下载的数据可以正常下载&#xff0c;但是我用Go写的&#xff0c;怎么下载不下来 看他抓耳挠腮&#xff0c;然后又说困扰了很久 我心想这么简单的问题&#xff0c;额。。…

系统性学习vue-vue-router

vue-router 路由的简介SPA路由 路由的基本使用安装引入使用标签式编程式 注意 嵌套(多级)路由路由传参query参数params参数 命名路由路由的props配置router-link的replace属性编程式路由导航路由跳转后退和前进 缓存路由组件两个新的生命周期钩子函数路由守卫全局前置守卫全局后…