[量化投资-学习笔记004]Python+TDengine从零开始搭建量化分析平台-EMA均线
在之前的文章中用 Python 直接计算的 MA 均线,但面对 EMA 我认怂了。
Python+TDengine从零开始搭建量化分析平台-MA均线的多种实现方式
高数是我们在大学唯一挂过的科。这次直接使用 Pandas 库的 DataFrame.ewm 函数,便捷又省事。
并且用 Pandas 直接对之前 MA 均线进行改写。
我一直同意:I would rather be vaguely right than precisely wrong.
EMA 公式:
EMA(t)=平滑常数*当前价格+(1-平滑常数)*EMA(t-1)
目录
- 1. 获取数据
- 2.计算均线
- 3. 绘制图形
- 题外话
- 1. 均线的周期
- 2. 均线的使用
1. 获取数据
还是使用 Restful 方式从 TDengine 查询数据,并转换成 DataFrame 格式。想看获取数据完整代码的同学,可以翻我之前的笔记。
##SQL
st = '2022-08-01'
et = '2022-10-01'
sql = 'select last(tdate),last(close) from trade_data_a.tdata where fcode="000001" and tdate>="'+st+'" and tdate<="'+et+'"' +' interval(1d) '## 通过Restful 从 TDengine 获取交易数据
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 check_return(result):datart = json.loads(result).get("code")if str(datart) == '0':chkrt = 'succ'else:chkrt = 'error' return chkrt## 将返回的 Json 转换为 DataFrame
def request_get_d(resInfo):load_data = json.loads(resInfo)data = load_data.get("data")df = pd.DataFrame(data)df.rename(columns={0:'tdate',1:'close'},inplace=True)return df
2.计算均线
不得不说,用别人的轮子就是方便。
if __name__ == '__main__':rt = request_post(tdurl,sql,username,password)scode = check_return(rt)if scode != 'error':df = request_get_d(rt)ema5 = pd.DataFrame.ewm(df['close'],span=5).mean() ema10 = pd.DataFrame.ewm(df['close'],span=10).mean()
3. 绘制图形
plt.title("EMA")plt.plot(ema5,'g',linewidth=1.0,label='EMA5')plt.plot(ema10,'r',linewidth=1.0,label='EMA10')plt.legend()plt.grid()plt.show()
看起来比上次计算 MA 均线简单多了,毕竟是站在别人的肩膀上嘛。

