基于Java的证券交易技术指标

时间:2022-09-17 12:42:05

基于Java的证券交易技术指标

摘要:相对于传统的图形分析,技术指标分析比较客观。传统的图形分析有很大的争议性,而技术指标是一个确定值,没有多少争论的余地。该文阐述MACD指标(MACD线、信号线)和MACD柱的计算方法及计算机实现。

关键词:Java语言;C语言;图形程序;MACD指标(MACD线、信号线)和MACD柱

中图分类号:TP311文献标识码:A文章编号:1009-3044(2009)36-10565-03

Java-Based Securities Trading Technical Indicators

LIN Heng-jian

(Fujian Communications Technology College Information Department, Fuzhou 350007, China)

Abstract: Compared with traditional graphical analysis, More objective analysis of technical indicators. Traditional graphical analysis are of great controversy,Technical indicators are a definite value, Do not be controversial.In this paper, MACD indicators (MACD line, signal line) and MACD columns in the calculation and the computer implementation.

Key words: Java language; C language, graphics program; MACD indicators (MACD line、signal line) and MACD column

一位成功的交易者对于市场的了解程度,必须超过交易对手,使用计算机编写技术指标并利用它进行交易可以让你进行更透彻的分析。计算机可以协助你深入追踪与分析更多的市场,处理更多的信息,处理例行的事务,让你有更多的时间与精力从事思考,可以让你运用更多的指标,掌握更多的交易机会。交易最终是一场信息的游戏。

相对于传统的图形分析,技术指标分析比较客观。某个走势图是否出现“头肩底”形态,使用传统的图形分析,不同的人会有不同的看法,相对而言技术指标计算出来的值是确定的,没有多少争论的余地。

1 技术指标的分类、各类指标的适用范围

技术指标一般分为三大类:趋势跟随指标、摆荡指标与复合指标。趋势跟随指标适用于趋势明显的行情,在横向走势中,它们所提供的信号并不理想甚至是非常危险的,该类指标属于同步或滞后指标。振荡指标适用于捕捉横向走势中的转折点,当行情开始呈现趋势,它们所提供的信号并不准确甚至是危险的,该类指标属于领先或同步指标。复合指标主要是反映交易者的心理方面有独特的作用,该类指标属于领先或同步指标。

本文重点讨论的MACD(Moving Average Convergence-Divergence,)指标与MACD柱属于趋势跟随指标。

2 MACD指标(MACD线、信号线)和MACD柱的计算方法及实现。

最初的MACD指标是由两条曲线构成:一条红线(又叫MACD线、快线)与一条黄线(又叫信号线、慢线)。MACD线由两条EMA相减获得,它对于价格变动的反应比较敏感。信号线是MACD线经过指数平滑之后的另一条EMA。它对于价格变动的反应比较缓慢。 当快速的MACD线穿越慢速的讯号线,即代表买进与卖出的讯号。

MACD指标(MACD线、信号线)和MACD柱的计算方法如下:

1) 计算收盘价的12天EMA值。

2) 计算收盘价的26天EMA值。

3) 12天EMA减去26天EMA,将此差价值绘制为红线,这是快速的MACD线。

4) 计算快速线的9天EMA,将结果绘制为黄线,这就是信号线。

5) MACD线减去信号线所得值就是MACD柱。结果为正数画红线,负数画绿线。

根据这些理论就可以编写程序,实现计算机自动绘制。

2.1 交易数据的读取分析与转换.

在绘制MACD指标(MACD线、信号线)和MACD柱之前,首先要解决交易数据的读取和转换。先从证券公司的网站上下载交易数据,因为不知道数据格式尝试使用Java语言和C语言的不同类型读取分析:

使用Java语言int类型读取数据按16进制数输出:

cb1e3001 983a0000 c43b0000 8a340000 b0360000 caac0300 22910200 00000000 01000000 40548900 895440 ce1e3001 84350000 84350000 72330000 cc330000 87ad0000 a9800000 00000000 01000000 40548900 cf1e3001 7c330000 3a340000 00320000 64320000 399e0000 56790000 00000000 01000000 40548900

使用C语言long类型读取数据按16进制数输出:

1301ecb3a98 3bc4 348a36b0 3acca 29122 0 1 1301ece 3584 3584 3372 33cc ad87 80a9 0 1 895440 1301ecf 337c 343a 3200 3264 9e39 7956 0 1 895440

分析以上数据得出Java语言int类型和C语言long类型均占四个字节,字节的存储顺序相反。

使用C语言long类型读取数据按10进制数输出:

19930827 15000 15300 13450 14000 240842 168226 0 1 9000000 19930830 13700 13700 13170 13260 44423 32937 0 1 900000019930831 13180 13370 12800 12900 40505 31062 0 1 9000000

经过分析发现交易数据是使用C的long类型写到文件中.使用下列Java代码完成交易数据的存储格式转换:

/**

* Int_C2Java

* 将C语言通过long类型写到文件中的二进制数,Java语言使用int类型读出

* @param i int Java 的int型和C的long型都占4字节 所以Java使用int类型读取

* @return int因为存储顺序相反,读取的 字节1、字节2、字节3、字节4转换为相反顺序即字节4、字节3、字节2、字节1返回

*/

public int Int_C2Java(int i) {

return (((i & 0X000000ff)

((i & 0X00ff0000) >> 8) +

((i & 0Xff000000) >> 16)

); }

上一篇:基于MPEG4的网络视频流加密技术的研究 下一篇:基于主成分分析朴素贝叶斯和决策树比较