当前位置: 首页 > news >正文

[量化投资-学习笔记009]Python+TDengine从零开始搭建量化分析平台-KDJ

技术分析有点像烹饪,收盘价、最值、成交量等是食材;均值,移动平均,方差等是烹饪方法。随意组合一下就是一个技术指标。

KDJ又称随机指标(随机这个名字起的很好)。KDJ的计算依据是最高价、最低价和收盘价。K、D、J 是图中的三条线。

要计算 KDJ,需要先计算价差 RSV,RSV=((收盘价-最低价)/(最高价-收盘价))*100

  • K = RSV 的指数移动平均值(平滑因子=1/3)
  • D = K 的指数移动平均值(平衡因子=1/3)
  • J = K3 - D2

看到这个有没有有点眼熟,先求差值,然后做移动平均,然后再二次平均,最后再取差值。是哪个指标呢??

答案揭晓:MACD

我们直接来看KDJ 和 MACD 的代码,就能直观的看到两者的相似之处。

n = 9
m = 3
df['lowest low'] = df['low'].rolling(window=n).min()
df['highest high'] = df['high'].rolling(window=n).max()
df['RSV'] = (df['close'] - df['lowest low']) / (df['highest high'] - df['lowest low']) * 100
df['K'] = df['RSV'].ewm(adjust=False, alpha=1/m).mean()
df['D'] = df['K'].ewm(adjust=False, alpha=1/m).mean()
df['J'] = 3 * df['K'] - 2 * df['D']
df['EMA12'] =  pd.DataFrame.ewm(df['close'],span=12).mean()
df['EMA26'] =  pd.DataFrame.ewm(df['close'],span=26).mean()
df['DIF'] = pd.DataFrame.ewm(df['close'],span=12).mean() - pd.DataFrame.ewm(df['close'],span=26).mean()
df['DEA'] = pd.DataFrame.ewm(df['DIF'],span=9).mean()
df['OSC'] = df['DIF'] - df['DEA']

通过对比,我们可以发现:

  • KDJ 比 MACD 多引入了最高价和最低价,在计算前后都进行了加权。
  • KDJ 对比的是收盘价与最值间的差值,MACD 对比的是不同周期收盘价的差值。
  • KDJ 反应的是同一周期内价格的波动程度,MACD 反应的是价格在一段时间的变化趋势。

具体代码我就不放了,因为和其他指标的实现方法基本相同。直接关门放 AI 就可以了。
在这里插入图片描述
在这里插入图片描述

题外话

在周期短的情况下,KDJ 指标的变化非常剧烈基本不具有指导意义,将计算周期拉长,更有参考意义。

网上很多文具在介绍 KDJ 时,都提到使用 KDJ 来预测转折点。对于至一点,我一直持怀疑态度。所有的技术指标都是根据历史数据计算出来的,依据的是历史信息,对未来的指导意义我认为是有限的。

技术指标用来做趋势的确认,我认为是合理的,但是充当预测的水晶球,就有点梦幻了。

http://www.lryc.cn/news/226227.html

相关文章:

  • Activiti6工作流引擎:Form表单
  • Fortran 中的指针
  • 第七章 块为结构建模 P4|系统建模语言SysML实用指南学习
  • 提升中小企业效率的不可或缺的企业云盘网盘
  • Web 安全之时序攻击 Timing Attack 详解
  • 【objectarx.net】定时器的使用
  • C++:容器list的介绍及使用
  • 元核云亮相金博会,智能质检助力金融合规
  • Harmony 应用开发的知识储备
  • (层次遍历)104. 二叉树的最大深度
  • 【api_fox】ApiFox简单操作
  • 给CAD中添加自定义菜单CUIX
  • Qt重启windows服务
  • OD机考真题:宜居星球改造计划
  • Python每日练习:20个常用代码,初学者也可以自己实现!
  • GitHub Copilot Chat将于12月全面推出;DeepLearning.AI免费新课
  • Java的流操作:让数据处理更简单,更高效
  • 3D渲染原理及朴素JavaScript实现【不使用WebGL】
  • 解决《荒野大镖客》提示emp.dll文件丢失问题,总结5个修复方法
  • maven重新加载后Target bytecode version总是变回1.8
  • react+星火大模型,构建上下文ai问答页面(可扩展)
  • python---设计模式
  • Java编写xml文件时,文件中特殊字符如何解决?
  • vue3 ts pinia openapi vue-query pnpm docker前端架构小记
  • ARM day4
  • 3.30每日一题(多元函数微分学)
  • 《OSTEP》条件变量(chap30)
  • MySQL的索引和复合索引
  • 关于mac下pycharm旧版本没删除的情况下新版本2023安装之后闪退
  • Django中如何让DRF的接口针对前后台返回不同的字段