Python 实现股票指标计算——SKDJ

news2024/9/22 9:35:37

SKDJ (Stochastic KDJ) - 慢速随机指标

1 公式

LOWV:=LLV(LOW,N);
HIGHV:=HHV(HIGH,N);
RSV:=EMA((CLOSE-LOWV)/(HIGHV-LOWV)*100,M);
K:EMA(RSV,M);
D:MA(K,M);

2 数据准备

我们以科创50指数 000688 为例,指数开始日期为2019-12-31,数据格式如下:

3 计算过程

def calculate_skdj(df: pd.DataFrame, N=9, M=3) -> pd.DataFrame:
    '''
    计算 Stochastic K-D (SKDJ) 指标。

    参数:
    df (pd.DataFrame): 包含至少 'high', 'low', 'close' 列的 DataFrame,
                       分别代表每日最高价、最低价和收盘价。
    N (int): 用于计算 RSV 的时间窗口大小,默认为9。
    M (int): 用于计算 K 和 D 值的指数加权移动平均 (EWMA) 和简单移动平均 (SMA) 的平滑因子,默认为3。

    返回:
    pd.DataFrame: 包含 Stochastic K (k) 和 Stochastic D (d) 的 DataFrame。
    '''

    # 创建一个df的副本以避免修改原始数据
    data = df.copy()

    # 使用rolling方法计算N周期内的最低价
    ln = data['low'].rolling(N, min_periods=1).min()

    # 使用rolling方法计算N周期内的最高价
    hn = data['high'].rolling(N, min_periods=1).max()

    # 计算 RSV (Relative Strength Value)
    # 公式为:(Close - Lowest Low) / (Highest High - Lowest Low) * 100
    # 使用指数加权移动平均 (EWMA) 对 RSV 进行平滑处理
    rsv = ((data['close'] - ln) / (hn - ln) * 100).ewm(span=M, adjust=False).mean()

    # 计算 K 值,使用指数加权移动平均 (EWMA)
    k = rsv.ewm(span=M, adjust=False).mean()

    # 计算 D 值,使用简单移动平均 (SMA)
    d = k.rolling(M).mean()

    # 将计算出的 Stochastic K (k) 和 Stochastic D (d) 添加到 DataFrame
    data['k'] = k
    data['d'] = d

    # 返回包含所有计算出指标的 DataFrame
    return data

4 注意事项

参数N=9,M=3时,计算结果与东方财富软件中一致

雪球无此指标

与通信达一致

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1977039.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Leetcode 第 135 场双周赛题解

Leetcode 第 135 场双周赛题解 Leetcode 第 135 场双周赛题解题目1:3222. 求出硬币游戏的赢家思路代码复杂度分析 题目2:3223. 操作后字符串的最短长度思路代码复杂度分析 题目3:3224. 使差值相等的最少数组改动次数思路代码复杂度分析 题目4…

SQL注入 报错注入、文件上传、布尔盲注、时间盲注

第7关 文件上传 ---面试官常问 1、MySQL上传shell的满足条件 如果面试官问你如何通过MySQL向网站上传一个shell脚本或者其他语言的一些脚本 ---就可以通过outfile导出的方式进行上传; outfile导出的前提条件:1、必须知道网站的物理路径&#xf…

Java每日一练_模拟面试题2(循环依赖)

一、啥事Spring里面的循环依赖 SpringBoot 循环依赖通常发生在两个或多个Bean相互依赖对方时,例如:A依赖B,同时B也依赖A。 二、如何解决? 解决方案: 构造器注入:如果循环依赖发生在构造器中,S…

[YashanDB认证]YashanDB个人版安装

为什么选择YashanDB? 崖山数据库系统YashanDB是深圳计算科学研究院完全自主研发设计的新型数据库系统,经工信部下属机构权威检测,内核代码自主率100%。在经典数据库理论基础上,融入原创的有界计算理论、近似计算理论、并行可扩展理论和跨模融…

Taro学习记录(具体项目实践)

