当前位置: 首页 > news >正文

Python 实现 CHO 指标计算(济坚指数):股票技术分析的利器系列(12)

Python 实现 CHO 指标计算(济坚指数):股票技术分析的利器系列(12)

    • 介绍
      • 算法公式
    • 代码
      • rolling函数介绍
      • 核心代码
        • 计算 CHO
    • 完整代码


介绍

CHO(济坚指数)是一种在金融领域中用于衡量市场波动性和风险的指数

先看看官方介绍:

CHO (济坚指数)
用法
1.CHO 曲线产生急促的「凸起」时,代表行情即将向上或向下反转;
2.股价>90 天平均线,CHO由负转正时,买进;
3.股价<90 天平均线,CHO由正转负时,卖出;
4.本指标也可设参考线,自定超买超卖的界限值;
5.本指标须配合OBOS、ENVELOPE同时使用。

算法公式

MID:=SUM(VOL*(2*CLOSE-HIGH-LOW)/(HIGH+LOW),0);
CHO:MA(MID,N1)-MA(MID,N2);
MACHO:MA(CHO,M);
优势劣势
1. 提供反转信号1. 存在滞后性
CHQ 曲线的急促凸起可提供市场反转信号包含滚动平均值可能导致不能及时捕捉市场变化
2. 结合价格趋势2. 可能产生假信号
结合股价与90天平均线关系,准确判断买卖时机可能导致错误交易决策
3. 设定参考线3. 参数选择需要根据市场特点调整
可根据需求设定超买超卖的界限值,提高适用性参数选择不当可能影响指标准确性和适用性
4. 配合其他指标4. 单一性
可与其他指标如 OBOS、ENVELOPE 结合使用无法完全反映市场复杂情况,需要综合判断

代码

rolling函数介绍

rolling 函数通常与其他函数(如 meansumstd 等)一起使用,以计算滚动统计量,例如滚动均值、滚动总和等。

以下是 rolling 函数的基本语法:

DataFrame.rolling(window, min_periods=None, center=False, win_type=None, on=None, axis=0, closed=None)
  • window: 用于计算统计量的窗口大小。
  • min_periods: 每个窗口最少需要的非空观测值数量。
  • center: 确定窗口是否居中,默认为 False
  • win_type: 窗口类型,例如 Noneboxcartriang 等,默认为 None
  • on: 在数据帧中执行滚动操作的列,默认为 None,表示对整个数据帧执行操作。
  • axis: 执行滚动操作的轴,默认为 0,表示按列执行操作。
  • closed: 确定窗口的哪一端是闭合的,默认为 None

核心代码

计算 CHO
    # 计算 MIDMID = df.apply(lambda row: row['VOL'] * (2 * row['CLOSE'] - row['HIGH'] - row['LOW']) / (row['HIGH'] + row['LOW']),axis=1)# 计算 CHOCHO = MID.rolling(window=N1).mean() - MID.rolling(window=N2).mean()
  1. 计算 MID(Money Flow Index Distribution):

    • 首先,对于数据框(DataFrame)中的每一行,根据特定的公式计算 MID 值。
    • 公式中涉及了该行的 ‘VOL’(成交量)、‘CLOSE’(收盘价)、‘HIGH’(最高价)和 ‘LOW’(最低价)等数据。
    • 计算 MID 的目的是衡量资金流向的情况,通过成交量和价格的关系来反映资金的流入流出情况。
  2. 计算 CHO(Chande Momentum Oscillator):

    • 首先,对 MID 序列分别进行两个滚动平均计算,窗口大小分别为 N1 和 N2。
    • 然后,用 N1 天的滚动平均值减去 N2 天的滚动平均值,得到 CHO 值。
    • CHO 的计算实际上是通过比较两个不同期间的资金流向指标的变化情况来衡量市场动量的指标,可用于辅助判断价格趋势的变化。

完整代码

import pandas as pdimport a_get_datadata = {'CLOSE': 填每日收盘的数据,'HIGH': 填每日最高的数据,'LOW': 填每日最低的数据'OPEN': 填每日开盘的数据'VOL': 填每日交易量的数据
}df = pd.DataFrame(data)# 计算 CHO
def calculate_CHO(df, N1, N2, M):# 计算 MIDMID = df.apply(lambda row: row['VOL'] * (2 * row['CLOSE'] - row['HIGH'] - row['LOW']) / (row['HIGH'] + row['LOW']),axis=1)# 计算 CHOCHO = MID.rolling(window=N1).mean() - MID.rolling(window=N2).mean()# 计算 MACHOMACHO = CHO.rolling(window=M).mean()return CHO, MACHON1 = 10
N2 = 20
M = 6CHO, MACHO = calculate_CHO(df, N1, N2, M)df['CHO'] = CHO
df['MACHO'] = MACHOprint(df)

在这里插入图片描述

http://www.lryc.cn/news/306706.html

相关文章:

  • MySQL的SQL语句
  • ABAP 发送带EXCEL邮件
  • Linux Nginx SSL 证书配置正确,扔展示不安全
  • 算法沉淀——动态规划之子数组、子串系列(上)(leetcode真题剖析)
  • Flutter GetX 之 暗黑模式
  • SQLlabs46关
  • 【Android移动开发】Windows10平台安装Android Studio与人工智能算法模型部署案例
  • 【IDEA】java 项目启动偶现Kotlin 版本问题 error:Kotlin:module was
  • Jmeter系列(2)目录介绍
  • vue基础操作(vue基础)
  • EEA架构
  • 【物联网应用案例】牧场牛棚环境管理项目
  • 【Vue】组件通信组件通信
  • 瑞_Redis_Redis客户端
  • 在Ubuntu系统下搭建TDengine集群
  • Easy-Jmeter: 性能测试平台
  • Unity3D Lua与C#的相互调用与性能剖析详解
  • 鸿蒙开发路由跳转踩坑
  • SpringBoot 3 新特性
  • Day02:Web架构前后端分离站Docker容器站集成软件站建站分配
  • 链表和顺序表的优劣分析及其时间、空间复杂度分析
  • QQ防红跳转短网址生成网站完整源码
  • 面试redis篇-10Redis集群方案-主从复制
  • 【BUG 记录】史诗级 BUG - MYSQL 删库删表却没有备份如何恢复数据
  • 天翼云登录参数JavaSrcipt逆向
  • AI与大数据:智慧城市安全的护航者与变革引擎
  • adb pull 使用
  • 算法【线性表的查找-顺序查找】
  • 力扣1143. 最长公共子序列(动态规划)
  • 如何使用群晖NAS中FTP服务开启与使用固定地址远程上传下载本地文件?