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

[量化投资-学习笔记014]Python+TDengine从零开始搭建量化分析平台-Python知识点汇总

以下内容总结了之前章节涉及到的 Python 知识点,看过之前的章节同学,就不用打开了。

1. Restful 访问 TDengine 数据库

知识点:

  • 发送给 TDengine 的 HTTP Body 里面是 SQL 明文,请求方式为 POST。
  • TDenging 返回的结果是 JSON 格式。
  • 如果写入的数据包含中文,那么必须对 SQL 进行 encode("UTF-8")
def request_post(url, sql, user, pwd):try:sql = sql.encode("utf-8")headers = {'Connection': 'keep-alive','Accept-Encoding': 'gzip, deflate, br'}result = requests.post(url, data=sql, auth=HTTPBasicAuth(user,pwd),headers=headers)text=result.content.decode()return textexcept Exception as e:print(e)def request_get(resInfo):load_data = json.loads(resInfo)data = load_data.get("data")return data        

2. SQL 拼接

如果要高效写入 TDengine,需要将多条记录拼接成一条 SQL(SQL 长度不能超过 1MB)。
以下程序会对一个二维数组进行遍历,逐个拼接成一条 SQL 并返回。

def join_sql(dbname,tbname,datalist):sql = 'insert into '+dbname+'.'+tbname+" values"for i in range(len(datalist)):sql = sql + '('for l in range(len(datalist[i])):if l == 0:sql = sql +'"'+str(datalist[i][l])+'"'else:sql = sql + str(datalist[i][l]) if l <= len(datalist[i])-2:sql = sql + ','sql = sql + ')'return sql

3. 多线程/进程

为提过程序的执行效率,可以采用多线程或多进程的方式。
以下程序对数组 flist 按照并发数 threadNum 进行分割,每个子线程/进程对传递的数组进行遍历,对每个值调用 csv_read 函数进行处理。

def thread_func(flist,tnum,list_num):for ll in range(list_num):ii=tnum*list_num+llif ii < len(flist):filename = str(flist[ii][0])csv_read(filename)def multi_thread(flist,wmethod):threads = []if len(flist) < threadNum:for i in range(len(flist)):filename = flist[i][0]csv_read(filename)else:listnum = int(len(flist)/threadNum)+1if wmethod == 'process':for tnum in range(threadNum):  t = multiprocessing.Process(target=thread_func,args=(flist,tnum,listnum))threads.append(t)else:for tnum in range(threadNum):             t = threading.Thread(target=thread_func,args=(flist,tnum,listnum))threads.append(t)for t in threads:  t.start()for t in threads:  t.join()

4. 绘图

绘图需要使用 matplotlib 模块。
知识点:

  • 绘制多个子图 plt.subplot(3, 1, 1)
  • 绘制曲线 plt.plot(df.index, df['close'])
  • 绘制柱状图 plt.bar(range(len(profits)),profits)
  • x轴名称 plt.xlabel('tdate')
  • x轴名称 plt.ylabel('Price')

以下示例在一个图片里面绘制了收盘价、MACD、收益曲线三个子图。

plt.figure(figsize=(12, 8))
plt.subplot(3, 1, 1)
plt.plot(df.index, df['close'])
plt.title(fcode)
plt.xlabel('tdate')
plt.ylabel('Price')plt.subplot(3, 1, 2)
plt.title("MACD")
plt.plot(df['DIF'],'r',linewidth=1.0,label='DIF')
plt.plot(df['DEA'],'y',linewidth=1.0,label='DEA')
plt.legend()
plt.grid()plt.subplot(3, 1, 3)
plt.title("收益曲线")
plt.plot(profits,'r',linewidth=1.0,label='Profit')
plt.bar(range(len(profits)),profits)
plt.ylabel('RMB')
plt.legend()
plt.grid()plt.tight_layout()
plt.show()

如果要显示中文,则需要进行如下设置:

matplotlib.rcParams['font.sans-serif'] = ['SimHei']
matplotlib.rcParams['font.family']='sans-serif'
matplotlib.rcParams['axes.unicode_minus'] = False  

相关文章:

[量化投资-学习笔记014]Python+TDengine从零开始搭建量化分析平台-Python知识点汇总

