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'])

计算kdj的更多相关文章

  1. Python量化分析,计算KDJ

    Python: v3.6 Pandas: v0.23.4 使用以下方法计算与国内财经软件显示一致 low_list = df['最低价'].rolling(9, min_periods=9).min( ...

  2. WeQuant交易策略—KDJ

    KDJ随机指标策略策略介绍KDJ指标又叫随机指标,是一种相当新颖.实用的技术分析指标,它起先用于期货市场的分析,后被广泛用于股市的中短期趋势分析,是期货和股票市场上最常用的技术分析工具.随机指标KDJ ...

  3. KDJ回测

    # -*- coding: utf-8 -*- import os import pandas as pd # ========== 遍历数据文件夹中所有股票文件的文件名,得到股票代码列表stock_ ...

  4. KDJ金叉测试

    # -*- coding: utf-8 -*- import os import pandas as pd # ========== 遍历数据文件夹中所有股票文件的文件名,得到股票代码列表stock_ ...

  5. 用Python的Pandas和Matplotlib绘制股票KDJ指标线

    我最近出了一本书,<基于股票大数据分析的Python入门实战 视频教学版>,京东链接:https://item.jd.com/69241653952.html,在其中给出了MACD,KDJ ...

  6. 手把手教你画AndroidK线分时图及指标

    先废话一下:来到公司之前.项目是由外包公司做的,面试初,没有接触过分时图k线这块,认为好难,我能搞定不.可是一段时间之后,发现之前做的那是一片稀烂,可是这货是主功能啊.迟早的自己操刀,痛下决心,开搞, ...

  7. MACD、BOLL、KDJ 三大组合精准把握趋势与买卖!

    先看示意图,下图是布林线的3个轨道,其他都是股价走势 图1 股价,在布林线上轨.下轨之间运作.准确说,这话是不符合逻辑的,不是先有的轨道,然后股价再按照轨道运动.因为轨道是跟股价同时变化的.但是,股价 ...

  8. KDJ计算公式

    计算方法编辑KDJ的计算比较复杂,首先要计算周期(n日.n周等)的RSV值,即未成熟随机指标值,然后再计算K值.D值.J值等.以n日KDJ数值的计算为例,其计算公式为n日RSV=(Cn-Ln)/(Hn ...

  9. kdj

    随机指标KDJ一般是用于股票分析的统计体系,根据统计学原理,通过一个特定的周期(常为9日.9周等)内出现过的最高价.最低价及最后一个计算周期的收盘价及这三者之间的比例关系,来计算最后一个计算周期的未成 ...

随机推荐

  1. 树莓派 nfs server安装

    安装服务 sudo  apt-get install  portmap sudo  apt-get install  nfs-kernel-server 配置: sudo nano /etc/expo ...

  2. maven私库nexus2.3.0-04迁移升级到nexus-3.16.1-02(异机迁移备份)

    环境信息: nexus2.3.0-04安装在32位Windows server 2003系统上 安装位置信息如下: 仓库迁移 Nexus的构件仓库都保存在sonatype-work目录中,nexus2 ...

  3. MySQL按周统计 WEEK 实例

    MySQL按周统计每周数据总和,用到了WEEK,subdate,date_format,date_sub,date_add函数. WEEK() 查看给定日期周数,语法:WEEK(date, mode) ...

  4. React 环境增加Redux ,React-Redux

    引入 Redux 的目的, 状态管理! React-Redux 就是完成一些粘合剂的作用. 简而化之的理解就是将数据放在store 中维护, 操作逻辑放在reducer中去写. 更功利的表达就是:  ...

  5. 【Windows 7】发现一个奇怪的现象

    最近在Windows7-32位操作系统上发现一个奇怪的现象,不知道64位操作系统上会不会发生这个现象.这个现象就是:如果系统上的一个或多个账户没有设置密码,那么在此条件下终止winlogon.exe进 ...

  6. python函数与模块(装饰器,文件处理,迭代器等)

    os模块 os.system('命令') 利用python调用系统命令,命令可以是以列表或者元组内的元素形式* res import os res=os.system('ipconfig') prin ...

  7. [python,2019-02-15] 最短回文串

    给定一个字符串 s,你可以通过在字符串前面添加字符将其转换为回文串.找到并返回可以用这种方式转换的最短回文串. 示例 1: 输入: "aacecaaa" 输出: "aaa ...

  8. PHP语言入门的学习方法十要素

    对于PHP程序设计语言来说.每个人的学习方式不同,写这篇文章的目的是分享一下自己的学习过程,仅供参考,不要一味的用别人的学习方法,找对自己有用的学习方式.经常在某些论坛和QQ群里看到一些朋友会问“怎样 ...

  9. 关键字new与malloc函数

    做题出bug,OJ说我没有定义new. 纳尼?new还需要定义?不都是直接用的吗,明明在自己的编译器里都可以通过的! 编译器:劳资是C++.... 一番倒腾后发现,我用的C++,但是OJ的编译器是C, ...

  10. <iframe width="250" height="250" src="http://www.baidu.com"></iframe>

     <iframe width="250" height="250" src="http://www.baidu.com">< ...