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
回测周期:日
回测结果: