• pandas 生成JDK指标


    背景

    对交易数据的多种技术指标进行分析是技术分析的主要手段,通过代码实现对多支标的或全市标的进行多周期,多维度的分析与监控,是交易工具的常见功能。常见的指标有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的相关特性实现非常简单:

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

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

  • 相关阅读:
    数据库连接池
    linux系统---安装使用nginx
    JVM,GC
    VBA技术资料MF68:更改所选区域边框颜色
    ChatGPT将引发网络安全三大革命
    java内存分页工具类
    Java 抽象类与接口
    大数据中的R语言——中国大学MOOC课程笔记
    React之如何进行性能优化
    Databend 在 MinIO 环境使用copy 命令 | 新手篇(3)
  • 原文地址:https://blog.csdn.net/LuoShunkui/article/details/133710640