TA-Lib学习研究笔记——Overlap Studies(二)上

TA-Lib学习研究笔记——Overlap Studies(二)

1. Overlap Studies 指标

['BBANDS', 'DEMA', 'EMA', 'HT_TRENDLINE', 'KAMA', 'MA', 'MAMA', 'MAVP', 'MIDPOINT', 'MIDPRICE', 'SAR', 'SAREXT', 'SMA', 'T3', 'TEMA', 'TRIMA', 'WMA']

2.数据准备

get_data函数参数(代码,起始时间,终止时间)
返回dataframe 变量df ,column如下:

ts_code,trade_date,open,high,low,close,pre_close,change,pct_chg,vol,amount

以000002代码测试,2021年的数据,程序示例:

import numpy as np
import talib as tlb
import matplotlib.pyplot as plt
import pandas as pd  
from sqlalchemy import create_engineif __name__ == '__main__':#matplotlib作图设置plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号#数据获取start_date = '2021-01-01'end_date   = '2022-01-01'df = get_data('000002', start_date, end_date)

3.指标学习测试

(1)BBANDS

函数名:BBANDS
名称: 布林线指标
简介:其利用统计原理,求出股价的标准差及其信赖区间,从而确定股价的波动范围及未来走势,利用波带显示股价的安全高低价位,因而也被称为布林带。
语法:

upperband, middleband, lowerband = BBANDS(close, timeperiod=5, nbdevup=2, nbdevdn=2, matype=0)
参数:
(1)close:收盘价。
(2)timeperiod:计算的周期。
(3) nbdevup:上限价格相对于周期内标准偏差的倍数,取值越大,则上限越大,通道越宽。
(4)nbdevdn:下限价格相对于周期内标准偏差的倍数,取值越大,则下限越大,通道越宽。
(5)matype:平均值计算类型,0代表简单一定平均,还可以有加权平均等方式。

    df['upper'], df['middle'], df['lower'] = tlb.BBANDS(df['close'], timeperiod=20, nbdevup=2, nbdevdn=2, matype=0)# 做图df[['close','upper','middle','lower']].plot(title='布林线')plt.grid() #启用网格plt.legend(['close', 'upper', 'middle', 'lower']) # 设置图示plt.show()

执行效果:
在这里插入图片描述

(2)DEMA双指数平均线

函数名:DEMA
名称: 双移动平均线
简介:两条移动平均线来产生趋势信号,较长期者用来识别趋势,较短期者用来选择时机。正是两条平均线及价格三者的相互作用,才共同产生了趋势信号。

output = talib.DEMA(close, timeperiod)

df['DEMA'] = tlb.DEMA(df['close'], timeperiod=20)# 做图
df[['close','DEMA']].plot(title='双移动平均线')
plt.grid() #启用网格
plt.legend(['close','DEMA']) # 设置图示
plt.show()

在这里插入图片描述

(3)EMA

函数名:EMA Exponential Moving Average
名称: 指数平均数
简介:是一种趋向类指标,其构造原理是仍然对价格收盘价进行算术平均,并根据计算结果来进行分析,用于判断价格未来走势的变动趋势。

real = EMA(close, timeperiod=20)

df['EMA'] = tlb.EMA(df['close'], timeperiod=20)# 做图
df[['close','EMA']].plot(title='指数平均数')
plt.grid() #启用网格
plt.legend(['close','EMA']) # 设置图示
plt.show()

在这里插入图片描述

(4)HT_TRENDLINE

函数名:HT_TRENDLINE
名称: 希尔伯特瞬时变换
简介:是一种趋向类指标,其构造原理是仍然对价格收盘价进行算术平均,并根据计算结果来进行分析,用于判断价格未来走势的变动趋势。

real = HT_TRENDLINE(close)

df['HT_TRENDLINE'] = tlb.HT_TRENDLINE(df['close'])# 做图
df[['close','HT_TRENDLINE']].plot(title='希尔伯特瞬时变换')
plt.grid() #启用网格
plt.legend(['close','HT_TRENDLINE']) # 设置图示
plt.show()

在这里插入图片描述

(5)KAMA

名称:KAMA Kaufman Adaptive Moving Average 考夫曼自适应移动平均线
简介:短期均线贴近价格走势,灵敏度高,但会有很多噪声,产生虚假信号;长期均线在判断趋势上一般比较准确,但是长期均线有着严重滞后的问题。我们想得到这样的均线,当价格沿一个方向快速移动时,短期的移动平均线是最合适的;当价格在横盘的过程中,长期移动平均线是合适的。
语法:

