pandas 生成KDJ指标

背景

对交易数据的多种技术指标进行分析是技术分析的主要手段,通过代码实现对多支标的或全市标的进行多周期,多维度的分析与监控,是交易工具的常见功能。常见的指标有JDK、MACD、OBV、RSA、MTM等,也可以自已根据需要开发属于自已的旨标。

思路

JDK的算法:

(1) RSV的计算公式为:

公式中,

C为当天的收盘价;

Ln为之前n日内的最低价;

Hn为之前n日内的最高价。

(2) 某一天的K值=2/3×前一日K值+1/3×当日RSV,即

Ki和RSVi分别表示某一天当天的K值和RSV值;

Ki-1表示前一天的K值,若无前一天的K值,则用50来代替。

(3) 某一天当天的D值=2/3×前一日D值+1/3×当日K值,即

Di和Ki分别表示当天的D值和K值;

Di-1表示前一天的D值,若无前一天的D值,则用50来代替。

(4) J值=3×当日K值-2×当日D值,即

实现

利用pandas的相关特性实现非常简单:

    def read_kdj(self, stock_dat, win1=3, win2=3, win3=21):
        low_list = stock_dat['low'].rolling(win3, min_periods=1).min()
        high_list = stock_dat['high'].rolling(win3, min_periods=1).max()
        rsv = (stock_dat['close'] - low_list) / (high_list - low_list) * 100
        stock_dat['K'] = rsv.ewm(com=win1, adjust=False).mean()
        stock_dat['D'] = stock_dat['K'].ewm(com=win2, adjust=False).mean()
        stock_dat['J'] = 3 * stock_dat['K'] - 2 * stock_dat['D']
        return stock_dat

这段代码会直接为stock_dat 添加上K、D、J三列数据。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LuoShunkui

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值