以下内容总结了之前章节涉及到的 Python 知识点&#xff0c;看过之前的章节同学&#xff0c;就不用打开了。 1. Restful 访问 TDengine 数据库 知识点&#xff1a; 发送给 TDengine 的 HTTP Body 里面是 SQL 明文&#xff0c;请求方式为 POST。TDenging 返回的结果是 JSON 格…...

[论文分享] Never Mind the Malware, Here’s the Stegomalware

Never Mind the Malware, Here’s the Stegomalware [IEEE Security & Privacy 2022] Luca Caviglione | National Research Council of Italy Wojciech Mazurczyk | Warsaw University of Technology and FernUniversitt in Hagen 近年来&#xff0c;隐写技术已逐渐被观…...

代号:408 —— 1000道精心打磨的计算机考研题

文章目录 &#x1f4cb;前言&#x1f3af;计算机科学与技术专业介绍&#xff08;14年发布&#xff09;&#x1f9e9;培养目标&#x1f9e9;毕业生应具备的知识和能力&#x1f9e9;主要课程 &#x1f3af;代号&#xff1a;408&#x1f525;文末送书&#x1f9e9;有什么优势&…...

《QT从基础到进阶·十六》QT实现客户端和服务端的简单交互

QT版本&#xff1a;5.15.2 VS版本&#xff1a;2019 客户端程序主要包含三块&#xff1a;连接服务器&#xff0c;发送消息&#xff0c;关闭客户端 服务端程序主要包含三块&#xff1a;打开消息监听&#xff0c;接收消息并反馈&#xff0c;关闭服务端 1、先打开服务端监听功能 …...

行业追踪,2023-11-13

自动复盘 2023-11-13 凡所有相&#xff0c;皆是虚妄。若见诸相非相&#xff0c;即见如来。 k 线图是最好的老师&#xff0c;每天持续发布板块的rps排名&#xff0c;追踪板块&#xff0c;板块来开仓&#xff0c;板块去清仓&#xff0c;丢弃自以为是的想法&#xff0c;板块去留让…...

开放领域对话系统架构

开放领域对话系统是指针对非特定领域或行业的对话系统&#xff0c;它可以与用户进行自由的对话&#xff0c;不受特定领域或行业的知识和规则的限制。开放领域对话系统需要具备更广泛的语言理解和生成能力&#xff0c;以便与用户进行自然、流畅的对话。 与垂直领域对话系统相比…...

终端神器:tmux

安装tmux简单使用自己的理解&#xff08;小白专属&#xff09; 使用的初衷&#xff1a; 在Linux终端下&#xff0c;由于session&#xff08;会话&#xff09;和windows&#xff08;窗口&#xff09;是绑定一起的&#xff0c;你打开一个终端的黑窗口就是打开一个会话&#xff0c…...

Elasticsearch学习(一)

ElasticSearch学习&#xff08;一&#xff09; 1 什么是Elasticsearch 1.什么是搜索&#xff1f; 百度&#xff1a;我们比如说想找寻任何信息时候就会上百度上搜索一下 比如说&#xff1a;电影、图片、小说等等…&#xff08;提到搜索的第一印象&#xff09; 百度 &#x…...