real = KAMA(close, timeperiod=30)

df['KAMA'] = tlb.KAMA(df['close'], timeperiod=30)# 做图
df[['close','KAMA']].plot(title='考夫曼自适应移动平均线')
plt.grid() #启用网格
plt.legend(['close','KAMA']) # 设置图示
plt.show()

在这里插入图片描述

(6)MA

函数名:MA - Moving average 移动平均线
名称: 移动平均线
简介:移动平均线,Moving Average,简称MA,原本的意思是移动平均,由于将其制作成线形,所以一般称之为移动平均线,简称均线。它是将某一段时间的收盘价之和除以该周期。 比如日线MA5指5天内的收盘价除以5 。

语法:
real = MA(close, timeperiod=30, matype=0)

df['MA5'] = tlb.MA(df['close'], timeperiod=5, matype=0)
df['MA10'] = tlb.MA(df['close'], timeperiod=10, matype=0)
df['MA30'] = tlb.MA(df['close'], timeperiod=30, matype=0)# 做图
df[['close','MA5','MA10','MA30']].plot(title='移动平均线')
plt.grid() #启用网格
plt.legend(['close','MA5','MA10','MA30']) # 设置图示
plt.show()

在这里插入图片描述

(7)MAMA

MAMA是MESA自适应移动平均线,全称为MESA Adaptive Moving Average。它是根据价格的移动平均线和自适应移动平均线来计算的,它的设计初衷是能够更好地适应不同市场的变化。

指标作用
MAMA指标使用了一种称为Hilbert变换的数学方法来计算价格的移动平均线。这种方法可以将价格的周期性变化进行平滑处理,减少了滞后性,使得MAMA指标能够更快地响应市场的变化。
MAMA指标由两条线组成:MAMA线和FAMA线。MAMA线是根据价格的移动平均线计算得出的,它可以显示价格的趋势方向。FAMA线是根据MAMA线计算得出的,它可以显示价格的趋势变化的速度。
MAMA指标的应用主要有两个方面:

  1. 确定趋势:当MAMA线向上穿过FAMA线时,可以视为买入信号,表示价格可能会上涨;当MAMA线向下穿过FAMA线时,可以视为卖出信号,表示价格可能会下跌。
  2. 确定超买超卖:当MAMA线超过了价格的最高点时,可以视为超买信号,表示价格可能会回调;当MAMA线低于价格的最低点时,可以视为超卖信号,表示价格可能会反弹。
    语法:

mama, fama = MAMA(close)

df['mama'], df['fama'] = tlb.MAMA(df['close'])
# 做图
df[['close','mama','fama']].plot(title='自适应移动平均线')
plt.grid() #启用网格
plt.legend(['close','mama','fama']) # 设置图示
plt.show()

在这里插入图片描述

(8)MAVP

Moving average with variable period,计算带有可变周期的移动平均线。
语法:
下面是 MAVP 函数的参数说明:

  • close: 必需参数,表示收盘价序列的数组或 pandas Series。
  • periods: 必需参数,表示要进行移动平均的周期值。它是一个包含多个周期值的数组。
  • minperiod: 可选参数,表示移动平均线计算的最小周期。默认值为 2。
  • maxperiod: 可选参数,表示移动平均线计算的最大周期。默认值为 30。
  • matype: 可选参数,表示移动平均线的类型。可以选择以下类型:
    0: 简单移动平均线(SMA)
    1: 加权移动平均线(WMA)
    2: 指数移动平均线(EMA)
    3: 光滑移动平均线(SMA with offset)默认值为 0。

real = MAVP(close, periods, minperiod=2, maxperiod=30, matype=0)

注意:periods参数必须是numpy.array ,类型必须是float ,长度与close的一致。
测试了多次,才搞明白了periods参数。开始总是报不是浮点数,periods用浮点数,报错:Exception: input array lengths are different 。
原因就是close和periods长度必须一致。

#periods 必须是numpy.array ,类型必须是float ,长度与close的一致。测试用赋值都是5,一周的交易日
length = len(df['close'])  
value = 5  
periods = np.full(length, value, dtype=float)  df['MAVP'] = tlb.MAVP(df['close'], periods, minperiod=5, maxperiod=10, matype=0)# 做图
df[['close','MAVP']].plot(title='变周期移动平均线')
plt.grid() #启用网格
plt.legend(['close','MAVP']) # 设置图示
plt.show()

在这里插入图片描述

(9)MIDPOINT - MidPoint over period

