门户网站设计行业,他达拉非,漯河调整最新通告,如何制作网页代码Python 实现 CHO 指标计算(济坚指数#xff09;#xff1a;股票技术分析的利器系列#xff08;12#xff09; 介绍算法公式 代码rolling函数介绍核心代码计算 CHO 完整代码 介绍
CHO#xff08;济坚指数#xff09;是一种在金融领域中用于衡量市场波动性和风险的指数
先… 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)/(HIGHLOW),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 函数通常与其他函数如 mean、sum、std 等一起使用以计算滚动统计量例如滚动均值、滚动总和等。
以下是 rolling 函数的基本语法
DataFrame.rolling(window, min_periodsNone, centerFalse, win_typeNone, onNone, axis0, closedNone)window: 用于计算统计量的窗口大小。min_periods: 每个窗口最少需要的非空观测值数量。center: 确定窗口是否居中默认为 False。win_type: 窗口类型例如 None、boxcar、triang 等默认为 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]),axis1)# 计算 CHOCHO MID.rolling(windowN1).mean() - MID.rolling(windowN2).mean()计算 MIDMoney Flow Index Distribution 首先对于数据框DataFrame中的每一行根据特定的公式计算 MID 值。公式中涉及了该行的 ‘VOL’成交量、‘CLOSE’收盘价、‘HIGH’最高价和 ‘LOW’最低价等数据。计算 MID 的目的是衡量资金流向的情况通过成交量和价格的关系来反映资金的流入流出情况。 计算 CHOChande 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]),axis1)# 计算 CHOCHO MID.rolling(windowN1).mean() - MID.rolling(windowN2).mean()# 计算 MACHOMACHO CHO.rolling(windowM).mean()return CHO, MACHON1 10
N2 20
M 6CHO, MACHO calculate_CHO(df, N1, N2, M)df[CHO] CHO
df[MACHO] MACHOprint(df)