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 线,平滑因子为9dif = long.ewm(com=9, adjust=False).mean()# 使用指数加权移动平均(EWMA)计算 DEA 线,平滑因子为19dea = long.ewm(com=19, adjust=False).mean()# 计算 LON 指标,即 DIF 线与 DEA 线的差值lon = dif - dea# 计算 LON 指标的 N 周期简单移动平均线 (SMA)lonma = lon.rolling(N).mean()# 将计算出的 LON 和 LONMA 值添加到 DataFramedata['lon'] = londata['lonma'] = lonma# 返回包含所有计算出指标的 DataFramereturn data
4 注意事项
参数N=10计算结果与东方财富软件中一致
雪球无此指标
与通信达一致