Python实现钱龙长线(LON)指标

钱龙长线指标(LON)

钱龙长线指标是一种描述当前趋势的指标,相比均线只使用收盘价而言,钱龙长线指标在描述趋势时,还考虑到了最高价、最低价、成交量对趋势的影响。最常用的使用方法是,LON指标上穿0线时做多;LON指标下穿0线时做空。

Python实现钱龙长线(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;  

Python实现

import pandas as pd

def lon(df, n=10):
    lc = df['close'].shift(1)
    a = (df['high'].rolling(2).max() - df['low'].rolling(2).min()) * 100
    vid = df['volume'].rolling(2).sum() / a
    rc = (df['close'] - lc) * vid
    long = rc.cumsum()
    dif = long.ewm(com=9, adjust=False).mean()
    dea = long.ewm(com=19, adjust=False).mean()
    lon = dif - dea
    return pd.DataFrame({'lon': lon, 'lonma': lon.rolling(n).mean()}, index=df.index)

测试

使用东方财富300059的历史日K数据进行检验,使用mplfinance库绘制K线图。

import mplfinance as mf
import pandas as pd

data = pd.read_csv('csv_data/stocks/300059.SZ.csv', parse_dates=["trade_date"], index_col=0)
data = data[['trade_date', 'open', 'high', 'low', 'close', 'volume']].sort_index(ascending=False)
data = data.reset_index(drop=True)
data.set_index('trade_date', drop=True, inplace=True)

lon = lon(data)
data = data.join(lon)
data.dropna(inplace=True)
print(data.head())
po_lon = data['lon'].copy()
po_lon[po_lon < 0] = None
na_lon = data['lon'].copy()
na_lon[na_lon > 0] = None
ap = [
    mf.make_addplot(po_lon, type='bar', color='r', panel=1),
    mf.make_addplot(na_lon, type='bar', color='g', panel=1),
    mf.make_addplot(data['lon'], panel=1, color='b'),
    mf.make_addplot(data['lonma'], panel=1, color='y'),
]
mf.plot(data, addplot=ap, style='charles', type='candle', mav=(5, 30))

绘制结果与行情软件一致:
Python实现钱龙长线(LON)指标_第2张图片

小结

相比双均线或者SuperTrend描述趋势,钱龙长线表现较为优秀,过滤掉了很多错误信号。原因可能是:第一,钱龙长线指标使用了更多的因子(最低价、最高价、成交量)来描述趋势;第二,无论是双均线还是SuperTrend,在周期选择的问题上很让人头疼,无论怎样的周期组合都不可能完美,而钱龙长线指标已经帮你选择好了周期。

你可能感兴趣的:(量化交易,python,python,matplotlib,pandas)