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

回测周期:日

回测结果:

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
贝塞尔大地计算是一种用于测量地球上两点之间的距离、方位角和方位角差的方法。Python提供了一些库和算法来实现贝塞尔大地计算的正反算。 正算是指已知起点坐标、方位角和距离,计算终点坐标的过程。Python中可以使用geographiclib库来进行正算计算。该库提供了Geodesic类,可以通过调用其方法来计算终点坐标。具体步骤如下: 1. 安装geographiclib库:可以使用pip命令进行安装,命令为`pip install geographiclib` 2. 导入geographiclib库:在Python代码中导入geographiclib库,命令为`import geographiclib.geodesic as geo` 3. 创建Geodesic对象:使用起点坐标创建Geodesic对象,命令为`geod = geo.Geodesic.WGS84` 4. 进行正算计算:调用Geodesic对象的`Direct`方法进行正算计算,该方法接受起点坐标、方位角和距离作为参数,并返回终点坐标。例如,`end_point = geod.Direct(lat1, lon1, azimuth, distance)` 反算是指已知起点坐标和终点坐标,计算方位角和距离的过程。Python中也可以使用geographiclib库来进行反算计算。具体步骤如下: 1. 安装geographiclib库:如果还没有安装geographiclib库,请参考上述正算步骤进行安装。 2. 导入geographiclib库:在Python代码中导入geographiclib库,命令为`import geographiclib.geodesic as geo` 3. 创建Geodesic对象:使用起点坐标创建Geodesic对象,命令为`geod = geo.Geodesic.WGS84` 4. 进行反算计算:调用Geodesic对象的`Inverse`方法进行反算计算,该方法接受起点坐标和终点坐标作为参数,并返回方位角和距离。例如,`azimuth, distance = geod.Inverse(lat1, lon1, lat2, lon2)` 希望以上介绍对您有帮助!如果您有任何其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值