Python实现KDJ指标计算:股票技术分析的利器系列(3)

Python实现KDJ指标计算:股票技术分析的利器系列(3)

    • 介绍
      • 算法解释
    • 代码
      • rolling函数介绍
      • 计算LLV(最低价最小值)和HHV(最高价最大值)
      • 计算RSV
      • 计算SMA(简单移动平均)
    • 完整代码
    • 计算结果


介绍

先看看官方介绍:

KDJ(随机指标)
用法
1.D指标>80 时,回档机率大;D指标<20时,反弹机率大;
2.K在20左右向上交叉D时,视为买进信号;
3.K在80左右向下交叉D时,视为卖出信号;
4.J>100 时,股价易反转下跌;J<0 时,股价易反转上涨;
5.KDJ 波动于50左右的任何信号,其作用不大。

算法解释

RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;
K:SMA(RSV,M1,1);
D:SMA(K,M2,1);
J:3*K-2*D;
  1. RSV(Raw Stochastic Value):原始随机值。RSV是根据最近N个交易日内的收盘价,计算其相对于最高价和最低价的位置比例。公式为:RSV = (CLOSE - LLV(LOW, N)) / (HHV(HIGH, N) - LLV(LOW, N)) * 100。其中LLV代表最低价的最小值,HHV代表最高价的最大值。

  2. LLV(Lowest Value):最低价的最小值。LLV函数用于计算最近N个交易日内的最低价的最小值。

  3. HHV(Highest Value):最高价的最大值。HHV函数用于计算最近N个交易日内的最高价的最大值。

  4. SMA(Simple Moving Average):简单移动平均线。SMA是一种用于平滑数据的常见方法,通过计算一段时间内数据的平均值来观察价格的长期趋势。

KDJ指标中的K、D、J分别代表:

  • K:代表快速随机值,是RSV的平滑移动平均线,常用于观察价格的短期波动情况。
  • D:代表慢速随机值,是K的平滑移动平均线,用于观察价格的中期趋势。
  • J:代表J值,是根据K和D计算得出的一个值,常用于观察价格的长期趋势和判断超买超卖情况。

在KDJ指标中,通常会设定两个参数M1和M2,分别用于计算K和D的移动平均值。

代码

rolling函数介绍

rolling 函数通常与其他函数(如 meansumstd 等)一起使用,以计算滚动统计量,例如滚动均值、滚动总和等。

以下是 rolling 函数的基本语法:

DataFrame.rolling(window, min_periods=None, center=False, win_type=None, on=None, axis=0, closed=None)
  • window: 用于计算统计量的窗口大小。
  • min_periods: 每个窗口最少需要的非空观测值数量。
  • center: 确定窗口是否居中,默认为 False
  • win_type: 窗口类型,例如 Noneboxcartriang 等,默认为 None
  • on: 在数据帧中执行滚动操作的列,默认为 None,表示对整个数据帧执行操作。
  • axis: 执行滚动操作的轴,默认为 0,表示按列执行操作。
  • closed: 确定窗口的哪一端是闭合的,默认为 None

计算LLV(最低价最小值)和HHV(最高价最大值)

# 定义函数计算LLV(最低价最小值)和HHV(最高价最大值)
def calculate_llv_high_low(high, low, n):return low.rolling(window=n).min(), high.rolling(window=n).max()

计算RSV

# 定义函数计算RSV
def calculate_rsv(close, llv_low, hhv_high):return (close - llv_low) / (hhv_high - llv_low) * 100

计算SMA(简单移动平均)

# 定义函数计算SMA(简单移动平均)
def calculate_sma(data, window):return data.rolling(window=window).mean()

完整代码

import pandas as pd# 定义函数计算LLV(最低价最小值)和HHV(最高价最大值)
def calculate_llv_high_low(high, low, n):return low.rolling(window=n).min(), high.rolling(window=n).max()# 定义函数计算RSV
def calculate_rsv(close, llv_low, hhv_high):return (close - llv_low) / (hhv_high - llv_low) * 100# 定义函数计算SMA(简单移动平均)
def calculate_sma(data, window):return data.rolling(window=window).mean()# 示例数据
data = {'CLOSE': 填每日收盘的数据,'HIGH': 填每日最高的数据,'LOW': 填每日最低的数据
}
df = pd.DataFrame(data)# 设置参数
N = 9
M1 = 3
M2 = 3# 计算LLV和HHV
df['LLV_LOW'], df['HHV_HIGH'] = calculate_llv_high_low(df['HIGH'], df['LOW'], N)# 计算RSV
df['RSV'] = calculate_rsv(df['CLOSE'], df['LLV_LOW'], df['HHV_HIGH'])# 计算K
df['K'] = calculate_sma(df['RSV'], M1)# 计算D
df['D'] = calculate_sma(df['K'], M2)# 计算J
df['J'] = 3 * df['K'] - 2 * df['D']print(df)

