zoukankan      html  css  js  c++  java
  • 计算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'])


  • 相关阅读:
    【leetcode】416. Partition Equal Subset Sum
    【leetcode】893. Groups of Special-Equivalent Strings
    【leetcode】892. Surface Area of 3D Shapes
    【leetcode】883. Projection Area of 3D Shapes
    【leetcode】140. Word Break II
    【leetcode】126. Word Ladder II
    【leetcode】44. Wildcard Matching
    【leetcode】336. Palindrome Pairs
    【leetcode】354. Russian Doll Envelopes
    2017.12.22 英语面试手记
  • 原文地址:https://www.cnblogs.com/Yangami/p/10636266.html
Copyright © 2011-2022 走看看