CSS3的常见边框汇总

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>CSS3 边框</title><style>body, ul, li, dl, dt, dd, h1, h2, h3, h4, h5 {margin: 0;padding: 0;}body {background-color: #F7F7F7;}.wr…...

酷柚易汛ERP-购货订单操作指南

1、应用场景 先下购货订单&#xff0c;收货入库后生成购货单。 2、主要操作 2.1 新增购货订单 打开【购货】-【购货订单】新增购货订单。&#xff08;*为必填项&#xff0c;其他为选填&#xff09; ① 录入供应商&#xff1a;点击供应商字段框的 &#xff0c;在弹框中选择供…...

【数据仓库】数仓分层方法详解与层次调用规范

文章目录 一. 数仓分层的意义1. 清晰数据结构。2. 减少重复开发3. 方便数据血缘追踪4. 把复杂问题简单化5. 屏蔽原始数据的异常6. 数据仓库的可维护性 二. 如何进行数仓分层&#xff1f;1. ODS层2. DW层2.1. DW层分类2.2. DWD层2.3. DWS 3. ADS层 4、层次调用规范 一. 数仓分层…...

记一次线上问题引发的对 Mysql 锁机制分析

背景 最近双十一开门红期间组内出现了一次因 Mysql 死锁导致的线上问题&#xff0c;当时从监控可以看到数据库活跃连接数飙升&#xff0c;导致应用层数据库连接池被打满&#xff0c;后续所有请求都因获取不到连接而失败 整体业务代码精简逻辑如下&#xff1a; Transaction p…...

Android 工厂模式距离传感器逻辑优化

Android 工厂模式距离传感器逻辑优化 接到客户反馈提到距离传感器校准完毕之后&#xff0c;每次测试完成界面都会弹出“请点击校准按钮进行校准&#xff01;”Toast弹窗&#xff0c;需要对弹窗的显示逻辑进行优化&#xff0c;即只让其在首次进入距离传感器测试界面时弹出&#…...

Dell笔记本电脑 启动时提示解决

https://www.dell.com/support/kbdoc/en-us/000139731/what-the-headless-operation-mode-active-post-message-means-and-how-to-stop-it-appearing-during-start-up dell官方解释&#xff1a; 提示来自于BIOS/UEFI固件中POST Behaviar&#xff0c;只要打开了忽略警告、错误…...

【人工智能Ⅰ】7-KNN 决策树

【人工智能Ⅰ】7-KNN & 决策树 7-1 KNN&#xff08;K near neighbour&#xff09; 思想&#xff1a;一个样本与数据集中的k个样本最相似&#xff0c;若这k个样本大多数属于某类别&#xff0c;则该个样本也属于这类别 距离度量 样本相似性用欧氏距离定义 L p ( x i , x…...

【LeetCode】26. 删除有序数组中的重复项

26. 删除有序数组中的重复项 难度&#xff1a;简单 题目 给你一个 非严格递增排列 的数组 nums &#xff0c;请你原地 删除重复出现的元素&#xff0c;使每个元素 只出现一次 &#xff0c;返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素…...

K8S知识点(八)

&#xff08;1&#xff09;实战入门-Label 通过标签实现Pod的区分&#xff0c;说白了就是一种标签选择机制 可以使用命令是否加了标签&#xff1a; 打标签&#xff1a; 更新标签&#xff1a; 筛选标签&#xff1a; 修改配置文件&#xff0c;重新创建一个pod 筛选&#xff1…...

25.4 MySQL 函数

1. 函数的介绍 1.1 函数简介 在编程中, 函数是一种组织代码的方式, 用于执行特定任务. 它是一段可以被重复使用的代码块, 通常接受一些输入(参数)然后返回一个输出. 函数可以帮助开发者将大型程序分解为更小的, 更易于管理的部分, 提高代码的可读性和可维护性.函数在编程语言…...

Unity 下载Zip压缩文件并且解压缩

1、Unity下载Zip压缩文件主要使用UnityWebRequest类。 可以参考以下方法&#xff1a; webRequest UnityWebRequest.Get(Path1); //压缩文件路径webRequest.timeout 60;webRequest.downloadHandler new DownloadHandlerBuffer();long fileSize GetLocalFileSize(Path2); …...

c++11新特性篇-委托构造函数和继承构造函数

C11引入了委托构造函数&#xff08;Delegating Constructor&#xff09;和C11及后续标准引入了继承构造函数&#xff08;Inheriting Constructor&#xff09;两个特性。 1.委托构造函数 委托构造函数是C11引入的一个特性&#xff0c;它允许一个构造函数调用同一类的另一个构造…...

Retinaface+CurricularFace模型部署实战:Windows11环境配置全攻略

RetinafaceCurricularFace模型部署实战&#xff1a;Windows11环境配置全攻略 想在Windows11上快速搭建人脸识别系统却苦于环境配置&#xff1f;本文手把手带你避开所有坑&#xff0c;30分钟完成RetinafaceCurricularFace的完整部署。 1. 环境准备&#xff1a;搞定CUDA和cuDNN …...

OpenClaw资源监控:Qwen3-14b_int4_awq任务执行性能分析

OpenClaw资源监控&#xff1a;Qwen3-14b_int4_awq任务执行性能分析 1. 为什么需要关注OpenClaw资源监控 上周我在本地部署了Qwen3-14b_int4_awq模型&#xff0c;准备用OpenClaw实现自动化内容处理工作流。刚开始运行几个简单任务时一切正常&#xff0c;直到尝试处理一个包含2…...

**云迁移实战:基于Python自动化脚本实现从本地到AWS的无缝迁移**在当前数字化转型浪潮中,**云迁移已成为企业架构升级的核

云迁移实战&#xff1a;基于Python自动化脚本实现从本地到AWS的无缝迁移 在当前数字化转型浪潮中&#xff0c;云迁移已成为企业架构升级的核心路径之一。无论是为了提升弹性扩展能力、降低运维成本&#xff0c;还是增强灾备容灾水平&#xff0c;将传统部署环境迁移到云端都是大…...

OpenClaw硬件适配:Qwen3-32B镜像在不同显卡的性能对比

OpenClaw硬件适配&#xff1a;Qwen3-32B镜像在不同显卡的性能对比 1. 测试背景与动机 最近在本地部署OpenClaw时遇到一个实际问题&#xff1a;当对接Qwen3-32B这类大模型时&#xff0c;不同显卡的表现差异巨大。我的开发机配置是RTX3060 12GB&#xff0c;而同事的机器是RTX40…...

Simulink仿真避坑指南:三相异步电机调压调速,你的转速波形为什么震荡不稳?

Simulink三相异步电机调压调速实战&#xff1a;从波形异常到稳定输出的深度调优 当你在Simulink中搭建完三相异步电机调压调速模型&#xff0c;满心期待地点击"运行"按钮&#xff0c;却发现转速波形像过山车一样上下震荡——这种挫败感我深有体会。作为一名经历过无数…...

MySQL后端开发核心知识点

一、存储引擎&#xff08;只重点 InnoDB&#xff09;MySQL 5.5 以后默认引擎是 InnoDB&#xff0c;也是现代企业项目唯一使用的引擎。InnoDB 特点&#xff1a;支持 事务支持 行级锁&#xff0c;并发性能好支持 外键&#xff08;实际开发基本不用&#xff09;基于 B 树索引结构依…...

Perl环境变量设置全攻略:从银河麒麟V10到CentOS的通用配置方法

Perl环境变量跨平台配置实战指南 在混合云和异构系统环境中&#xff0c;Perl作为系统管理和应用开发的重要工具&#xff0c;其环境配置的一致性直接影响脚本的跨平台运行能力。本文将深入探讨从银河麒麟V10到CentOS等主流Linux发行版的Perl环境变量配置方法论&#xff0c;帮助运…...

效率提升不可想象!传统程序员转型AI数字化办公专家,如何靠提效工具实现升职

不是加班感动老板&#xff0c;而是工具改变产出01. 一个真实的职场跃迁张恒&#xff0c;35岁&#xff0c;某传统IT部门的Java开发&#xff0c;月薪28K。他技术扎实&#xff0c;但部门不核心&#xff0c;干的都是“增删改查报表导出”。每年晋升答辩&#xff0c;评委都说“表现不…...

代码写不动了?传统程序员不转型AI工程化提示词专家,将被AI助手彻底平替

2026年开年&#xff0c;全球科技圈的裁员潮撕开了行业变革的残酷真相&#xff1a;甲骨文一天内裁掉3万名员工&#xff0c;其中绝大多数是从事基础编码、数据库维护的传统程序员。取代他们的&#xff0c;正是曾经被视为“辅助工具”的AI助手。值得关注的是&#xff0c;在这场行业…...

STM32驱动X-NUCLEO-IHM02A1实现工业级步进电机控制

1. X-NUCLEO-IHM02A1 驱动开发深度解析&#xff1a;面向工业级步进电机控制的 STM32 底层实现 X-NUCLEO-IHM02A1 是意法半导体&#xff08;STMicroelectronics&#xff09;推出的高性能双通道步进电机驱动扩展板&#xff0c;专为 STM32 Nucleo 开发平台设计。该板基于 STSPIN22…...