[量化投资-学习笔记008]Python+TDengine从零开始搭建量化分析平台-CCI和ATR

目录

  • 1. 指标简介
    • CCI
    • ATR
  • 2. 程序编写
  • 题外话

1. 指标简介

将这两个指标放在一起,一方面是因为这两个指标都属于摆动指数,可以反应市场的活跃度。

另一方面是因为CCI和ATR与之前提到的EMA,MACD,布林带的三个指标的计算基础不同。之前的三个指标都是以收盘价作为计算基础,而CCI和ATR是以收盘价、最高价、最低价三个价格最为计算基础。

下面分别进行介绍。

CCI

CCI 指标(Commodity Channel Index / CCI)全称为商品通道指数,是一种用于衡量价格趋势强弱的震荡类指标。

CCI 旨在更全面地分析一定时间段内的综合价格走势,更好地反映价格的变化和波动。与其他震荡指标不同,CCI 不仅以收盘价为参考,还使用了最高价、最低价和收盘价的平均值作为计算基础。

计算公式:

  1. 计算典型价格(TP):TP =(最高价 + 最低价 + 收盘价)/ 3
  2. 计算典型价格移动平均线(TPSMA):TPSMA = (TP1 + TP2 + TP3 + … + TPn) / n
  3. 计算均值偏差(Mean Deviation):MD = ( |TP1 - TPSMA1| +…+ |TPn - TPSMAn| ) / n
  4. 计算CCI指数:CCI = ( TPt - TPSMAt )/ ( 0.015 X MDt ),其中t代表当前K线上的数据,0.015用于将70%到80%的CCI数据归纳在100和-100之间.

ATR

ATR指标(Average True Range / ATR)是一种用于衡量资产价格波动的指标。

ATR指标的计算方法:

  1. 计算波动幅度TR(True Range):max(当天最高价和最低价之间的距离,前一天收盘价和当天最高价之间的距离,前一天收盘价和当天最低价之间的距离)。
  2. 取一定时间周期内(通常默认为14个交易日)TR的平均值,即可得到平均真实波动幅度ATR。

ATR的波动幅度概念可以显示出交易者的期望和市场交易的活跃程度。波动率越高,ATR值越高;反之,波动率越低,ATR值也越低。

2. 程序编写

由俭入奢,由易奢入俭难。自从用了 AI,就不想自己写代码了。

关门放 DevChat。
在这里插入图片描述

对程序进行修改,除了地址、用户名密码、数据库、SQL外,需要调整REstful查询方式。

response = requests.post(query_url, data=query, auth=(user, password))
data = json.loads(response.content.decode())

TDengine 查询方面需要做出几项修改:

  1. Restful 需要使用 POST 方式;
  2. Body 中的内容是 SQL 明文;
  3. 返回的结果是 json 格式。

为方便图形查看,添加收盘价图形,并在 CCI 图形上添加趋势线来区分超买超卖区域。

import requests
import pandas as pd
import numpy as np
import json
from matplotlib import pyplot as plt# 设置TDengine数据库的连接信息
host = 'http://10.7.7.14'
port = '6041'
user = 'root'
password = 'taosdata'
database = 'trade_data_c'# 从TDengine查询一段时间内的收盘价
query_url = f"{host}:{port}/rest/sql/{database}"
query = "select tdate,close,high,low from trade_data_c.tdata where fcode='000001' and tdate>= '2022-03-01' AND tdate <= '2023-02-28'"
response = requests.post(query_url, data=query, auth=(user, password))
data = json.loads(response.content.decode())
df = pd.DataFrame(data['data'], columns=['tdate', 'close','high','low'])
df['tdate'] = pd.to_datetime(df['tdate'])
df.set_index('tdate', inplace=True)# 计算ATR
df['high - low'] = df['close'].diff().abs()
df['high - close_pre'] = (df['high'] - df['close'].shift()).abs()
df['low - close_pre'] = (df['low'] - df['close'].shift()).abs()
df['TR'] = df[['high - low', 'high - close_pre', 'low - close_pre']].max(axis=1)
df['ATR'] = df['TR'].rolling(window=14).mean()# 计算CCI
tp = (df['high'] + df['low'] + df['close']) / 3
ma = tp.rolling(window=20).mean()
md = tp.rolling(window=20).std()
df['CCI'] = (tp - ma) / (0.015 * md)# 绘制ATR和CCI图形
plt.figure(figsize=(12, 8))
plt.subplot(3, 1, 1)
plt.plot(df.index, df['close'])
plt.title('CLOSE')
plt.xlabel('Date')
plt.ylabel('Value')plt.subplot(3, 1, 2)
plt.plot(df.index, df['ATR']*10)
plt.title('ATR')
plt.xlabel('Date')
plt.ylabel('Value(x10)')plt.subplot(3, 1, 3)
plt.plot(df.index, df['CCI'])
plt.axhline(y=0,color='red',linestyle='--')
plt.axhline(y=100,color='red',linestyle='--')
plt.axhline(y=-100,color='red',linestyle='--')
plt.title('CCI')
plt.xlabel('Date')
plt.ylabel('Value')plt.tight_layout()
plt.show()

