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

LON - 铁龙长线

1 公式

LC := REF(CLOSE,1);

VID := SUM(VOL,2)/(((HHV(HIGH,2)-LLV(LOW,2)))*100);

RC := (CLOSE-LC)*VID;

LONG := SUM(RC,0);

DIFF := SMA(LONG,10,1);

DEA := SMA(LONG,20,1);

LON : DIFF-DEA;

LONMA : MA(LON,10);

LONT : LON, COLORSTICK;

2 数据准备

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

3 计算过程

def calculate_lon(df: pd.DataFrame, N=10) -> pd.DataFrame:
    '''
    计算 LON 及其移动平均线 LONMA。

    参数:
    df (pd.DataFrame): 包含至少 'high', 'low', 'close', 'volume' 列的 DataFrame,
                       分别代表每日最高价、最低价、收盘价和成交量。
    N (int): 用于计算 LON 移动平均线 (LONMA) 的时间窗口大小,默认为10。

    返回:
    pd.DataFrame: 包含 LON 和 LONMA 值的 DataFrame。
    '''

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

    # 计算前一天的收盘价
    lc = df['close'].shift(1)

    # 计算连续两天的最高价和最低价的差值,并将其转换为百分比形式
    a = (df['high'].rolling(2).max() - df['low'].rolling(2).min()) * 100

    # 计算成交量指标(Volume Indicator),将两天内的成交量总和除以价格差百分比
    vid = df['volume'].rolling(2).sum() / a

    # 计算价格变动量(Price Change),即当前收盘价与前一天收盘价的差值
    rc = (df['close'] - lc) * vid

    # 计算累积价格变动量
    long = rc.cumsum()

    # 使用指数加权移动平均(EWMA)计算 DIF 线,平滑因子为9
    dif = long.ewm(com=9, adjust=False).mean()

    # 使用指数加权移动平均(EWMA)计算 DEA 线,平滑因子为19
    dea = long.ewm(com=19, adjust=False).mean()

    # 计算 LON 指标,即 DIF 线与 DEA 线的差值
    lon = dif - dea

    # 计算 LON 指标的 N 周期简单移动平均线 (SMA)
    lonma = lon.rolling(N).mean()

    # 将计算出的 LON 和 LONMA 值添加到 DataFrame
    data['lon'] = lon
    data['lonma'] = lonma

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

4 注意事项

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

雪球无此指标

与通信达一致

5 应用法则

5.1 买入点判断

当在零轴下方,lon向上交叉均线时开始关注该股。直到lon穿过零轴绿色柱状线翻红方可作为中长线介入点。

5.2 卖出点判断

当在零轴上方,一旦lon线向下交叉均线形成死叉就应该立即卖出。

6 策略回测

回测标的:601318(中国平安)

回测时间:2021-01-01 ~ 2023-12-31

回测周期:日

回测结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值