MIDPOINT函数用于计算指定期间内的中点值
语法:

real = MIDPOINT(close, timeperiod=14)

示例:

df['MIDPOINT'] = tlb.MIDPOINT(df['close'], timeperiod=14)
# 做图
df[['close','MIDPOINT']].plot(title='MidPoint over period')
plt.grid() #启用网格
plt.legend(['close','MIDPOINT']) # 设置图示
plt.show()

在这里插入图片描述

(10)MIDPRICE

MIDPRICE - Midpoint Price over period
在TA-Lib中,MIDPRICE函数用于计算指定期间内的中间价格。它基于最高价、最低价来计算一个期间内的中间价格。
参数:

  • high:一个包含最高价序列的数组或指标。
  • low:一个包含最低价序列的数组或指标。
  • timePeriod:期间长度,表示要计算中间价格的期间数。

语法:

real = MIDPRICE(high, low, timeperiod=14)

示例:


df['MIDPRICE'] = tlb.MIDPRICE(df['high'], df['low'],timeperiod=14)
# 做图
df[['high','low','MIDPRICE']].plot(title='Midpoint Price over period')
plt.grid() #启用网格
plt.legend(['high','low','MIDPRICE']) # 设置图示
plt.show()

在这里插入图片描述

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

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

相关文章

UI自动化测试的正确姿势 —— Airtest设备连接API详解第一篇

一、背景 Airtest作为一款优秀的自动化测试工具,有着强大的API功能,处理日常自动化测试过程中需要的各类操作。今天就给大家逐一介绍关于设备连接和常用API部分,结合自动化测试中的各类需求,看看如何通过使用Airtest来快速实现。…

leetcode 15. 三数之和(优质解法)

代码&#xff1a; class Solution {public static List<List<Integer>> threeSum(int[] nums) {Arrays.sort(nums);List<List<Integer>> listsnew ArrayList<>();int lengthnums.length;for(int i0;i<length-3;){int lefti1;int rightlength…

【论文学习】机器学习模型安全与隐私研究综述

机器学习在数据层、模型层以及应用层面临的安全和隐私威胁&#xff0c;呈现出多样性、隐蔽性和动态演化的特点。 应用领域&#xff1a;计算机视觉、自然语言处理、语音识别等 应用场景&#xff1a;自动驾驶、人脸识别、智慧医疗等 Key words: machine learning; poisoning atta…

设计模式之Strategy策略模式

Strategy策略模式 我的理解是在不同情况下使用不同方法&#xff0c;而方法可以增加&#xff0c;所以写一个方法父类&#xff0c;让所有方法继承下来&#xff0c;在子类写实现&#xff0c;添加时写新的子类就可以 动机 在软件构建过程中&#xff0c;某些对象使用的算法可能多…

【星火大模型】api使用

讯飞星火官方首页 准备工作 注册讯飞星火账号申请开发者api试用 从一个demo开始 讯飞星火官方的程序员为我们提供了非常优秀的demo&#xff0c;基本涵盖了大多数常用语言。 demo下载链接 这里我选用Java带上下文调用示例 下载后可以看到这是一个idea项目&#xff0c;直接…

2336. 无限集中的最小数字 : 容易又高效的分类做法

题目描述 这是 LeetCode 上的 「2336. 无限集中的最小数字」 &#xff0c;难度为 「中等」。 Tag : 「优先队列&#xff08;堆&#xff09;」、「哈希表」 现有一个包含所有正整数的集合 。 实现 SmallestInfiniteSet 类&#xff1a; SmallestInfiniteSet() 初始化 SmallestIn…

Python实现学生信息管理系统(详解版)

Python实现学生信息管理系统-详解版 个人简介实验名称&#xff1a;学生信息管理系统系统功能实验步骤详讲添加入住学生信息删除学生的住宿信息修改学生的住宿信息查询学生的住宿信息显示所有学生住宿信息显示所有请假学生的信息 运行截图展示1.主界面2.添加新的入住学生信息3.显…

Django路由分发

首先明白一点&#xff0c;Django的每一个应用下都可以有自己的templates文件夹&#xff0c;urls.py文件夹&#xff0c;static文件夹&#xff0c;基于这个特点&#xff0c;Django能够很好的做到分组开发&#xff08;每个人只写自己的app&#xff09;&#xff0c;作为老大&#x…

如何自定义spring-boot-starter