在这里插入图片描述
仔细想了想,我做的这些修改是否都可以由AI自动完成呢?

题外话

相比于只使用收盘价,采用更多的价格理论上应该更能贴近真实的市场。

但事实却不一定如此,有时最高价、最低价只是市场上的噪音,不应该考虑在内。

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

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

相关文章

坐标系转换(仅作记载)

一.极坐标转换为普通坐标系 参考&#xff1a;极坐标方程与直角坐标方程的互化 - 知乎 (zhihu.com) 公式&#xff1a;&#xff08;无需考虑象限引起的正负问题&#xff09; 普通坐标系转换为极坐标系 参考&#xff1a; 极坐标怎么与直角坐标系相互转化&#xff1f; - 知乎 (zh…

Docker本地镜像发布到阿里云或私有库

本地镜像发布到阿里云流程 &#xff1a; 1.自己生成个要传的镜像 2.将本地镜像推送到阿里云: 阿里云开发者平台:开放云原生应用-云原生&#xff08;Cloud Native&#xff09;-云原生介绍 - 阿里云 2.1.创建仓库镜像&#xff1a; 2.1.1 选择控制台&#xff0c;进入容器镜像服…

如何在Linux上部署1Panel运维管理面板并远程访问内网进行操作

文章目录 前言1. Linux 安装1Panel2. 安装cpolar内网穿透3. 配置1Panel公网访问地址4. 公网远程访问1Panel管理界面5. 固定1Panel公网地址 前言 1Panel 是一个现代化、开源的 Linux 服务器运维管理面板。高效管理,通过 Web 端轻松管理 Linux 服务器&#xff0c;包括主机监控、…

广和通5G模组FM650助力阿里云打造无影魔方Pro

随着云基础设施的完善及云电脑体验的不断优化&#xff0c;越来越多的个人和企业选择无影云电脑进行办公。基于云原生的云网端技术架构&#xff0c;无影云电脑相比传统PC&#xff0c;具有弹性、安全、保障个人数据等产品优势。 10月31日&#xff0c;阿里云在杭州云栖大会上宣布…

RSA 2048位算法的主要参数N,E,P,Q,DP,DQ,Qinv,D分别是什么意思 哪个是通常所说的公钥与私钥 -安全行业基础篇5

非对称加密算法RSA 在RSA 2048位算法中&#xff0c;常见的参数N、E、P、Q、DP、DQ、Qinv和D代表以下含义&#xff1a; N&#xff08;Modulus&#xff09;&#xff1a;模数&#xff0c;是两个大素数P和Q的乘积。N的长度决定了RSA算法的安全性。 E&#xff08;Public Exponent&a…

原神游戏干货分享:探索璃月的宝箱秘密,提高游戏资源获取效率!

《原神》是一款备受玩家喜爱的开放世界冒险游戏&#xff0c;而在游戏中获取资源是提升角色实力的重要途径。在这篇实用干货分享中&#xff0c;我们将介绍一些探索璃月地区的宝箱秘密&#xff0c;帮助你提高游戏资源获取的效率。 首先&#xff0c;璃月地区的宝箱分为普通宝箱和精…

本地部署企业邮箱,让企业办公更安全高效

随着信息化时代的到来&#xff0c;企业邮箱几乎成了企业办公的标配&#xff0c;承载着企业业务往来和办公协同的重要职能。基于安全性、个性化需求、系统集成等方面的需要&#xff0c;许多企业选择本地部署企业邮箱&#xff0c;本地化部署不仅能有效保障企业信息安全的同时&…

家用工作站方案:ThinkBook 14 2023 版

本篇文章聊聊今年双十一&#xff0c;我新购置的家用工作站设备&#xff1a;ThinkBook 14 2023&#xff0c;一台五千元价位&#xff0c;没有显卡的笔记本。我为什么选择它&#xff0c;它又能做些什么。 写在前面 2021 年年中的时候&#xff0c;我写过一篇《廉价的家用工作站方…

React向组件内部动态传入带内容的结构--props

