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

之前的章节介绍了多个技术分析指标,以下进行一个简单的总结。
看过之前章节的同学就可以不用打开了。

技术指标

    • MA
    • EMA
    • MACD
    • CCI
    • ATR
    • KDJ

MA

最基础的技术指标,对一段周期内的收盘价进行简单平均,是一切指标的基础。

def calc_ma(period,ma):
    ma_n = []
    period = period-1
    for i in range(len(ma)):
        if i >= period:
            ma_n.append(np.mean(ma[i-period:i+1]))
        else:
            if i == 0:
                ma_n.append(ma[i])
            else:
                ma_n.append(np.mean(ma[:i]))
    return ma_n

EMA

均线的进阶版本,对一段周期收盘价进行移动平均,获取更平衡的曲线。
周期越长,曲线越平滑;周期越短,曲线越陡峭。

def calc_ema(df,period):
    df['EMA_' + str(period)] = pd.DataFrame.ewm(df['close'],span=period).mean() 
    return df

MACD

指数平滑移动平均线。MACD 是通过计算不同时间的 EMA 的差值俩判断价格趋势。

MACD 包括 3 个值:
长短期 EMA 差值:DIF = EMA(close,12)-EMA(close,26) (计算 12 日和 26 日 EMA 均线差值)
信号线: DEA = EMA(DIF,9) (计算差值的 EMA 均线)
柱状图: OSC = DIF - DEA

def calculate_macd(df, short_period, long_period, signal_period):
    df['DIF'] = pd.DataFrame.ewm(df['close'],span=short_period).mean() - pd.DataFrame.ewm(df['close'],span=long_period).mean()
    df['DEA'] = pd.DataFrame.ewm(df['DIF'],span=singal_period).mean()
    df['OSC'] = df['DIF'] - df['DEA']
    return df

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之间.
def calc_cci(df,period):
    tp = (df['high'] + df['low'] + df['close']) / 3
    ma = tp.rolling(window=period).mean()
    md = tp.rolling(window=period).std()
    df['CCI'] = (tp - ma) / (0.015 * md)
    return df

ATR

ATR指标(Average True Range / ATR)是一种用于反应价格波动的指标。

ATR指标的计算方法:

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

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

def calc_atr(df,period):
    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=period).mean()
    return df

KDJ

KDJ的计算依据是最高价、最低价和收盘价。K、D、J 是图中的三条线。

要计算 KDJ,需要先计算价差 RSV,RSV=((收盘价-最低价)/(最高价-收盘价))*100

  • K = RSV 的指数移动平均值(平滑因子=1/3)
  • D = K 的指数移动平均值(平衡因子=1/3)
  • J = K3 - D2
def calc_kdj(df,period):
    m = 3
    df['lowest'] = df['low'].rolling(window=period).min()
    df['highest'] = df['high'].rolling(window=period).max()
    df['RSV'] = (df['close'] - df['lowest']) / (df['highest'] - df['lowest']) * 100
    df['K'] = df['RSV'].ewm(adjust=False, alpha=1/m).mean()
    df['D'] = df['K'].ewm(adjust=False, alpha=1/m).mean()
    df['J'] = 3 * df['K'] - 2 * df['D']
    return df

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

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

相关文章

postswigger 靶场(CSRF)攻略-- 2.令牌验证

靶场地址: What is CSRF (Cross-site request forgery)? Tutorial & Examples | Web Security Academy (portswigger.net)https://portswigger.net/web-security/csrf 令牌(token)验证取决于请求方法 题目中已告知易受攻击的是电子邮件的更改功能&#xff0…

web自动化框架之四测试报告的搭建

现状: 看过前面的文章,楼主用的是python,所以在搭建测试报告这块的时候使用的是unittesthtmlTestRunner;然后发现生成出来的报告,总是有那么不完美的地方,比如想增加图片,比如显示风格改变下&a…

DBever连接PG库

一、简介 DBeaver是一种通用数据库管理工具,适用于需要以专业方式使用数据的每个人;适用于开发人员,数据库管理员,分析师和所有需要使用数据库的人员的 免费(DBeaver Community) 的多平台数据库工具,支持 Windows、Li…

【哈夫曼树的构造和查找最小的的权值结点代码,哈夫曼编码的算法实现】

文章目录 哈夫曼树的构造和查找最小的的权值结点代码哈夫曼编码思想哈夫曼编码的算法实现 哈夫曼树的构造和查找最小的的权值结点代码 #include<iostream> using namespace std;typedef struct {int parent, lch, rch;//双亲结点和孩子结点的下标int weight;//权值 }htN…

ChinaSoft 论坛巡礼|开源软件供应链论坛

2023年CCF中国软件大会&#xff08;CCF ChinaSoft 2023&#xff09;由CCF主办&#xff0c;CCF系统软件专委会、形式化方法专委会、软件工程专委会以及复旦大学联合承办&#xff0c;将于2023年12月1-3日在上海国际会议中心举行。 本次大会主题是“智能化软件创新推动数字经济与社…

Go语言安装教程

【Go系列-1】-Go安装教程 环境提前准备 安装的时候可以选择自己的目录进行环境管理 E:\Z_Enviroment\Go创建文件夹&#xff1a; E:\Z_Enviroment\Go E:\Z_Enviroment\GoWorks E:\Z_Enviroment\GoWorks\bin E:\Z_Enviroment\GoWorks\pkg E:\Z_Enviroment\GoWorks\src环境变量…

OpenCV:图像噪点消除与滤波算法

人工智能的学习之路非常漫长&#xff0c;不少人因为学习路线不对或者学习内容不够专业而举步难行。不过别担心&#xff0c;我为大家整理了一份600多G的学习资源&#xff0c;基本上涵盖了人工智能学习的所有内容。点击下方链接,0元进群领取学习资源,让你的学习之路更加顺畅!记得…

测试架构师基础-进阶体系知识点、性能测试安全测试

一、Linux必备知识 linux作为现在最流行的软件环境系统&#xff0c;一定需要掌握&#xff0c;目前的招聘要求都需要有linux能力。 二、Shell脚本 掌握shell脚本&#xff0c;包括shell基础与应用、shell逻辑控制、shell逻辑函数等。 三、互联网程序原理 自动化必由之路&#…

pid调参(实验室新人入门)

安装keil&#xff1a;下载MDK-ARM http://t.csdnimg.cn/yYF7W芯片包&#xff1a; https://www.keil.arm.com/devices/stmicroelectronics-stm32f429aghx/features/ 调参软件&#xff1a; https://blog.csdn.net/weixin_63568691/article/details/133606043调参方法&#xff1a;…

CSRF 漏洞详解

CSRF 漏洞详解 文章目录 CSRF 漏洞详解漏洞描述漏洞原理漏洞场景漏洞评级漏洞危害漏洞验证漏洞利用漏洞防御典型案例 漏洞描述 CSRF&#xff08;Cross-Site Request Forgery&#xff09;漏洞是一种Web应用程序安全漏洞&#xff0c;它允许攻击者利用受害者的已认证会话来执行未…

纯c语言模拟栈和队列(初学必看)

一、栈(Stack) 1.栈的概念及其结构 栈是一种特殊的线性表&#xff0c;在栈这个结构里&#xff0c;越先存进去的数据越难取出来。 这个结构就像是一个只有一端有打开的容器&#xff0c;越先放进去的球越在底部&#xff0c;想要把底部的球拿出来&#xff0c;就必须先把前面的求…

Python实现WOA智能鲸鱼优化算法优化卷积神经网络分类模型(CNN分类算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 鲸鱼优化算法 (whale optimization algorithm,WOA)是 2016 年由澳大利亚格里菲斯大学的Mirjalili 等提…

快速验证微信小程序的AppId和AppSecret是否正确

解决方案说明 该验证方法是一种敏捷且高效的方式&#xff0c;特别适用于快速确认给定的 AppID 和 AppSecret 是否有效。在处理大量凭证或需要频繁验证的情况下&#xff0c;这种方法可以帮助您迅速而准确地完成验证过程。 特点 快速验证&#xff1a; 通过调用微信开放平台的接…

Selenium浏览器自动化测试框架简单介绍

selenium简介 介绍 Selenium [1] 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中&#xff0c;就像真正的用户在操作一样。支持的浏览器包括IE&#xff08;7, 8, 9, 10, 11&#xff09;&#xff0c;Mozilla Firefox&#xff0c;Safari&#xff0c;Google …

Rust编程中的线程间通信

1.消息传递 为了实现消息传递并发&#xff0c;Rust 标准库提供了一个 信道&#xff08;channel&#xff09;实现。信道是一个通用编程概念&#xff0c;表示数据从一个线程发送到另一个线程。 可以将编程中的信道想象为一个水流的渠道&#xff0c;比如河流或小溪。如果你将诸如…

Qt执行带参sql

//准备执行的sql语句&#xff0c;此为带参的sql语句query.prepare("update employee set Name:Name, Gender:Gender,Height:Height,"" Birthday:Birthday, Mobile:Mobile, Province:Province,"" City:City, Department:Department, Education:Educati…

农场养殖管理系统软件开发方案

一、项目概述 农场养殖管理系统是一款针对农场养殖管理的软件&#xff0c;旨在提高农场养殖效率和管理水平。本方案将详细介绍该系统的开发流程&#xff0c;包括需求分析、系统设计、数据库设计、界面设计、系统测试和上线运营等方面。 二、需求分析 在开发农场养殖管理系统…

Socket网络编程

本文主要讲解Socket网络编程。 首先介绍socket&#xff0c;包括TCP和UDP通信过程&#xff1b;然后介绍常用的函数&#xff1b;最后编写client-server例子&#xff0c;并进行测试。 文章目录 Socket介绍TCP通信过程服务器端通信过程&#xff1a;客户端通信过程&#xff1a; UDP通…

数据结构线性表——栈

前言&#xff1a;哈喽小伙伴们&#xff0c;今天我们将一起进入数据结构线性表的第四篇章——栈的讲解&#xff0c;栈还是比较简单的哦&#xff0c;跟紧博主的思路&#xff0c;不要掉队哦。 目录 一.什么是栈 二.如何实现栈 三.栈的实现 栈的初始化 四.栈的操作 1.数据入栈…