题外话
历史数据的均线基本不会变化,计算好以后可以直接写到 TDengine 里面,然后在 Grafana 中展示。
这部分的实现放在下个笔记。
1. 均线的周期
绘制均线必须要指定周期,通常使用的周期为5、10、20,为什么呢??
因为通常一周的交易日是5天,其他为5的倍数,那么这个周期是否能够准确趋势的变化呢?
有句话说的很好,技术分析总是在不断的自我验证中走向灭亡。
因此均线周期的选择并非一成不变的,通过修改周期,可能会获得不同的视角。
2. 均线的使用
仔细观察就会发现:均线相较于实际数据数据是滞后的,周期越长滞后越严重。MA 均线比 EMA 均线更加滞后,因为 EMA中 最近的数据具有较大的权重。
因此,均线只是对历史价格趋势的描述,而非预测。这点非常重要。也就是说,均线是用来确认趋势,对价格走势进行验证的。
相关文章:
[量化投资-学习笔记004]Python+TDengine从零开始搭建量化分析平台-EMA均线
在之前的文章中用 Python 直接计算的 MA 均线,但面对 EMA 我认怂了。 PythonTDengine从零开始搭建量化分析平台-MA均线的多种实现方式 高数是我们在大学唯一挂过的科。这次直接使用 Pandas 库的 DataFrame.ewm 函数,便捷又省事。 并且用 Pandas 直接对之…...
KaiwuDB 获山东省工信厅“信息化应用创新优秀解决方案”奖
10月23日,山东省工信厅正式公示《2023年山东省信息化应用创新典型应用案例及优秀解决方案名单》,面向全省、全国重点推荐山东省技术水平先进、应用示范效果突出、产业带动性强的信息化解决方案及应用实践,对于进一步激发山东省信息技术产业创…...
Python-常用的量化交易代码片段
算法交易正在彻底改变金融世界。通过基于预定义标准的自动化交易,交易者可以以闪电般的速度和比以往更精确的方式执行订单。如果您热衷于深入了解算法交易的世界,本指南提供了帮助您入门的基本代码片段。从获取股票数据到回溯测试策略,我们都能满足您的需求! 1. 使用 YFina…...
Netty优化-rpc
Netty优化-rpc 1.3 RPC 框架1)准备工作 1.3 RPC 框架 1)准备工作 这些代码可以认为是现成的,无需从头编写练习 为了简化起见,在原来聊天项目的基础上新增 Rpc 请求和响应消息 Data public abstract class Message implements …...
【Docker 内核详解】cgroups 资源限制(一):概念、作用、术语
cgroups 资源限制(一):概念、作用、术语 1.cgroups 是什么2.cgroups 的作用3.cgroups 术语表 当谈论 Docker 时,常常会聊到 Docker 的实现方式。很多开发者都知道,Docker 容器本质上是宿主机上的进程(容器所…...
MATLAB——一维小波的多层分解
%% 学习目标:一维小波的多层分解 clear all; close all; load noissin.mat; xnoissin; [C,L]wavedec(x,3,db4); % 3层分解,使用db4小波 [cd1,cd2,cd3]detcoef(C,L,[1,2,3]); % 使用detcoef函数获取细节系数 ca3appcoef(C,L,db4,3); …...
C++的拷贝构造函数
目录 拷贝构造函数一、为什么用拷贝构造二、拷贝构造函数1、概念2、特征1. 拷贝构造函数是构造函数的一个重载形式。2. 拷贝构造函数的参数3. 若未显式定义,编译器会生成默认的拷贝构造函数。4. 拷贝构造函数典型调用场景 拷贝构造函数 一、为什么用拷贝构造 日期…...
【手机端远程连接服务器】安装和配置cpolar+JuiceSSH:实现手机端远程连接服务器
文章目录 1. Linux安装cpolar2. 创建公网SSH连接地址3. JuiceSSH公网远程连接4. 固定连接SSH公网地址5. SSH固定地址连接测试 处于内网的虚拟机如何被外网访问呢?如何手机就能访问虚拟机呢? cpolarJuiceSSH 实现手机端远程连接Linux虚拟机(内网穿透,手机端连接Linux虚拟机) …...
Jupyter Notebook的使用
文章目录 Jupyter Notebook一、Jupyter Notebook是什么?二、使用步骤1.安装Miniconda2.安装启动**Jupyter Notebook**3.一些问题 三、Jupyter Notebook的操作1.更换解释器2.在指定的文件夹中打开3 运行的快捷键 四.报错解决1.画图的时候出现报错2.画图的时候空白3.p…...
vue 使用vue-office预览word、excel,pdf同理
在此,我只使用了docx和excel, pdf我直接使用的iframe进行的展示就不作赘述了 //docx文档预览组件 npm install vue-office/docx//excel文档预览组件 npm install vue-office/excel//pdf文档预览组件 npm install vue-office/pdf如果是vue2.6版本或以下还…...
【Spring Boot 源码学习】RedisAutoConfiguration 详解
Spring Boot 源码学习系列 RedisAutoConfiguration 详解 引言往期内容主要内容1. Spring Data Redis2. RedisAutoConfiguration2.1 加载自动配置组件2.2 过滤自动配置组件2.2.1 涉及注解2.2.2 redisTemplate 方法2.2.3 stringRedisTemplate 方法 总结 引言 上篇博文࿰…...
Linux中如何进行粘贴复制
因为CTRLC在Linux中具有特定的含义:终止当前操作 xshell提供了CTRLinsert(复制)/shiftinsert(粘贴) 上述快捷键在Windows中依旧支持,...
多输入多输出 | Matlab实现k-means-LSTM(k均值聚类结合长短期记忆神经网络)多输入多输出组合预测
多输入多输出 | Matlab实现k-means-LSTM(k均值聚类结合长短期记忆神经网络)多输入多输出组合预测 目录 多输入多输出 | Matlab实现k-means-LSTM(k均值聚类结合长短期记忆神经网络)多输入多输出组合预测预测效果基本描述程序设计参…...
学习笔记3——JVM基础知识
学习笔记系列开头惯例发布一些寻亲消息 链接:https://baobeihuijia.com/bbhj/contents/3/196593.html JVM(Write Once,Run Anywhere) 以下是一些学习时有用到的资料,只学习了JVM的基础知识,对JVM整体进…...
图像处理:图片二值化学习,以及代码中如何实现
目录 1、了解下图片二值化的含义 2、进行图像二值化处理的方法 3、如何选择合适的阈值进行二值化 4、实现图片二值化(代码) (1)是使用C和OpenCV库实现: (2)纯C代码实现,不要借…...
如果你点击RabbitMQ Service - start了,但http://localhost:15672/#/还是访问不了,那么请看这篇博客!
RabbitMQ 服务启动失败问题小结(Windows环境)_rabbitmq启动不了-CSDN博客...
Shell 脚本学习 day01
release node v1 初始版本 #定义备份目录#当前时间#检查备份目录是否存在,不存在需要创建# 查找并备份 .xxx 文件# 提取文件名(不包含路径部分)# 构建备份文件名# 将查出来的.xxx文件拷贝到备份目录#!/bin/bash # context 备份根目录下所有.…...
esp32 rust linux
官方文档:https://esp-rs.github.io/book/introduction.html 安装 rust curl --proto https --tlsv1.2 -sSf https://sh.rustup.rs | sh 工具 risc: rustup toolchain install nightly --component rust-src # nightly 支持 riscv或使用安装工具同时…...
一文了解Elasticsearch
数据分类 数据按数据结构分类主要有三种:结构化数据、半结构化数据和非结构化数据。 结构化数据 结构化数据具有明确定义数据模型和格式的数据类型。 特点: 数据具有固定的结构和模式。 数据项明确定义数据类型和长度。 适合用于数据查询、过滤和分…...
一篇文章认识【性能测试】
一、 性能测试术语解释 1. 响应时间 响应时间即从应用系统发出请求开始,到客户端接收到最后一个字节数据为止所消耗的时间。响应时间按软件的特点再可以细分,如对于一个 C/S 软件的响应时间可以细分为网络传输时间、应用服务器处理时间、数据库服务器…...
理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端
🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...
vue3 字体颜色设置的多种方式
在Vue 3中设置字体颜色可以通过多种方式实现,这取决于你是想在组件内部直接设置,还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法: 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...
React19源码系列之 事件插件系统
事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...
sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!
简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求,并检查收到的响应。它以以下模式之一…...
使用LangGraph和LangSmith构建多智能体人工智能系统
现在,通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战,比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...
GitHub 趋势日报 (2025年06月06日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 590 cognee 551 onlook 399 project-based-learning 348 build-your-own-x 320 ne…...
解读《网络安全法》最新修订,把握网络安全新趋势
《网络安全法》自2017年施行以来,在维护网络空间安全方面发挥了重要作用。但随着网络环境的日益复杂,网络攻击、数据泄露等事件频发,现行法律已难以完全适应新的风险挑战。 2025年3月28日,国家网信办会同相关部门起草了《网络安全…...
STM32---外部32.768K晶振(LSE)无法起振问题
晶振是否起振主要就检查两个1、晶振与MCU是否兼容;2、晶振的负载电容是否匹配 目录 一、判断晶振与MCU是否兼容 二、判断负载电容是否匹配 1. 晶振负载电容(CL)与匹配电容(CL1、CL2)的关系 2. 如何选择 CL1 和 CL…...
在golang中如何将已安装的依赖降级处理,比如:将 go-ansible/v2@v2.2.0 更换为 go-ansible/@v1.1.7
在 Go 项目中降级 go-ansible 从 v2.2.0 到 v1.1.7 具体步骤: 第一步: 修改 go.mod 文件 // 原 v2 版本声明 require github.com/apenella/go-ansible/v2 v2.2.0 替换为: // 改为 v…...
