java 使用 talib 计算移动平均线 , SMA计算

1.网上大部分教程基本都是基于python对talib函数的使用 , 因为pandas在python编程是比java更直观,但是也免不了有人用Java实现.

SMA 是 Single Moving Average缩写, 也就是移动平均线 , 当然 , ta-lib也有几百个其它函数, 诸如macd , 基本上都是传入 数组 .很相似 .

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import com.tictactec.ta.lib.Core;
import com.tictactec.ta.lib.MInteger;
import com.tictactec.ta.lib.RetCode;
 
public class SimpleMovingAverageExample {
 
    /**
     * The total number of periods to generate data for.
     */
    public static final int TOTAL_PERIODS = 100; //1 .数组长度100
 
    /**
     * The number of periods to average together.
     */
    public static final int PERIODS_AVERAGE = 30//2. MA移动周期窗口,这里30代表30日均线
 
    public static void main(String[] args) {
        double[] closePrice = new double[TOTAL_PERIODS];
        double[] out = new double[TOTAL_PERIODS];
        MInteger begin = new MInteger();
        MInteger length = new MInteger();
 
        for (int i = 0; i < closePrice.length; i++) {  //3. 这里是将0-99共100个自然数赋予到测试数组中,实际情况可外部传入数据 ,
            closePrice[i] = (double) i;   //closePrice[100] 就是用作存放测试数组
        }
 
        Core c = new Core();  //下面这个是获取Core实例执行sma(移动平均线)函数 , 一共7个参数 , 这里可以不用管, 因为前面已经定义了
        RetCode retCode = c.sma(0, closePrice.length - 1, closePrice, PERIODS_AVERAGE, begin, length, out);
     //说明,第一个是开始下标,结束的下标, 外界输入的数组样本 , 然后是移动平均周期 , 接着是有效数据开始于 , 有效数据长度 ,输出的样本数组           //注意, 结果存放在out数组中, 但是有效数字是从begin.value开始的, 也就是前几个数字, 是无效, 所以循环并不是从index 0开始
        if (retCode == RetCode.Success) {
            System.out.println("Output Start Period: " + begin.value);
            System.out.println("Output End Period: " + (begin.value + length.value - 1));
 
            for (int i = begin.value; i < begin.value + length.value; i++) {
                StringBuilder line = new StringBuilder();
                line.append("Period #");
                line.append(i);
                line.append(" close=");
                line.append(closePrice[i]);
                line.append(" mov_avg=");
                line.append(out[i - begin.value]);
                System.out.println(line.toString());
            }
        }
        else {
            System.out.println("Error");
        }
    }
}

  参考 https://github.com/ishanthilina/TA-Lib-Java-Examples

  ta-lib的jar包下载地址:  https://alpha7.lanzouu.com/iPuxH04etg8h

 

 

posted @   挪威森林猫Zzz  阅读(2177)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
历史上的今天:
2020-05-07 TDengine 基本操作
点击右上角即可分享
微信分享提示