今天的程序说股来谈一谈在一个交易周期内,比如一个交易日,你需要关注的股票技术指标。了解了这些指标,你在股票技术分析的过程中才能运用自如。
一个交易周期内的股票技术指标有哪些?
对于股票的一个交易周期,比如一个交易日,我们需要关注的股票技术指标主要有下面这些:
昨收:昨日收盘价,使用当天的收盘价和上个周期的收盘价相比可以看出股票是涨还是跌。
开盘价:当天股票开市前集合竞价阶段产生的股票交易价格。
现价:股票当前的价格。
收盘价:当天股票收市前集合竞价阶段产生或收市前一定时间的所有交易的成交量加权平均产生。
最低价:从开市到收市的交易过程中所产生的最低价格。
最高价:从开市到收市的交易过程中所产生的最高价格。
涨跌额(涨跌值):涨跌额是指当日股票价格与前一日收盘价格(或前一日收盘指数)相比的涨跌数值。
涨跌幅(涨跌百分比):涨跌幅是对涨跌额的描述,用%表示,涨跌幅=涨跌额/昨收盘*100%。
成交量:成交量是指在某一时段内具体的交易数量。
成交额:成交数量(成交量)*成交均价=成交金额(成交额)。
换手率:“换手率”也称“周转率”,指在一定时间内市场中股票转手买卖的频率,是反映股票流通性强弱的指标之一。
振幅:股票振幅就是股票开盘后的当日最高价和最低价之间的差的绝对值与昨日收盘价的百分比,它在一定程度上表现股票的活跃程度。
量比:量比是衡量相对成交量的指标。它是指股市开市后平均每分钟的成交量与过去5个交易日平均每分钟成交量之比。其计算公式为:量比=(现成交总手数 / 现累计开市时间(分) )/ 过去5日平均每分钟成交量。
委比:委比是衡量某一时段买卖盘相对强度的指标,委比的取值自-100%到+100%,+100%表示全部的委托均是买盘,涨停的股票的委比一般是100%,而跌停是-100%。委比为0,意思是买入(托单)和卖出(压单)的数量相等。
使用数据库表描述一个交易周期内的股票技术指标
如上图所示,我们创建表stock用于描述股票的基本信息,创建表stock_trade_day来描述股票一个交易日的股票技术指标。
表stock:
CREATE TABLE `stock` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '股票ID',
`symbol` varchar(32) NOT NULL COMMENT '股票代码',
`stock_name` varchar(64) NOT NULL COMMENT '股票名称',
`market` int(11) NOT NULL COMMENT '市场:1沪市,2深市',
`listing_date` datetime NOT NULL COMMENT '上市日期',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='股票基本信息表';
表stock_trade_day:
CREATE TABLE `stock_trade_day` (
`id` bigint(20) NOT NULL COMMENT '交易信息ID',
`stock_id` int(11) NOT NULL COMMENT '股票ID',
`period` datetime NOT NULL COMMENT '周期',
`pre_close_price` decimal(10,0) NOT NULL COMMENT '上个周期收盘价',
`open_price` decimal(10,0) NOT NULL COMMENT '开盘价',
`last_price` decimal(10,0) NOT NULL COMMENT '现价,最新价',
`min_price` decimal(10,0) NOT NULL COMMENT 'low_price',
`max_price` decimal(10,0) NOT NULL COMMENT '最高价',
`increase` decimal(10,0) NOT NULL COMMENT '涨跌额',
`incre_percent` decimal(10,0) NOT NULL COMMENT '涨跌百分比',
`trade_volume` int(11) NOT NULL COMMENT '成交量',
`trade_amount` decimal(10,0) NOT NULL COMMENT '成交额',
`turnover_rate` decimal(10,0) NOT NULL COMMENT '换手率',
`amplitude` decimal(10,0) NOT NULL COMMENT '振幅',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='股票交易信息(日)';
如果周期不是一天,而是周、月、季、年等,只需要修改表名即可,stock_trade_day表中的各个股票技术指标适用于任何一个周期。
利用数据库表生成java类
创建了数据库表,我们可以自动生成java类及相关代码,可参考《maven插件利器mybatis-generator-maven-plugin自动生成tk.mybatis代码》。下面是生成的Stock类:
package cn.lovecto.api.model;
import java.util.Date;
import javax.persistence.*;
public class Stock {
/**
* 股票ID
*/
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
/**
* 股票代码
*/
private String symbol;
/**
* 股票名称
*/
@Column(name = "stock_name")
private String stockName;
/**
* 市场:1沪市,2深市
*/
private Integer market;
/**
* 上市日期
*/
@Column(name = "listing_date")
private Date listingDate;
/**
* 获取股票ID
*
* @return id - 股票ID
*/
public Integer getId() {
return id;
}
/**
* 设置股票ID
*
* @param id 股票ID
*/
public void setId(Integer id) {
this.id = id;
}
/**
* 获取股票代码
*
* @return symbol - 股票代码
*/
public String getSymbol() {
return symbol;
}
/**
* 设置股票代码
*
* @param symbol 股票代码
*/
public void setSymbol(String symbol) {
this.symbol = symbol;
}
/**
* 获取股票名称
*
* @return stock_name - 股票名称
*/
public String getStockName() {
return stockName;
}
/**
* 设置股票名称
*
* @param stockName 股票名称
*/
public void setStockName(String stockName) {
this.stockName = stockName;
}
/**
* 获取市场:1沪市,2深市
*
* @return market - 市场:1沪市,2深市
*/
public Integer getMarket() {
return market;
}
/**
* 设置市场:1沪市,2深市
*
* @param market 市场:1沪市,2深市
*/
public void setMarket(Integer market) {
this.market = market;
}
/**
* 获取上市日期
*
* @return listing_date - 上市日期
*/
public Date getListingDate() {
return listingDate;
}
/**
* 设置上市日期
*
* @param listingDate 上市日期
*/
public void setListingDate(Date listingDate) {
this.listingDate = listingDate;
}
}
下面是生成的StockTradeDay类:
package cn.lovecto.api.model;
import java.util.Date;
import javax.persistence.*;
@Table(name = "stock_trade_day")
public class StockTradeDay {
/**
* 交易信息ID
*/
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
/**
* 股票ID
*/
@Column(name = "stock_id")
private Integer stockId;
/**
* 周期
*/
private Date period;
/**
* 上个周期收盘价
*/
@Column(name = "pre_close_price")
private Long preClosePrice;
/**
* 开盘价
*/
@Column(name = "open_price")
private Long openPrice;
/**
* 现价,最新价
*/
@Column(name = "last_price")
private Long lastPrice;
/**
* low_price
*/
@Column(name = "min_price")
private Long minPrice;
/**
* 最高价
*/
@Column(name = "max_price")
private Long maxPrice;
/**
* 涨跌额
*/
private Long increase;
/**
* 涨跌百分比
*/
@Column(name = "incre_percent")
private Long increPercent;
/**
* 成交量
*/
@Column(name = "trade_volume")
private Integer tradeVolume;
/**
* 成交额
*/
@Column(name = "trade_amount")
private Long tradeAmount;
/**
* 换手率
*/
@Column(name = "turnover_rate")
private Long turnoverRate;
/**
* 振幅
*/
private Long amplitude;
/**
* 获取交易信息ID
*
* @return id - 交易信息ID
*/
public Long getId() {
return id;
}
/**
* 设置交易信息ID
*
* @param id 交易信息ID
*/
public void setId(Long id) {
this.id = id;
}
/**
* 获取股票ID
*
* @return stock_id - 股票ID
*/
public Integer getStockId() {
return stockId;
}
/**
* 设置股票ID
*
* @param stockId 股票ID
*/
public void setStockId(Integer stockId) {
this.stockId = stockId;
}
/**
* 获取周期
*
* @return period - 周期
*/
public Date getPeriod() {
return period;
}
/**
* 设置周期
*
* @param period 周期
*/
public void setPeriod(Date period) {
this.period = period;
}
/**
* 获取上个周期收盘价
*
* @return pre_close_price - 上个周期收盘价
*/
public Long getPreClosePrice() {
return preClosePrice;
}
/**
* 设置上个周期收盘价
*
* @param preClosePrice 上个周期收盘价
*/
public void setPreClosePrice(Long preClosePrice) {
this.preClosePrice = preClosePrice;
}
/**
* 获取开盘价
*
* @return open_price - 开盘价
*/
public Long getOpenPrice() {
return openPrice;
}
/**
* 设置开盘价
*
* @param openPrice 开盘价
*/
public void setOpenPrice(Long openPrice) {
this.openPrice = openPrice;
}
/**
* 获取现价,最新价
*
* @return last_price - 现价,最新价
*/
public Long getLastPrice() {
return lastPrice;
}
/**
* 设置现价,最新价
*
* @param lastPrice 现价,最新价
*/
public void setLastPrice(Long lastPrice) {
this.lastPrice = lastPrice;
}
/**
* 获取low_price
*
* @return min_price - low_price
*/
public Long getMinPrice() {
return minPrice;
}
/**
* 设置low_price
*
* @param minPrice low_price
*/
public void setMinPrice(Long minPrice) {
this.minPrice = minPrice;
}
/**
* 获取最高价
*
* @return max_price - 最高价
*/
public Long getMaxPrice() {
return maxPrice;
}
/**
* 设置最高价
*
* @param maxPrice 最高价
*/
public void setMaxPrice(Long maxPrice) {
this.maxPrice = maxPrice;
}
/**
* 获取涨跌额
*
* @return increase - 涨跌额
*/
public Long getIncrease() {
return increase;
}
/**
* 设置涨跌额
*
* @param increase 涨跌额
*/
public void setIncrease(Long increase) {
this.increase = increase;
}
/**
* 获取涨跌百分比
*
* @return incre_percent - 涨跌百分比
*/
public Long getIncrePercent() {
return increPercent;
}
/**
* 设置涨跌百分比
*
* @param increPercent 涨跌百分比
*/
public void setIncrePercent(Long increPercent) {
this.increPercent = increPercent;
}
/**
* 获取成交量
*
* @return trade_volume - 成交量
*/
public Integer getTradeVolume() {
return tradeVolume;
}
/**
* 设置成交量
*
* @param tradeVolume 成交量
*/
public void setTradeVolume(Integer tradeVolume) {
this.tradeVolume = tradeVolume;
}
/**
* 获取成交额
*
* @return trade_amount - 成交额
*/
public Long getTradeAmount() {
return tradeAmount;
}
/**
* 设置成交额
*
* @param tradeAmount 成交额
*/
public void setTradeAmount(Long tradeAmount) {
this.tradeAmount = tradeAmount;
}
/**
* 获取换手率
*
* @return turnover_rate - 换手率
*/
public Long getTurnoverRate() {
return turnoverRate;
}
/**
* 设置换手率
*
* @param turnoverRate 换手率
*/
public void setTurnoverRate(Long turnoverRate) {
this.turnoverRate = turnoverRate;
}
/**
* 获取振幅
*
* @return amplitude - 振幅
*/
public Long getAmplitude() {
return amplitude;
}
/**
* 设置振幅
*
* @param amplitude 振幅
*/
public void setAmplitude(Long amplitude) {
this.amplitude = amplitude;
}
}
StockMapper.xml代码:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="cn.lovecto.api.dao.mapper.StockMapper" >
<resultMap id="BaseResultMap" type="cn.lovecto.api.model.Stock" >
<!--
WARNING - @mbg.generated
-->
<id column="id" property="id" jdbcType="INTEGER" />
<result column="symbol" property="symbol" jdbcType="VARCHAR" />
<result column="stock_name" property="stockName" jdbcType="VARCHAR" />
<result column="market" property="market" jdbcType="INTEGER" />
<result column="listing_date" property="listingDate" jdbcType="TIMESTAMP" />
</resultMap>
</mapper>
StockTradeDayMapper.xml代码:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="cn.lovecto.api.dao.mapper.StockTradeDayMapper" >
<resultMap id="BaseResultMap" type="cn.lovecto.api.model.StockTradeDay" >
<!--
WARNING - @mbg.generated
-->
<id column="id" property="id" jdbcType="BIGINT" />
<result column="stock_id" property="stockId" jdbcType="INTEGER" />
<result column="period" property="period" jdbcType="TIMESTAMP" />
<result column="pre_close_price" property="preClosePrice" jdbcType="DECIMAL" />
<result column="open_price" property="openPrice" jdbcType="DECIMAL" />
<result column="last_price" property="lastPrice" jdbcType="DECIMAL" />
<result column="min_price" property="minPrice" jdbcType="DECIMAL" />
<result column="max_price" property="maxPrice" jdbcType="DECIMAL" />
<result column="increase" property="increase" jdbcType="DECIMAL" />
<result column="incre_percent" property="increPercent" jdbcType="DECIMAL" />
<result column="trade_volume" property="tradeVolume" jdbcType="INTEGER" />
<result column="trade_amount" property="tradeAmount" jdbcType="DECIMAL" />
<result column="turnover_rate" property="turnoverRate" jdbcType="DECIMAL" />
<result column="amplitude" property="amplitude" jdbcType="DECIMAL" />
</resultMap>
</mapper>