DKX - 多空线

1 公式

MID:=(3*CLOSE+LOW+OPEN+HIGH)/6;

DKX:(20*MID)+19*REF(MID,1)+18*REF(MID,2)+17*REF(MID,3)+

16*REF(MID,4)+15*REF(MID,5)+14*REF(MID,6)+

13*REF(MID,7)+12*REF(MID,8)+11*REF(MID,9)+

10*REF(MID,10)+9*REF(MID,11)+8*REF(MID,12)+

7*REF(MID,13)+6*REF(MID,14)+5*REF(MID,15)+

4*REF(MID,16)+3*REF(MID,17)+2*REF(MID,18)+REF(MID,20)/210;

MADKX:MA(DKX,M);

2 数据准备

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

3 计算过程

def calculate_dkx(df: pd.DataFrame, N=10):
    """
    计算 DKX 指标及其移动平均线 MADKX。

    参数:
    df (pd.DataFrame): 包含至少 'open', 'high', 'low', 'close' 列的 DataFrame,
                       分别代表每日开盘价、最高价、最低价和收盘价。
    N (int): 用于计算 MADKX 的时间窗口大小,默认为10。

    返回:
    pd.DataFrame: 包含原始数据及计算出的DKX和MADKX值的 DataFrame。
    """

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

    # 计算中间价 (Mid-price),这里是采用收盘价、开盘价、最高价和最低价的加权平均
    mid = (3*data['close'] + data['high'] + data['low'] + data['open']) / 6

    # 初始化 DKX 指标
    dkx = 0
    a = 0

    # 计算 DKX 指标
    # 这里使用了一个循环来计算最近20天的加权平均
    for i in range(1, 21):
        a += i  # 累加权重
        tmp = mid.shift(i-1) * (21 - i)  # 计算加权项
        dkx += tmp  # 累加加权项

    # 计算最终的 DKX 指标值
    dkx = dkx / a

    # 计算 DKX 指标的 N 周期移动平均线 MADKX
    madkx = dkx.rolling(N).mean()

    # 将计算出的 DKX 和 MADKX 值添加到 DataFrame
    data['dkx'] = dkx
    data['madkx'] = madkx

    # 返回包含所有计算出指标的 DataFrame
    return data

4 注意事项

参数N=10时,计算结果与东方财富软件中一致

雪球无此指标

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