计算结果

在这里插入图片描述

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

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

相关文章

Linux——信号(1)

在我们使用Linux系统的时候我们经常会使用ctrl c的方式来终止进程&#xff0c;也 会使用kill命令来杀掉进程&#xff0c;评判进程退出的健康程度中也有信号的身影。那 么Linux中的信号到底是什么&#xff1f;今天就由我来介绍Linux中的信号。1. 信号的概念 要了解计算机中的信…

「优选算法刷题」:连续数组

一、题目 给定一个二进制数组 nums , 找到含有相同数量的 0 和 1 的最长连续子数组&#xff0c;并返回该子数组的长度。 示例 1: 输入: nums [0,1] 输出: 2 说明: [0, 1] 是具有相同数量 0 和 1 的最长连续子数组。 示例 2: 输入: nums [0,1,0] 输出: 2 说明: [0, 1] (或…

mysql在服务器中的主从复制Linux下

mysql在服务器中的主从复制Linux下 为什么要进行主从复制主从复制的原理主从复制执行流程操作步骤主库创建从库创建 测试 为什么要进行主从复制 在业务中通常会有情况&#xff0c;在sql执行时&#xff0c;将表锁住&#xff0c;导致不能进行查询&#xff0c;这样就会影响业务的…

DS:栈和队列的相互实现

创作不易&#xff0c;感谢友友们三连&#xff01;&#xff01; 一、前言 栈和队列的相互实现是用两个栈去实现队列或者是用两个队列去实现栈&#xff0c;这样其实是把问题复杂化的&#xff0c;实际中没有什么应用价值&#xff0c;但是通过他们的相互实现可以让我们更加深入地理…

vue的十大面试题详情

1 v-show与v-if区别 v-if与v-show可以根据条件的结果,来决定是否显示指定内容&#xff1a; v-if: 条件不满足时, 元素不会存在. v-show: 条件不满足时, 元素不会显示(但仍然存在). <div id"app"><button click"show !show">点我</but…

(2024,提示优化,监督微调,强化学习,近端策略优化)用于安全生成文本到图像的通用提示优化器

Universal Prompt Optimizer for Safe Text-to-Image Generation 公和众和号&#xff1a;EDPJ&#xff08;进 Q 交流群&#xff1a;922230617 或加 VX&#xff1a;CV_EDPJ 进 V 交流群&#xff09; 目录 0. 摘要 2. 相关工作 3. 提议的框架 4. 实验 0. 摘要 文本-图像&a…

软件实例分享,酒店酒水寄存管理系统软件教程

软件实例分享&#xff0c;酒店酒水寄存管理系统软件教程 一、前言 以下软件教程以 佳易王酒水寄存管理系统软件V16.0为例说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 1、寄存的商品名称可以预先设置 2、寄存人可以使用手.机号识别 3、会员充值…

详解4大C语言内存函数【超详细建议点赞收藏】

目录 1. memcpy----内存拷贝1.1 函数介绍1.2 函数使用1.3 模拟实现 2. memmove----重叠内存的数据拷贝2.1 函数介绍2.2 函数使用2.3 模拟实现 3. memcmp----内存比较3.1 函数介绍3.2 函数使用 4.memset----内存设置4.1 函数介绍4.2 函数使用 注意&#xff1a;以下4个内存函数在…

Springboot医院信息管理系统源码 带电子病历和LIS Saas应用+前后端分离+B/S架构

目录 系统特点 技术架构 系统功能 1、 标准数据维护 2、 收费&#xff08;门诊/住院&#xff09;系统 3、 药剂管理系统 4、 医生工作站系统 5、 护士工作站系统 6、电子病历系统 系统优点 云HIS系统简介 云HIS系统功能模块 门急诊挂号管理 门诊收费管理 门诊医…

ansible剧本中的角色