children props&#xff1a;通过组件标签体传入结构 <A><B>xxx</B> </A> {this.props.children}render props&#xff1a;通过组件标签属性传入结构&#xff0c;一般用render函数属性 <A render{data> <C data{data}></C>}></…

5 Tensorflow图像识别(下)模型构建

上一篇&#xff1a;4 Tensorflow图像识别模型——数据预处理-CSDN博客 1、数据集标签 上一篇介绍了图像识别的数据预处理&#xff0c;下面是完整的代码&#xff1a; import os import tensorflow as tf# 获取训练集和验证集目录 train_dir os.path.join(cats_and_dogs_filter…

SQL Server SSIS ETL job执行相关操作

创建SSIS项目 Excel导入SQL Server 构建Excel源 配置Excel源信息 配置SQL Server目标 双击“ADO NET目标” job执行 新建job 右键“SQL Server代理”的“作业”&#xff0c;点击“新建作业”&#xff0c;弹出“新建作业”的选项页 首先是“常规”选项页&#xff0c;…

50代码审计-PHP无框架项目SQL注入挖掘

代码设计分为有框架和无框架 挖掘技巧&#xff1a;随机挖掘&#xff0c;定点挖掘&#xff0c;批量挖掘&#xff08;用工具帮助扫描探针&#xff0c;推荐工具&#xff1a;fortify&#xff0c;seay系统&#xff09;。 1.教学计划&#xff1a; ---审计项目漏洞 Demo->审计思…

卡尔曼滤波EKF

目录 一、概述 二、卡尔曼滤波的5个公式 三、应用案例&#xff1a;汽车运动 四、应用案例&#xff1a;温度估计 五、总结 一、概述 初学者对于卡尔曼滤波5个公式有点懵&#xff0c;本文先接地气地介绍5个公式&#xff0c;然后举两个常用例子加强理解&#xff0c;同时附有M…

微服务中配置文件(YAML文件)和项目依赖(POM文件)的区别与联系

实际上涉及到了微服务架构中的两个重要概念&#xff1a;服务间通信和项目依赖管理。在微服务架构中&#xff0c;一个项目可以通过两种方式与另一个项目建立依赖关系&#xff1a;通过配置文件&#xff08;如YAML文件&#xff09;和通过项目依赖&#xff08;如POM文件&#xff09…

Excel 转 Json 、Node.js实现(应用场景:i18n国际化)

创作灵感来源于在线转换是按照换行符去转换excel内容换行符后很难处理 本文是按单元格转换 const xlsx require(node-xlsx) const fs require(fs) const xlsxData xlsx.parse(./demo.xlsx) // 需要转换的excel文件// 数据处理 方便粘贴复制 const data xlsxData[2].data …

计算机考研408有多难?25考研经验贴,开个好头很有必要

前言 大家好&#xff0c;我是陈橘又青&#xff0c;相信关注我的各位小伙伴们中&#xff0c;大多都是在计算机专业的大学生吧&#xff01; 每天都有许多人在后台私信我&#xff0c;问我要不要考研&#xff0c;我想说这个东西是因人而异的&#xff0c;像我本人就选择了就业&…

vue分片上传视频并转换为m3u8文件并播放

开发环境&#xff1a; 基于若依开源框架的前后端分离版本的实践&#xff0c;后端java的springboot&#xff0c;前端若依的vue2&#xff0c;做一个分片上传视频并分段播放的功能&#xff0c;因为是小项目&#xff0c;并没有专门准备文件服务器和CDN服务&#xff0c;后端也是套用…

Unity | Shader(着色器)和material(材质)的关系

一、前言 在上一篇文章中 【精选】Unity | Shader基础知识&#xff08;什么是shader&#xff09;_unity shader_菌菌巧乐兹的博客-CSDN博客 我们讲了什么是shader&#xff0c;今天我们讲一下shder和material的关系 二、在unity中shader的本质 unity中&#xff0c;shader就…

RuoYi-Vue 在Swagger和Postman中 上传文件测试方案

RequestPart是Spring框架中用于处理multipart/form-data请求中单个部分的注解。在Spring MVC中&#xff0c;当处理文件上传或其他类型的多部分请求时&#xff0c;可以使用RequestPart注解将请求的特定部分绑定到方法参数上。 使用RequestPart注解时&#xff0c;需要指定要绑定…

一款功能强大的web目录扫描器专业版

dirpro 简介 dirpro 是一款由 python 编写的目录扫描器&#xff0c;操作简单&#xff0c;功能强大&#xff0c;高度自动化。 自动根据返回状态码和返回长度&#xff0c;对扫描结果进行二次整理和判断&#xff0c;准确性非常高。 已实现功能 可自定义扫描线程 导入url文件进…