java使用talib计算股票的rsi,kdj等指标

计算macd、jdk、rsi package stock.simulator.trader.web.indicatrixinterface;public interface Indicatrix { /** * 计算MACD指标数据 * * @param closePrice--收盘价要从第一天开始 * @param fastPeriod--日快线移动平均,标准为12 * 阅读详情

talib中文文档

写了一个talib工具类,因为自己只用到了这三个指标,所以只开发了这三个,给有需要的小伙伴一个参考。

maven:

<dependency>
         <groupId>com.tictactec</groupId>
         <artifactId>ta-lib</artifactId>
         <version>0.4.0</version>
</dependency>

实体类:

package cn.flashylife.vo;

import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import java.math.BigDecimal;

/**
 * 股票行情信息实体类(用来查询固定的字段)
 */
@Setter
@Getter
@ToString
public class StockBasicInfoVO {
    /**
     * 交易日期
     */
    private String sbiTradeDate;
    /**
     * 股票代码
     */
    private String sbiCode;
    /**
     * 最新价(收盘价)
     */
    private BigDecimal sbiClose;
    /**
     * 最高价
     */
    private BigDecimal sbiHigh;
    /**
     * 最低价
     */
    private BigDecimal sbiLow;
}

工具类:
因为自己调用前已经对非空,非null做过判断,使用时需注意。

package cn.flashylife.util;

import cn.flashylife.vo.StockBasicInfoVO;
import com.tictactec.ta.lib.Core;
import com.tictactec.ta.lib.MAType;
import com.tictactec.ta.lib.MInteger;
import com.tictactec.ta.lib.RetCode;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

/**
 * @date 2022年3月29日13:50:24
 * @Description
 *      股票指标工具类
 *      用来计算各种指标(如:ma,rsi,kdj)
 * @author flashylife
 */
public class StockIndexUtils {

    /**
     * 禁止初始化
     */
    private StockIndexUtils() {}

    /**
     * 获取ma
     *
     * @param value ma的参数(5,10,15,20等)
     * @return
     */
    public static double[] ma(int value, List<StockBasicInfoVO> list) {
        if (value <= 0) {
            throw new RuntimeException("天数不能小于0");
        }
        // 收盘价
        double[] inClose = new double[list.size()];
        // 返回的数据最后value + 1没有值
        double[] output = new double[list.size() - value + 1];

        for (int i = 0; i < list.size(); i++) {
            inClose[i] = list.get(i).getSbiClose().doubleValue();
        }

        Core core = new Core();

        // ma 需要四舍五入
        RetCode code = core.sma(0, inClose.length - 1, inClose, value, new MInteger(), new MInteger(), output);

        if (code == RetCode.Success) {
            output = Arrays.stream(output)
                    .map(e -> new BigDecimal(e)
                            .setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue())
                    .toArray();
        }
        return output;
    }

    /**
     * 获取rsi
     * @param value rsi的参数(6,12,24等)
     * @return
     */
    public static double[] rsi(int value, List<StockBasicInfoVO> list) {
        // 收盘价
        double[] inClose = new double[list.size()];
        // 返回的数据最后value没有值
        double[] output = new double[list.size() - value];

        for (int i = 0; i < list.size(); i++) {
            inClose[i] = list.get(i).getSbiClose().doubleValue();
        }

        Core core = new Core();

        // rsi 直接截取
        RetCode code = core.rsi(0, inClose.length - 1, inClose, value, new MInteger(), new MInteger(), output);

        if (code == RetCode.Success) {
            output = Arrays.stream(output)
                    .map(e -> new BigDecimal(e)
                            .setScale(2, BigDecimal.ROUND_DOWN).doubleValue())
                    .toArray();
        }
        return output;
    }

    /**
     * 获取kdj(使用默认的9,3,3)
     *
     * @return
     */
    public static List kdj(List<StockBasicInfoVO> list) {
        // 最高
        double[] inHigh = new double[list.size()];
        // 收盘
        double[] inClose = new double[list.size()];
        // 最低
        double[] inLow = new double[list.size()];

        // 输出的k(最后16位没有值)
        double[] k = new double[list.size() - 16];
        // 输出的d(最后16位没有值)
        double[] d = new double[list.size() - 16];
        // 手动计算j值(3*k - 2*d)
        double[] j = new double[list.size() - 16];

        for (int i = 0; i < list.size(); i++) {
            inHigh[i] = list.get(i).getSbiHigh().doubleValue();
            inClose[i] = list.get(i).getSbiClose().doubleValue();
            inLow[i] = list.get(i).getSbiLow().doubleValue();
        }

        List kdjList = null;

        Core core = new Core();

        // kd 直接截取
        RetCode code = core.stoch(0, inHigh.length - 1, inHigh, inLow, inClose, 9, 5, MAType.Ema, 5, MAType.Ema, new MInteger(), new MInteger(), k, d);

        if (code == RetCode.Success) {
            // 计算j值(保留2位)
            for (int i = 0; i < d.length; i++) {
                BigDecimal b1 = new BigDecimal(k[i]).multiply(new BigDecimal(3));
                BigDecimal b2 = new BigDecimal(d[i]).multiply(new BigDecimal(2));
                j[i] = b1.subtract(b2).setScale(2, BigDecimal.ROUND_DOWN).doubleValue();
            }

            // 计算k值(保留2位)
            k = Arrays.stream(k)
                    .map(e -> new BigDecimal(e)
                            .setScale(2, BigDecimal.ROUND_DOWN).doubleValue())
                    .toArray();

            // 计算d值(保留2位)
            d = Arrays.stream(d)
                    .map(e -> new BigDecimal(e)
                            .setScale(2, BigDecimal.ROUND_DOWN).doubleValue())
                    .toArray();

            kdjList = new ArrayList();
            kdjList.add(k);
            kdjList.add(d);
            kdjList.add(j);
        }
        return kdjList == null ? Collections.emptyList() : kdjList;
    }
}

备注:
如果计算出来的数据不准确,请确认计算的时间区间是否过小,我使用的是120个交易日数据,计算出来和东方财富网页版一致。

【Java】基于TA-Lib技术分析指标研究 【Java】SFC融媒体项目基于TA-Lib技术分析指标研究 【Java】SFC融媒体项目基于TA-Lib技术分析指标研究 0. 前言 1. TA-Lib介绍 2. TA-Lib数据准备 2.1 指标因子MasterData 2.2 指标结果数据 3. TA-Lib指标SAR 3.1 SAR介绍 2.2 SAR计算 3.3 SAR标准 3.4 SAR优点 3.5 SAR 实... 阅读详情

相关推荐

【Java】基于TA-Lib量化分析研究.pdf

近期项目中有需要构建一个量化分析模块,能够实现常规的各种技术指标,并可以自由扩展添加客户创建的技术指标。同时,能够基于本地打造的数据平台,能够给出1-2中策略模型来打通整体数据从采集到最终生产的过程。经过调查,TA-Lib库中已经有超多实现的技术指标,可以节省从零开始造轮子的精力。本次给客户开发的平台都是基于J2EE开发的,所以采用了TA-Lib的Java版本JAR进行开发(主要是开发人员都是Java,项目组没有Python ,否则应该使用更加方便)。

ta-lib java版介绍

介绍 想要不依赖量化平台进行技术分析的话,可以尝试使用ta-lib这个库,称Technical Analysis Library。当然我们自己实现分析指标也是可以的,不过时间和验证都需要我们花费不少精力,没必要去重复造轮子。 源代码地址:http://www.github.com/BYVoid/TA-Lib 包括 200多个指标计算,如MACD,RSI,随机,布林带 等等 等指标。 ( 更多信息...

陆多多的专栏 6348

Flutter 直接调用so动态库,或调用C/C++源文件内函数

我把 .so 文件尝试放过好几个目录/lib/,最终都会报这个错误,现在才知道库文件需要放在你根本想象不到的地方!!!尝试了一些方法还是不行后我放弃了 ffi,想着用 Flutter 的 MethodChannel 桥接 android/ios 原生,再让原生去调 native 层。一顿操作把Android端的搞定了,当然中间涉及到 Kotlin和C++ 层的数据类型映射的痛苦,而且业务函数也不像一个 helloworld 那么简单,别提有多痛苦了。

开发以大橘为重 8352

java ta-lib 计算移动标准差,金融滚动标准差计算

java ta-lib包, 计算滚动的标准差。

weixin_44602405的博客 1016

DFT设计绪论

DFT设计的主要目的是为了将defect-free的芯片交给客户。 产品质量,通常使用Parts Per million(PPM)来衡量。 但是随着IC从SSI到VLSI的发展,在test上花销的时间越来越多,test的quality却很难提高,这使得DFT的engineer不断的发展着DFT的技术。 DFT engineer面对的第一个问题是设计内部的状态的可测试性问题。在...

ahr7882的博客 1195

【图文步骤】EC-Engineer部分操作详细步骤

EC-Engineer部分功能详细使用手册

weixin_42212468的博客 6172

boll指标 java_ta-lib计算BOLL值、RSI值、OBV成交量

在使用Ta-lib计算MACD与KDJ 篇中给出了使用python talib模块计算MACD 和 KDJ值的方法,除了这两个指标,本篇再结合该模块,取下BOLL 布林线、RSI 强弱指数、OBV成交量三个指标。一、BOLL布林线布林线指标,即BOLL指标,其英文全称是“Bollinger Bands”,布林线(BOLL)由约翰 布林先生创造,其利用统计原理,求出股价的标准差及其信赖区间,从而确...

weixin_42341237的博客 3782

safetensors_rust.SafetensorError: Error while deserializing header: MetadataIncompleteBuffer解决方案

本文主要介绍了safetensors_rust.SafetensorError: Error while deserializing header: MetadataIncompleteBuffer解决方案,希望能对使用Python的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案 2.1 Windows 2.2 Linux

weixin_43178406的博客 15万+

python ta-lib ImportError: libta_lib.so.0: cannot open shared object file: No such file or directory

转自:http://www.361way.com/python-talib/6133.html 一、Ta-lib概述 Ta-lib是金融软件中应用广泛的专门用来计算技术指标的开源库,涵盖了200多种市场常见的技术指标运算。它支持java,C,C++,Perl,Python等多种语言。比如股票指标中的EMA(指数移动平均值)和WMA(加权移动平均值)就可以使用该库里的MA函数实现。常用的指标MACD、KDJ、RSI等都可以通过该库里的相关函数进行实现。所以在量化交易中一般会用到该库。 Ta-lib的py

yudajiangshan的博客 1591

2023年五一数学建模 | 第二十届五一数学建模C题:“双碳”目标下低碳建筑研究

2023年五一数学建模 | 第二十届五一数学建模C题:“双碳”目标下低碳建筑研究

前程算法屋的博客 1379

太阳敏感器:卫星姿态控制的“指南针

在卫星姿态控制系统中,太阳敏感器(Sun Sensor) 是至关重要的光学姿态敏感器之一。它通过探测太阳光的方向,为卫星提供关键的姿态参考信息,确保卫星能够正确调整自身方位,维持稳定的对日定向,保障能源供应和任务执行。

ScilogyHunter的博客 1731

python taslate_python Ta-lib的安装

一、Ta-lib概述Ta-lib是金融软件中应用广泛的专门用来计算技术指标的开源库,涵盖了200多种市场常见的技术指标运算。它支持java,C,C++,Perl,Python等多种语言。比如股票指标中的EMA(指数移动平均值)和WMA(加权移动平均值)就可以使用该库里的MA函数实现。常用的指标MACD、KDJ、RSI等都可以通过该库里的相关函数进行实现。所以在量化交易中一般会用到该库。二、pyth...

weixin_39738115的博客 367

矢量网络分析仪校准:原理、方法与系统适配性

矢量网络分析仪(VNA)校准是射频测量的关键环节,通过误差建模(12项误差项)和标准件测量,可将系统不确定度从±5dB降至±0.1dB以下。主流校准方法包括SOLT(适用于同轴系统)和TRL(适用于波导系统),二者在标准件、误差重点及频率上限等方面存在显著差异。随着6G与量子通信的发展,动态实时校准将成为新趋势。工程师需根据传输结构、频率范围及精度需求选择合适方法,确保测量精度。

u014344410的博客 262

czsc 公开 API 全景手册:Rust 缠论核心与 Python 门面的双语言 API 参考

> 本文是 `czsc`(缠中说禅技术分析工具)公开 API 的完整参考手册。czsc 1.0 采用「Rust 缠论核心 + Python 门面」混合架构:分型、笔、中枢、信号、交易器全部由 Rust crate 实现,通过 PyO3 暴露为 `czsc._native`,Python 顶层再以 `__all__` 契约统一 re-export。读完本文,你将掌握 czsc 全部公开 API 的用

gitblog_01162的博客 961

2、MOSFET基本物理效应及其BSIM4模型解析

本文深入探讨了MOSFET的基本物理效应及其在BSIM4模型中的数学表述,涵盖门和沟道的几何结构、温度依赖性、材料模型选项、阈值电压计算、以及其他关键物理效应如LDD电阻、有限电荷厚度、有效迁移率等。同时解析了机械应力、邻近效应及布局依赖效应对MOSFET性能的影响,并通过参数表和建模流程提供了精确建模的指导,旨在帮助读者优化MOSFET器件性能与可靠性。

purple的博客 566

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

JAVA直接使用talib库_量化笔记:金融指数处理库talib介绍与安装

talib介绍Python 金融指数处理库TA-LIB,他是基于 Cython,而不是 SWIG。TA-Lib is widely used by trading software developers requiring to performtechnical analysis of financial market data.TA-Lib广泛应用与交易软件,和金融市场数据进行技术分析。Inc...

weixin_32141627的博客 2980

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

java kdj_KDJ 指标简单实现

今天测试使用KDJ的时候,发现talib上没有这个方法。于是,找公式准备自己实现一遍。KDJ指标又叫随机指标,是一种短线指标,它是由KD指标发展而来的。实现步骤KDJ的实现步骤主要分成三步:1、先计算“未成熟随机值”,即RSVimage.png2、求出当日的K值和D值(即计算出RSV值的3日指数移动平均)image.png3、计算出J值J = 3 * D - 2 * KKDJ简单理解1、RSV线过...

weixin_30771489的博客 2244

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

探秘TA-Lib:一款强大的金融技术分析库

探秘TA-Lib:一款强大的金融技术分析库 去发现同类优质开源项目:https://gitcode.com/ 在金融市场中,技术分析是一种广泛使用的交易策略,它依赖于历史价格和成交量数据来预测未来的走势。如果你是一名热衷于金融分析或算法交易的程序员,那么TA-Lib绝对值得你关注。下面我们将深入探讨该项目的背景、技术细节、应用领域和独特之处。 项目简介 TA-Lib(Technical Analy...

gitblog_00065的博客 847

TA-Lib中文文档(一):快速开始

TA-Lib 简介: 这是一个Python 金融指数处理库TA-LIB,他是基于 Cython 而不是 SWIG。 TA-Lib is widely used by trading software developers requiring to perform technical analysis of financial market data. TA-Li...

weixin_30376083的博客 1531

java计算股票技术指标之kdj与macd

MACD(Moving Average Convergence Divergence)是一种常用的技术分析工具,它通过计算两个不同周期的移动平均线(MA)的差值来分析股票或其他金融产品的价格趋势。DIF(Difference of Fast and Slow Moving Average):这是两个不同周期的移动平均线(MA)之间的差值,其中较快的移动平均线减去较慢的移动平均线。MACD的优点在于它能够平滑地处理数据,减少随机波动的影响,从而提供更稳定的趋势分析。

m0_63122693的博客 1998

java ema算法_K线图指标算法(MA EMA)

写在前面的话本人android开发股线图时基于MpAndroidChart开发的,所以后面用到的算法中CandleEntry, Entry等都是MpAndroidChart的API,均使用java实现,算法经过对比验证,和其他证券平台的指标结果一致。目前只研究了MA、EMA、BOLL、MACD、KDJ、RSI几种指标。一、MA:英文(Moving average)的简写,叫移动平均线指标,算法最简...

weixin_32139249的博客 4218

ta-lib 源码简单分析

ta-lib的源码比较简单,重要的类就那么几个,如下: 类功能介绍 Core 指标分析实现的地方,类行数很多,ta-lib的核心 包含一些特性设置和功能实现,以macd为例,包含macdLookback,macd,macdExtLookback,macdExt,macdFixLookback,macdFix等实现。 可以发现,这些方法和参数都是有规律的。 macd指标实现方法为macd...

陆多多的专栏 4293

java 股票指标算法库_股票K线指标算法整理(Java封装工具类,K线指标算法工具类)...

【实例简介】支持:EMA,BOLL,CCI,DMI,KDJ,MACD,OBV,RSI,SAR,VOL,WRK线指标算法工具类 目前应用:https://www.coinsmt.com/fullScreen/huobipro_btc_usdt【实例截图】【核心代码】chart_data_utils└── chart_data_utils├── chart_base_entity│ ├── Bar...

weixin_39610678的博客 1938

Java 蜡烛图_ta-lib 里的蜡烛图形态函数源码

ta-lib 里的蜡烛图形态函数源码以CDL2CROWS为例, 看一看c语言的源码:有关的源码文件包括d:\Documents\Pictures\ta-lib\c\src\ta_func\ta_CDL2CROWS.cd:\Documents\Pictures\ta-lib\c\src\ta_func\ta_utility.hd:\Documents\Pictures\ta-lib\c\src\ta...

weixin_32540913的博客 604

java rsi_高频交易算法研发心得--RSI指标及应用

高频交易算法研发心得--RSI指标及应用前面文章中我们提到了MA均线(包括EMA,SMA)、MACD以及SAR指标,这三类指标存在一个共同特点,即:从固定周期的价格作为判读的指导思想,并将价格进行平滑处理,然后得到可参考的判读结果。今天我们变换思维,并从市场的角度来考量问题,同时,来聊聊RSI指标。1.指标定义RSI:相对强弱指数(Relative Strength Index),是根据一定时期内...

weixin_31937605的博客 1682

股票K线指标算法整理(Java封装工具类)

工具类下载地址: https://download.youkuaiyun.com/download/qq_28844947/11088865 可查看应用效果之一:https://www.coinsmt.com/fullScreen/huobipro_btc_usdt 目前是java实现 使用在MPAndroid上面,其他语言和图表工具类比过去,可以然后将X,Y赋值过去 使用需知 char...

qq_28844947的博客 7352
上一篇: 短线交易秘诀---大小价格区间,开盘价,价格爆炸点
下一篇: 投资交流学习
flashylife
博客等级 码龄9年 18粉丝 5原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

flashylife

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

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

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

打赏作者

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

抵扣说明:

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

余额充值