[量化投资-学习笔记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.mfbz.cn/a/127878.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Oracle迁移(RAC变单机模式)

1.升级内核 systemctl stop firewalld systemctl disable firewalldrpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm yum --enablerepo"elrepo-kernel" list --showduplic…

【MySQL】手把手教你centos7下载MySQL

centos7下载MySQL 前言正式开始卸载不需要的环境&#xff08;如果你之前没有安装过数据库相关的东西可以跳过&#xff09;下载mysql登录mysql登陆⽅法⼀【不⾏就下⼀个】登陆⽅法⼆【不⾏就下⼀个】登录方式三 前言 安装和卸载MySQL都用系统的root权限&#xff0c;更方便一点&…

SQL优化之MySQL执行计划(Explain)及索引失效详解

1、执行计划基础 1.1、执行计划&#xff08;Explain&#xff09;定义 在 MySQL 中可以通过 explain 关键字模拟优化器执行 SQL语句&#xff0c;从而解析MySQL 是如何处理 SQL 语句的。 1.2、MySQL查询过程 客户端向 MySQL 服务器发送一条查询请求服务器首先检查查询缓存&am…

SecoClient接收返回码超时解决

第一步&#xff0c;Windows键进入"设置" 第二步&#xff0c;进入"更新与安全" 第三步&#xff0c;找到恢复&#xff0c;点击“高级启动”下的“立即重新启动”&#xff0c;重启电脑&#xff1a;(此时要记住以下步骤) 第四步&#xff0c;重启后选择“疑难解…

下定决心做增长了吗 ——《增长黑客》读后感1

关注我的公众号&#xff0c;并回复【增长黑客】可以获取我整理的《增长黑客》书籍大纲 前言 年中就看完《增长黑客》这本书了&#xff0c;收获还是蛮多的&#xff0c;但因为各种原因&#xff0c;导致我都没有好好做下总结。 前阵子做完总结之后&#xff0c;我就第一时间给组员…

真是性价比之王,腾讯云这款88元云服务器已经圈粉无数!

你是否曾经想过拥有一台属于自己的云服务器&#xff0c;但是却被高昂的价格和复杂的配置吓到了&#xff1f;现在&#xff0c;腾讯云推出了一款价格亲民、简单易用的88元云服务器&#xff0c;让你的梦想成为现实。腾讯云88元/年云服务器配置见下图&#xff1a; 腾讯云88元服务器…

第十六章 反射与注解

通过java的反射机制&#xff0c;程序员可以更深入的控制程序的运行过程。例如&#xff0c;可在程序运行时对象用户输入的信息进行验证&#xff0c;还可以逆向控制程序的执行过程&#xff0c;讲解了反射&#xff0c;另外java还提供了Annotation注解功能&#xff0c;该功能建立在…

Unreal Engine 学习笔记 (3)—— 导入资源

1.导入FBX文件 打开系统文件管理器按下鼠标左键拖动fbx文件到UE编辑器中松开鼠标左键在弹出对话框FBX导入选项页面中&#xff0c;选择对应的骨骼 重定向骨骼 拖动UE4的walk_strafe_back.fbx文件到UE5编辑器中 在弹出的FBX导入选项对话框中选择UE4对应的骨骼 使用重定向资产…

阿里云AIGC小说生成【必得京东卡】

任务步骤 此文真实可靠不做虚假宣传&#xff0c;绝对真实&#xff0c;可截图为证。 领取任务 链接&#xff08;复制到wx打开&#xff09;&#xff1a;#小程序://ITKOL/1jw4TX4ZEhykWJd 教程实践 打开函数计算控制台 应用->创建应用->人工智能->通义千问 AI 助手-…

面试字节、美团、阿里等公司后,才知道软件测试面试题就这些...

一、Linux系统应用和环境配置 1、Linux系统的操作命令给我说10个&#xff0c;一般用什么工具远程连接Linux服务器&#xff1f; 2、Linux中的日志存储在哪里&#xff1f;怎么查看日志内容&#xff1f; 3、Linux中top和ps命令的区别&#xff1f; 4、Linux命令运行的结果如何写…

基于 Flink CDC 高效构建入湖通道

01Flink CDC 核心技术解析 Flink CDC 是基于数据库日志的 CDC 技术&#xff0c;实现了全增量一体化读取的数据集成框架。配合 Flink 优秀的管道能力和丰富的上下游生态&#xff0c;Flink CDC 可以高效实现海量数据的实时集成。 如上图所示&#xff0c;数据库表里有历史的全量数…

互联网按摩预约小程序开发;

随着移动互联网的普及&#xff0c;越来越多的人开始通过手机预约按摩服务。按摩预约小程序是一种方便快捷的预约方式&#xff0c;可以让用户随时随地预约按摩服务。那么&#xff0c;按摩预约小程序的开发周期要多久&#xff1f;按摩预约小程序的功能有哪些呢&#xff1f;本文将…

公司企业端口映射

文章目录 前言如何进行内网映射打开路由器管理网址设置端口映射 前言 公司为了提供稳定的网络服务&#xff0c;需要拥有一个稳定的IPV4的网络地址&#xff0c;一般公司有点规模的&#xff0c;会去电信局里面拉一根专门的网线&#xff0c;获取稳定的全球IPV4地址。 一个IPV4地…

求职招聘小程序源码系统+社交招聘+多城市招聘 带完整搭建教程

大家好&#xff0c;今天罗峰来给大家分享一款求职招聘小程序源码系统。目前&#xff0c;求职招聘市场在不断变革。传统的招聘网站已经无法满足人们对于高效、便捷、多元化的招聘需求。该系统集求职招聘、社交招聘、多城市招聘等功能于一体&#xff0c;旨在为用户提供更加便捷、…

Linux——手把手教你解决sudo指令无法使用的问题

解决sudo指令无法使用的问题 1. 为什么不能使用 sudo指令能够使某一条指令拥有root权限&#xff0c;即以root权限去执行 例如&#xff1a; sudo ls -l //就是以root权限查看当前目录里的内容但是&#xff0c;如果是新创建的普通账户&#xff0c;一般来说一开始是不能执行s…

Spark实战

系列文章目录 送书第一期 《用户画像&#xff1a;平台构建与业务实践》 送书活动之抽奖工具的打造 《获取博客评论用户抽取幸运中奖者》 送书第二期 《Spring Cloud Alibaba核心技术与实战案例》 送书第三期 《深入浅出Java虚拟机》 送书第四期 《AI时代项目经理成长之道》 …

HDR 成像技术学习(四)

HDR(High Dynamic Range,高动态范围)仿佛是成像领域永恒的话题,动态范围越大,图像能清晰呈现的明暗差别也就越大。与传统的SDR(标准动态范围)相比,HDR图像能够以更高质量同时显示画面的亮部和暗部。 随这些年CMOS图像传感器工艺技术进步,以及后端数字信号处理算力的提升…

ECharts常用配置

1.使用&#xff1a; &#xff08;1&#xff09;.下载引入 npm install echarts(版本号) --save import * as echarts from "echarts"; &#xff08;2&#xff09;.准备一个DOM容器 &#xff08;3&#xff09;.初始化echarts实例对象 echarts.init(document.getE…

Redis之缓存

文章目录 前言一、缓存使用缓存的原因 二、使用缓存实现思路提出问题 三、三大缓存问题缓存穿透缓存雪崩缓存击穿互斥锁实现逻辑过期时间实现 总结 前言 本篇文章即将探索的问题&#xff08;以黑马点评为辅助讲解&#xff0c;大家主要体会实现逻辑&#xff09; 使用redis缓存的…

【Cocos新手进阶】父级预制体中的数据列表,在子预制体中的控制方法!

本篇文章主要讲解&#xff0c;cocos中在预制体操作过程中&#xff0c;父级预制体生成的数据列表中&#xff0c;绑定了子预制体中的事件&#xff0c;在子预制体的时间中如何控制上级列表的具体操作教程。 日期&#xff1a;2023年11月10日 作者&#xff1a;任聪聪 一、实际效果情…
最新文章