[量化投资-学习笔记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.mzph.cn/news/135605.shtml

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

相关文章

RedisTemplate连接密码设置教程

最近在一个项目中使用Redis保存Token时&#xff0c;出现连接Redis报错的情况 org.springframework.data.redis.RedisConnectionFailureException: Unable to connect to Redis; nested exception is io.lettuce.core.RedisConnectionException: Unable to connect to localhos…

智能交通和自动驾驶技术

一、定义 智能交通和自动驾驶技术是指利用先进的信息技术和人工智能技术&#xff0c;实现交通系统的智能化和自动化。智能交通和自动驾驶技术不仅可以提高交通系统的效率和安全性&#xff0c;还可以改善人们的出行体验&#xff0c;促进城市可持续发展。 智能交通和自动驾驶技…

AR眼镜硬件解决方案_AR/VR智能眼镜安卓主板芯片方案介绍

随着近两年来增强现实(AR)技术的逐渐成熟&#xff0c;采用MT8788芯片解决方案的AR眼镜已经问世。众所周知&#xff0c;AR技术可以帮助开发者打造一个既强大而又实用的混合现实世界&#xff0c;将虚拟与真实世界相结合。 据了解&#xff0c;MT8788芯片采用了多芯片分布式处理系统…

虚幻5.3打包Windows失败

缺失UnrealGame二进制文件。 必须使用集成开发环境编译该UE项目。或者借助虚幻编译工具使用命令行命令进行编译 解决办法&#xff1a; 1.依次点击平台-项目启动程序 2.点击后面的按钮进行设置 3.稍等后&#xff0c;打包后的程序即可运行&#xff0c;之后就可以愉快的打包了

电商API:淘宝京东拼多多1688多电商平台的商品销量库存信息获取

item_get 获得淘宝商品详情 获取APIkeyitem_get_pro 获得淘宝商品详情高级版item_review 获得淘宝商品评论item_fee 获得淘宝商品快递费用item_password 获得淘口令真实urlitem_list_updown 批量获得淘宝商品上下架时间seller_info 获得淘宝店铺详情item_search 按关键字搜索淘…

支持向量机 (SVM):初学者指南

照片由 Unsplash上的 vackground.com提供 一、说明 SVM&#xff08;支持向量机&#xff09;简单而优雅用于分类和回归的监督机器学习方法。该算法试图找到一个超平面&#xff0c;将数据分为不同的类&#xff0c;并具有尽可能最大的边距。本篇我们将介绍如果最大边距不存在的时候…

Android修行手册-实现利用POI将图片插入到Excel中(文末送书)

点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册点击跳转>Scratch编程案例点击跳转>软考全系列 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分享&…

ZZ308 物联网应用与服务赛题第G套

2023年全国职业院校技能大赛 中职组 物联网应用与服务 任 务 书 &#xff08;G卷&#xff09; 赛位号&#xff1a;______________ 竞赛须知 一、注意事项 1.检查硬件设备、电脑设备是否正常。检查竞赛所需的各项设备、软件和竞赛材料等&#xff1b; 2.竞赛任务中所使用…

lsky Pci-go nas个人图床搭建

①安装PicGo 应用 http://192.168.50.249:18189/api/v1 上传电脑需要有node 和 npm环境&#xff0c;官网下载最新安装板node后&#xff0c;自动会配置npm环境。 ②安装 Lsky-Uploader 获取token&#xff1a; http://www.metools.info/code/post278.html 服务器域名为 Lsky p…

深入剖析Golang中单例模式

前言 虽说Golang并不是C、Java这种传统的面向对象语言&#xff0c;而是偏向于面向接口编程的语言。但是Golang依旧有接口、结构体、组合等概念去模拟所谓面向对象中非常重要的设计模式。基于面向对象的模型去编写代码往往能编写成高内聚、低耦合、扩展性极强、难出bug的高质量…

UICollectionView左上对齐布局

最近完成的项目需要左上对齐的瀑布流&#xff0c;每个格子的尺寸不同&#xff0c;可以使用UICollectionView定义不同的尺寸&#xff0c;但是CollectionView的格子高度是相同的&#xff0c;我想要的是这样 左上对齐分别是0、1、2&#xff1b;3、4&#xff1b; 当前只能自定义一个…

OpenCV 输出文本

PutText() 输出文本 OpenCV5 将支持中文字符的输出, 当前版本OpenCV4原生不支持, 可以使用Contrib包FreeType方式实现, 不过比较麻烦.为了省事, 也可以通过将Mat转成bitmap,然后使用GDI方式输出中文字符. 示例代码 /// <summary>/// OpenCV暂时不能支持中文字符输出,显示…

Node.js中的回调地狱

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

JAVA将List转成Tree树形结构数据和深度优先遍历

引言&#xff1a; 在日常开发中&#xff0c;我们经常会遇到需要将数据库中返回的数据转成树形结构的数据返回&#xff0c;或者需要对转为树结构后的数据绑定层级关系再返回&#xff0c;比如需要统计当前节点下有多少个节点等&#xff0c;因此我们需要封装一个ListToTree的工具类…

Python 海龟绘图基础教学教案(二十六)

Python 海龟绘图——第 49 题 题目&#xff1a;绘制下面的图形 解析&#xff1a; 使用二重循环绘制六叶长方形风车。 答案&#xff1a; Python 海龟绘图——第 50 题 题目&#xff1a;绘制下面的图形 解析&#xff1a;使用二重循环绘制由四个相同大小菱形组成的四叶风车图案…

朴素贝叶斯算法

朴素贝叶斯(naive Bayes)算法是基于贝叶斯定理与特征条件独立假设的分类方法。对于给定的训练数据集&#xff0c;首先基于特征条件独立假设学习输入输出的联合概率分布。然后基于此模型&#xff0c;对给定的输入x&#xff0c;利用贝叶斯定理求出后验概率最大的输出y。不同于其他…

opengauss权限需求

创建角色 "u_rts" 并授予对数据库 "rts_opsdb" 的只读权限&#xff1a; CREATE ROLE u_rts LOGIN PASSWORD Cloud1234; GRANT CONNECT ON DATABASE rts_opsdb TO u_rts; GRANT USAGE ON SCHEMA public TO u_rts; GRANT SELECT ON ALL TABLES IN SCHEMA pub…

STM32MPU6050角度的读取(STM32驱动MPU6050)

注&#xff1a;文末附STM32驱动MPU6050代码工程链接&#xff0c;需要的读者请自取。 一、MPU6050介绍 MPU6050是一款集成了三轴陀螺仪和三轴加速度计的传感器芯片&#xff0c;由英国飞利浦半导体&#xff08;现为恩智浦半导体&#xff09;公司生产。它通过电子接口&#xff08…

【JS】Chapter10-Bom 操作

站在巨人的肩膀上 黑马程序员前端JavaScript入门到精通全套视频教程&#xff0c;javascript核心进阶ES6语法、API、js高级等基础知识和实战教程 &#xff08;十&#xff09;Bom 操作 1. Window对象 1.1 BOM(浏览器对象模型) BOM(Browser Object Model) 是浏览器对象模型wind…

力扣labuladong一刷day2共7题

力扣labuladong一刷day2共8题 | 26. 删除有序数组中的重复项 83. 删除排序链表中的重复元素 文章目录 力扣labuladong一刷day2共8题 | 26. 删除有序数组中的重复项 83. 删除排序链表中的重复元素一、26. 删除有序数组中的重复项二、83. 删除排序链表中的重复元素三、27. 移除元…