• 计算kdj


    import pandas as pd

    def KDJ_K(df,n=9):
        df['highest'] = df['high'].rolling(n).max()
        df['lowest'] = df['low'].rolling(n).min()
        df['RSV'] = (df['close']-df['lowest'])/(df['highest']-df['lowest'])*100
        df['signal'] = SMA_REC(df['RSV'],n=3,m=1, start=50)
        return df['signal']

    def SMA_REC(vals, n, m , start) :
        sma=[ ]
        numb = 0
        for x in vals:
            if np.isnan(x):
                sma.append(x)
            else:
                if numb == 0:
                    ret = start
                else:
                    ret = (x * m + ret * (n - m)) / n
                sma.append(ret)
                numb += 1
        result = array(sma)
        return result
    # #传入df的index是日期,cloumn是['high','low','close'],需要的数据列名。
    def KDJ_J(df,n=9):
        df['highest'] = df['high'].rolling(n).max()
        df['lowest'] = df['low'].rolling(n).min()
        df['RSV'] = (df['close']-df['lowest'])/(df['highest']-df['lowest'])*100
        df['KDJ_K'] = SMA_REC(df['RSV'],n=3,m=1, start=50)
        df['signal'] = 3*df['KDJ_K']-2*SMA_REC(df['KDJ_K'],n=3,m=1, start=50)
        return df['signal']
    def KDJ_D(df,n=9):
        df['highest'] = df['high'].rolling(n).max()
        df['lowest'] = df['low'].rolling(n).min()
        df['RSV'] = (df['close']-df['lowest'])/(df['highest']-df['lowest'])*100
        df['KDJ_K'] = SMA_REC(df['RSV'],n=3,m=1, start=50)
        df['signal'] = SMA_REC(df['KDJ_K'],n=3,m=1, start=50)
        return df['signal']
    def JK_KDJ_D(security_list,end_date,count = None,start_date = None,n=9):
        if type(security_list)==str:
            security_list=[security_list]
        datalist = get_price(security=security_list,start_date=start_date,end_date=end_date,
                             frequency='daily', fields=['high','low','close'],fq='pre',count=count)
        json = {}
        d='KDJ_D'
        j='KDJ_J'
        k='KDJ_K'
        for security_code in security_list:
            df = datalist.minor_xs(security_code)
            
            df[d] = KDJ_D(df,n)
            df[j] = KDJ_J(df,n)
            df[k] = KDJ_K(df,n)
            json[security_code] = pd.DataFrame(data=df,index=df.index)  
        result = pd.Panel(data=json)
        return result
    print(JK_KDJ_D('000002.XSHG','2019-01-01')['000002.XSHG'])


  • 相关阅读:
    分布式锁获取token
    美团-2019Q2述职总结
    linux df 日志删除命令分析
    MySQL、HBase、ES的特点和区别
    C++函数返回局部变量
    C语言 数组初始化的三种常用方法({0}, memset, for循环赋值)以及原理
    C Mysql API连接Mysql
    C++运算符重载
    C++对象赋值的四种方式
    C/C++下scanf的%匹配以及过滤字符串问题
  • 原文地址:https://www.cnblogs.com/Yangami/p/10636266.html
Copyright © 2020-2023  润新知