1. 创建自定义starter 1.1 生成Maven工程 mvn archetype:generate -DarchetypeGroupIdorg.apache.maven.archetypes -DarchetypeArtifactIdmaven-archetype-quickstart -DarchetypeVersion1.4交互式输入groupId、artificatId、version&#xff0c;生成Maven工程后用IDEA打开 …

详细学习Pyqt5中的2种弹簧

Pyqt5相关文章: 快速掌握Pyqt5的三种主窗口 快速掌握Pyqt5的2种弹簧 快速掌握Pyqt5的5种布局 快速弄懂Pyqt5的5种项目视图&#xff08;Item View&#xff09; 快速弄懂Pyqt5的4种项目部件&#xff08;Item Widget&#xff09; 快速掌握Pyqt5的6种按钮 快速掌握Pyqt5的10种容器&…

第十三章 python之爬虫

Python基础、函数、模块、面向对象、网络和并发编程、数据库和缓存、 前端、django、Flask、tornado、api、git、爬虫、算法和数据结构、Linux、设计题、客观题、其他 第十三章 爬虫 1. 写出在网络爬取过程中, 遇到防爬问题的解决办法。 在网络爬取过程中&#xff0c;可能会遇…

工业物联网数据传输方式探究

文章目录 引言Modbus RTU&#xff1a;传统数据采集的基础Modbus TCP&#xff1a;现代工业物联网的关键演进与影响 结语 引言 工业物联网的发展为工业数据采集带来了巨大的变革。从最初的 Modbus RTU 到现在广泛应用的 Modbus TCP&#xff0c;数据采集方式的演进使得工业领域的…

element ui 表格合计项合并

如图所示&#xff1a; 代码&#xff1a; <el-table height"400px" :data"tableData " borderstyle"width: 100%"stripe show-summaryref"table"id"table"> </el-table>监听表格 watch: { //监听table这个对象…

【LeeCode】54.螺旋矩阵

给定一个二维数组 array&#xff0c;请返回「螺旋遍历」该数组的结果。 螺旋遍历&#xff1a;从左上角开始&#xff0c;按照 向右、向下、向左、向上 的顺序 依次 提取元素&#xff0c;然后再进入内部一层重复相同的步骤&#xff0c;直到提取完所有元素。 示例 1&#xff1a;…

【华为数通HCIP | 网络工程师】821刷题日记-IS-IS(2)

个人名片&#xff1a; &#x1f43c;作者简介&#xff1a;一名大三在校生&#xff0c;喜欢AI编程&#x1f38b; &#x1f43b;‍❄️个人主页&#x1f947;&#xff1a;落798. &#x1f43c;个人WeChat&#xff1a;hmmwx53 &#x1f54a;️系列专栏&#xff1a;&#x1f5bc;️…

【面试】typescript

目录 为什么用TypeScript&#xff1f; TS和JS的区别 控制类成员可见性的访问关键字&#xff1f; public protected&#xff09;&#xff0c;该类及其子类都可以访问它们。 但是该类的实例无法访问。 私有&#xff08;private&#xff09;&#xff0c;只有类的成员可以访问…

Apache Flink(三):Flink核心特性及应用场景

&#x1f3e1; 个人主页&#xff1a;IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 &#x1f6a9; 私聊博主&#xff1a;加入大数据技术讨论群聊&#xff0c;获取更多大数据资料。 &#x1f514; 博主个人B栈地址&#xff1a;豹哥教你大数据的个人空间-豹…

三次握手和四次挥手

TCP 协议简述 TCP 提供面向有连接的通信传输&#xff0c;面向有连接是指在传送数据之前必须先建立连接&#xff0c;数据传送完成后要释放连接。 无论哪一方向另一方发送数据之前&#xff0c;都必须先在双方之间建立一条连接。在TCP/IP协议中&#xff0c;TCP协议提供可靠的连接…

com.mongodb.MongoSocketOpenException: Exception opening socket

估计mongodb数据库没开启&#xff0c;或者链接错误了&#xff0c;谁又改了&#xff0c;唉 2023-11-29 16:19:45.818 INFO 39552 --- [127.0.0.1:27017] org.mongodb.driver.cluster : Exception in monitor thread while connecting to server 127.0.0.1:27017…

PC企业微信http协议接口调用,发送小程序

产品说明 一、 hook版本&#xff1a;企业微信hook接口是指将企业微信的功能封装成dll&#xff0c;并提供简易的接口给程序调用。通过hook技术&#xff0c;可以在不修改企业微信客户端源代码的情况下&#xff0c;实现对企业微信客户端的功能进行扩展和定制化。企业微信hook接口…