一、安装taro-cli 二、项目文件 三、项目搭建 1、Eslint配置 在项目生成的 .eslintrc 中进行配置 {"extends": ["taro/react"], //一个配置文件,可以被基础配置中的已启用的规则继承"parser": "babel/eslint-parser…

荒原之梦考研:专科考研成功的可能性大吗?

专科还是本科不是决定考研能否成功的关键因素,决定考研能否成功的关键因素是自己是否有清晰的规划、是否有足够的专注能力,以及是否能够吃得了考研的“苦”。 首先要有清晰的规划,比如说,不是我们每个人足够努力就都能考上 TOP1 …

electron-updater实现electron全量更新和增量更新——主进程部分

同学们可以私信我加入学习群! 正文开始 前言更新功能所有文章汇总一、更新插件选择二、在main.js中引入我们的更新模块三、更新模块UpdateController.js暴露的方法checkUpdate四、更新模块UpdateController.js中的监听4.1监听是否有新版本需要更新?4.2 监…

红黑树与平衡二叉树的相同之处与不同之处

红黑树很多资料上写的非常繁杂,初次接触真的难以理解。写本文也就是为了记录一些思考和想法,并不会记录如何使用代码实现。 不记录代码还有个原因:黑红树的算法就是根据各种情况进行一些操作,情况很复杂,分插入的和删…

数据结构 二叉树和堆总结

树 概念 树是一种层次结构非线性的数据结构,其是由节点和边组成,可以用来表示层次关系的数据。 树的相关概念 节点:树的基本组成单位,每个节点都包含数据,同时与其他节点相互连接根节点:树的顶层节点&…

SpringBoot_第十一章(Thymeleaf模板引擎)

目录 1:什么是Thymeleaf模板引擎 2:springboot怎使用Thymeleaf 2.1:导入pom文件 2.2:查看ThymeleafAutoConfiguration 3:Thymeleaf核心语法 4:使用Thymeleaf 5:具体语法练习 1&#xff1a…

数据集划分方法

数据集划分是机器学习和数据科学中的一个重要步骤,主要目的是为了确保模型的有效性和可靠性。 留出法(简单交叉验证) 将数据集划分为互斥的子集:训练集和测试集。 训练集: 用于训练模型。 测试集: 用于评估模型的性能和验证其准确…

图神经网络揭秘:视觉和实用指南

目录 一、说明 二、图如何网络化? 三、你需要知道的 3.1 进入图神经网络 3.2 消息传递 3.3 我们如何处理最终的向量表示? 四、图神经网络,总结 4.1 为什么选择图形神经网络? 4.2 简而言之 一、说明 了解图神经网络的世界&#xff…

C#中投影运算的深入解析与实例应用

文章目录 1、投影运算的基本语法2、投影运算的高级用法3、投影运算在向量空间中的运用4、投影运算在数据库和XML中的实际应用5、投影运算能用于哪些实际场景?6、结论 在C#编程中,投影运算是一种常用的数据操作技术,它可以将一个数据集合转换成…

开放式耳机推荐?时尚潮流品牌:悠律ringbud pro开放式耳机实测测评

作为一位音乐发烧友,什么类型的耳机都体验过,有些几百上千的耳机音质还是差点意思,还是会有听久了感觉不舒服的情况,低音量感不够的问题,直到用了悠律ringbud pro开放式耳机,才算真正打开新世界的大门&…

C语言程序设计-[2] 数据类型、常量和变量

1、数据类型 C语言支持的数据类型如下: 2、常量 常量就是不同数据类型下的值。这里主要讲整型、实型和字符型常量。 (1)整型常量:用十进制、八进制和十六进制三种形式表示。 (1)实型常量:由整…

HCIP实验-MGRE

实验拓扑: 实验要求: 1.R2为ISP,其上只能配置IP地址 2.R1-R2之间为HDLC封装 3.R2-R3之间为PPP封装,pap认证,R2为主认证方 4.R2-R4之间为PPP分装,chap认证,R2为主认证方 5.R1、R3、R4构建MG…

unity拖拽物品遇到的bug及解决思路

记录一下拖拽实现过程中遇到的bug RectTransform 专门用在UI中transform 判断点击是否在UI中 使用这个函数就可以判断点击的是否是UI面板,返回true表明在UI面板中 EventSystem.current.IsPointerOverGameObject()值得一提的是,如果发现了有UI穿透效…

【C语言】分支与循环(分支篇)

前言 C语言是一种结构化的计算机语言,这里指的通常是顺序结构、选择结构、循环结构,掌握这三种结构之后我们就可以解决大多数问题。 分支结构可以使用if、switch来实现,而循环可以使用for、while、do while来实现。 1. if语句 1.1 if if…

【滴水三期】32/64位——PE文件节表打印与解析

【作业内容】 1、手动查&#xff0c;画个PE文件图。 2、编写程序打印节表中的信息。 3、根据节表中的信息&#xff0c;到文件中找到所有的节&#xff0c;观察节的开始位置与大小是否与节表中的描述一致 【PE file_buffer文件图】 【IMAGE_SECTION_HEADER解析】 <winNT.h…

web浏览器播放rtsp视频流,海康监控API

概述 这里记录一下如何让前端播放rtsp协议的视频流 ​ 项目中调用海康API&#xff0c;生成的视频流(hls、ws、rtmp等)通过PotPlayer播放器都无法播放&#xff0c;说明视频流有问题&#xff0c;唯独rtsp视频流可以播放。 但是浏览器本身是无法播放rtsp视频的&#xff0c;即使…