Python 实现股票指标计算——ENE

ENE(Envelope) - 轨道线

1 公式

UPPER = (1 + M1 ➗ 100) ✖ 收盘价的N日简单移动平均

LOWER = (1 - M2 ➗ 100) ✖ 收盘价的N日简单移动平均

ENE = (UPPER + LOWER) ➗ 2

2 数据准备

我们以科创50指数 000688 为例,指数开始日期为2019-12-31,数据格式如下:

3 计算过程

def calculate_ene(df: pd.DataFrame, N=10, X=11, Y=9) -> pd.DataFrame:
    '''
    计算给定DataFrame中股票价格的信封指标。

    参数
    ----------
    df : pd.DataFrame
        包含至少一个名为'close'的列,代表收盘价的DataFrame。
    N : int, 可选
        用于计算移动平均线的周期数。默认值是10。
    X : float, 可选
        移动平均线上方的百分比,用于绘制上信封线。默认值是11。
    Y : float, 可选
        移动平均线下方的百分比,用于绘制下信封线。默认值是9。

    返回
    -------
    data : pd.DataFrame
        原始DataFrame加上额外的列:移动平均线('ma'),上信封线('upper'),下信封线('lower')和信封指标('ene')。
    '''

    # 创建一个df的副本以避免修改原始数据
    data = df.copy()

    # 使用rolling方法计算N周期内的平均价
    # rolling(N)创建一个窗口,对窗口内数据进行操作;mean()计算均值
    data['ma'] = data['close'].rolling(N).mean()

    # 计算上信封线,即移动平均线乘以上方的百分比
    data['upper'] = (1 + X / 100) * data['ma']

    # 计算下信封线,即移动平均线乘以下方的百分比
    data['lower'] = (1 - Y / 100) * data['ma']

    # 计算信封指标,即上信封线和下信封线的平均值
    data['ene'] = (data['upper'] + data['lower']) / 2

    # 返回包含信封指标的新DataFrame
    return data
4 注意事项

参数选取N=10,X=11,Y=9时,计算结果与东方财富软件中的指标一致。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值