佛系老年学量化——从实现指标开始(ACCER)

   一、指标说明

    ACCER指标(指标解释来自百度百科)

    幅度涨速(ACCER)是通过计算收盘价的N日线性回归斜率的方法,来测量股价上涨和下跌的速度的指标,是超买超买型指标。

    计算公式

    1.幅度涨速=收盘价的N日线性回归斜率/收盘价

    2.参数N一般设置为8,但因根据需要调整。

    二、实现方式:(为方便在聚宽平台使用,模仿聚宽调用形式)

    1.斜率实现采用numpy的线性计算库linalg中的最小二乘方法进行线性拟合

    2.参考代码:(仅供学习参考,只实现基本功能,其他参数我目前不需要,所以没有实现)

import scipy as sp
import numpy as np
import pandas as pd
import os

__config = 'config.dat'
__version = pd.read_pickle(__config).loc['version', 'val']
def ACCER(security_list, check_date, N = 8, unit = '1d', include_now = True, fq_ref_date = None):
    def slope(data):
        if len(data) > 1:
            x = np.arange(0, len(data))
            y = data
            A = np.vstack([x, np.ones(len(x))]).T
            k = np.linalg.lstsq(A, y, rcond=None)[0][0] / data[-1]
        else:
            k = np.nan
        return k
    def helper(security, check_date, N = 8, unit = '1d', include_now = True, fq_ref_date = None):
        filename = '{}_{}.pkl'.format(security, __version)
        file_dir = os.path.join(os.getcwd(), 'out')
        file_url = os.path.join(file_dir, filename)
        df = pd.read_pickle(file_url)['close']
        return df.rolling(N).apply(slope, raw=True)
    
    _res = [helper(s, check_date, N, unit, include_now, fq_ref_date) for s in security_list]
    if len(security_list) == 1:
        res = _res[0]
    else:
        res = dict(zip(security_list, _res))
    return res

se = ['600000.XSHG']
#res = ACCER(se, '1')
#def test(gr):
#    return len(gr)
res = ACCER(se,'1')
#f = res.rolling(5).apply(test, raw=True)

   三、验证(与聚宽数据验证)

   输入:

from jqlib.technical_analysis import *
ACCER(['600000.XSHG'], check_date='2020-01-15')

输出:

{'600000.XSHG': -0.0014868804664723873}
发布了64 篇原创文章 · 获赞 1 · 访问量 1万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览