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

news2025/1/23 10:23:29

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_engine

if __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.coloradmin.cn/o/1279565.html

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

相关文章

mongoose学习记录

mongoose安装和连接数据库 npm i mongoose导入mongoose const mongoose require(mongoose) mongoose.set("strictQuery",true)连接数据库 mongoose.connect(mongodb:127.0.0.1:27017/test)设置回调 mongoose.connection.on(open,()>{console.log("连接成…

利用段落检索和生成模型进行开放域问答12.2

利用段落检索和生成模型进行开放域问答 摘要引言2 相关工作3 方法 摘要 事实证明,开放域问答的生成模型具有竞争力,无需借助外部知识。虽然很有希望,但这种方法需要使用具有数十亿个参数的模型,而这些模型的训练和查询成本很高。…

还在Wins 11怀念10的右键单击菜单?别担心,可通过注册表来实现

到目前为止,Windows 11最令人讨厌的新“功能”是右键单击任何内容时会出现截断的上下文菜单。以前版本的Windows显示了你的所有选项,包括可以打开文件的不同程序,而新菜单仅限于少数选项,不一定是你想要的。 例如,当我…

SHAP(五):使用 XGBoost 进行人口普查收入分类

SHAP(五):使用 XGBoost 进行人口普查收入分类 本笔记本演示了如何使用 XGBoost 预测个人年收入超过 5 万美元的概率。 它使用标准 UCI 成人收入数据集。 要下载此笔记本的副本,请访问 github。 XGBoost 等梯度增强机方法对于具有…

C++ day48 打家劫舍

题目1:198 打家劫舍 题目链接:打家劫舍 对题目的理解 专业小偷偷盗房屋的钱财,每个房屋存放的金额用非负整数数组表示; 如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警; 不触动警报装置的情况…

吸积效应:为什么接口会越来越臃肿?我们从一个接口说起

欢迎大家关注公众号「JAVA前线」查看更多精彩分享文章,主要包括源码分析、实际应用、架构思维、职场分享、产品思考等等,同时欢迎大家加我微信「java_front」一起交流学习 1 从一个接口说起 1.1 初始接口 假设现在有一个创建订单接口: pub…

C语言每日一题(44)删除排序链表中的重复元素 II

力扣 82 删除排序链表中的重复元素 II 题目描述 给定一个已排序的链表的头 head , 删除原始链表中所有重复数字的节点,只留下不同的数字 。返回 已排序的链表 。 示例 1: 输入:head [1,2,3,3,4,4,5] 输出:[1,2,5]示…

mac安装解压缩rar后缀文件踩坑

mac默认能够解压缩zip后缀的文件,如果是rar后缀的自己需要下载相关的工具解压 下载地址: https://www.rarlab.com/download.htm mac我是因特尔芯片所以下载 x64 然后解压缩文件进入目录 rar中 将可执行文件 rar、unrar 移动到 /usr/local/bin目录下即…

【高效开发工具系列】jackson入门使用

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

ASP.NET Core MVC过滤器

1、过滤器分为授权过滤、资源访问过滤、操作方法(Action)过滤、结果过滤、异常过滤、终结点过滤。上一次咱们没有说异常过滤和终结点过滤,不过老周后面会说的。对这些过滤器,你有印象就行了。 2、所有过滤器接口都有同步版本和异…

可视化开源编辑器Swagger Editor本地部署并实现远程访问管理编辑文档

最近,我发现了一个超级强大的人工智能学习网站。它以通俗易懂的方式呈现复杂的概念,而且内容风趣幽默。我觉得它对大家可能会有所帮助,所以我在此分享。点击这里跳转到网站。 文章目录 Swagger Editor本地接口文档公网远程访问1. 部署Swagge…

【Python百练——第3练】矩形类及操作

💐作者:insist-- 💐个人主页:insist-- 的个人主页 理想主义的花,最终会盛开在浪漫主义的土壤里,我们的热情永远不会熄灭,在现实平凡中,我们终将上岸,阳光万里 ❤️欢迎点…

一缕青丝寄相思

10年8月16日七夕节男孩向女孩表白,女孩不知道那天是七夕,也没有读懂男孩的爱,女孩在9月22日中秋,向男孩打开了心门,男孩却没有懂女孩的心思.13年后的一封问候邮件,一束女孩的长发和回不去的青春 洒满阳光的午后 转眼间看到你的笑脸 微笑着你对我说 遇上你认识我真好 你说得好莫…

论文解读--Robust lane detection and tracking with Ransac and Kalman filter

使用随机采样一致性和卡尔曼滤波的鲁棒的车道线跟踪 摘要 在之前的一篇论文中,我们描述了一种使用霍夫变换和迭代匹配滤波器的简单的车道检测方法[1]。本文扩展了这项工作,通过结合逆透视映射来创建道路的鸟瞰视图,应用随机样本共识来帮助消…

力扣日记12.3-【二叉树篇】二叉树的所有路径

力扣日记:【二叉树篇】二叉树的所有路径 日期:2023.12.3 参考:代码随想录、力扣 257. 二叉树的所有路径 题目描述 难度:简单 给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径…

JAVA代码优化:CommandLineRunner(项目启动之前,预先加载数据)

CommandLineRunner接口是Spring Boot框架中的一个接口,用于在应用程序启动后执行一些特定的代码逻辑。它是一个函数式接口,只包含一个run方法,该方法在应用程序启动后被自动调用。可以帮助我们在应用程序启动后自动执行一些代码逻辑&#xff…

sharding-jdbc实现分库分表

shigen日更文章的博客写手,擅长Java、python、vue、shell等编程语言和各种应用程序、脚本的开发。记录成长,分享认知,留住感动。 😅😅最近几天的状态有点不对,所以有几天没有更新了。 当我们的数据量比较大…

css实现简单的抽奖动画效果和旋转效果,还有春联效果

使用css的animation和transform和transition可以实现简单的图片放大缩小,旋转,位移的效果,由此可以延伸的动画效果还是挺多的,比如图片慢慢放大,图片慢慢旋转并放大,图片慢慢变化位置等等, 抽奖…

使用pytorch从零开始实现迷你GPT

生成式建模知识回顾: [1] 生成式建模概述 [2] Transformer I,Transformer II [3] 变分自编码器 [4] 生成对抗网络,高级生成对抗网络 I,高级生成对抗网络 II [5] 自回归模型 [6] 归一化流模型 [7] 基于能量的模型 [8] 扩散模型 I, 扩散模型 II…

MathType 7.5.2中文版软件使用期到了怎么办?

MathType 7.5.2中文版作为一款专业的公式编辑器,MathType受到很多人的青睐,它可以将编辑好的公式保存成多种图片格式或透明图片模式,可以很方便的添加或移除符号、表达式等模板(只需要简单地用鼠标拖进拖出即可),也可以…