1 roles角色 1.1 roles角色的作用&#xff1f; 可以把playbook剧本里的各个play看作为一个角色&#xff0c;将各个角色打的tasks任务、vars变量、template模版和copy、script模块使用的相关文件等内容放置在指定角色的目录里统一管理&#xff0c;在需要的时候可在playbook中使…

通过Nginx实现在浏览器查看Linux服务器日志

一、在nginx配置文件的server标签内加入以下标签和内容 location /logs {alias /data/nginx/logs;#nginx日志目录autoindex on;#打开目录浏览功能autoindex_exact_size off;#默认为on,显示出文件的确切大小,单位是bytes#显示出文件的大概大小,单位是kb或者mb或者gbautoinde…

直接选择排序算法

​​​​​​目录 选择排序 SelectSort直接选择排序 整体思路 图解分析 ​ 代码实现 时间复杂度 选择排序 基本思想&#xff1a; 每一次从待排序的数据元素中选出最小&#xff08;或最大&#xff09;的一个元素&#xff0c;存放在序列的起始位置&#xff0c;直到全部待排…

【SV的面向对象 SV的类_2024.01.02】

OOP术语 OOP&#xff1a;object oriented programming Class类&#xff1a;包含变量和子程序的基本构建块 Object对象&#xff1a;类的一个实例 Handle句柄&#xff1a;指向对象的指针 Property属性&#xff1a;存储数据的变量&#xff1b;在V中&#xff0c;可以是wire或reg类…

java-场景题

1、超时关单 delayQueue 延迟队列不支持分布式RocketMQ 延迟投递Redis 设置过期时间监听过期事件定时任务&#xff08;阿里&#xff09; 定时任务搂数据库&#xff08;对数据库有压力&#xff09;超时中心 2、分布分表如何进行分页查询 采用es&#xff0c;由es完成分页查询&…

NOTA-马来酰亚胺,1295584-83-6,可作为过渡金属离子的配体

您好&#xff0c;欢迎来到新研之家 文章关键词&#xff1a;NOTA-马来酰亚胺&#xff0c;NOTA Maleimide &#xff0c;NOTA-Mal&#xff0c;1295584-83-6 一、基本信息 产品简介&#xff1a;NOTA Maleimide, also known as NOTA maleimide, is a novel bifunctional integrat…

【LeetCode每日一题】单调栈 402 移掉k位数字

402. 移掉 K 位数字 给你一个以字符串表示的非负整数 num 和一个整数 k &#xff0c;移除这个数中的 k **位数字&#xff0c;使得剩下的数字最小。请你以字符串形式返回这个最小的数字。 示例 1 &#xff1a; 输入&#xff1a;num "1432219", k 3 输出&#xff…

Sora不懂物理世界,翻车神图全网爆笑!LeCun马斯克DeepMind大佬激辩世界模型

大火的Sora&#xff0c;让许多动画、影视行业的人大为恐慌。 不过&#xff0c;今天网上广为流传的这张图&#xff0c;让大家倒是放心了不少。 可以看到&#xff0c;在这个视频中&#xff0c;玻璃杯碎裂的方式十分诡异—— 它被抬到半空中时&#xff0c;桌子上就忽然出现了一滩…

PWM功能介绍 和配置

泰山派默认提供了3组PWM的GPIO &#xff0c; 为了检测PWM的输出&#xff0c;我们可以配合逻辑分析仪来查看效果&#xff0c;或者搭配STC8的LED灯 PWM 测试 列举所有的PWM设备&#xff1a; # 查找所有有pwm名称的文件 find / -name "pwm" # pwm4: pwmfe6e0000 edp屏幕…

Vue2:Vuex中使用mapMutations和mapActions

一、情景说明 上一节&#xff0c;我们学会在vc的computed模块中&#xff0c;使用mapState和mapGetters来简化代码 这一节&#xff0c;我们学习在vc的methods模块中&#xff0c;使用mapMutations和mapActions来简化代码 在vc的methods中&#xff0c;我们会使用到store的dispat…

控制与状态机算法

控制与状态机算法是计算机科学、电子工程和自动化领域中常用的一种设计工具,它用来描述一个系统的行为,该系统在不同时间点可以处于不同的状态,并且其行为取决于当前状态以及输入的信号或事件。状态机算法的核心概念包括: 状态(State):系统的任何可能配置。每个状态代表…