@3r/tool
Version:
🏃包含一些常用方法例如对象深克隆、递归调用、一一对比/数组交集、并集、差集/二维向量点乘、叉乘/股票KDJ、MACD、RSI、BOLL/验证为空、车牌号、邮箱、身份证、统一社会信用代码、手机号、版本对比/转换日期、星座、身份证解析、字节/随机颜色、手机号、身份证号码、统一社会信用代码...持续更新整合
140 lines (139 loc) • 5.16 kB
TypeScript
export interface IMarketData {
/** 时间 */
time: number;
/** 最高价 */
high: number;
/** 开盘价 */
open: number;
/** 最低价 */
low: number;
/** 收盘价 */
close: number;
/** 成交量 */
volume: number;
/** 成交金额 */
amount: number;
}
export interface IKDJOptions {
/** N是周期数 */
N: number;
/** K的x日移动平均值 */
M1: number;
/** D的x日移动平均值 */
M2: number;
}
export interface IMACDOptions {
/** 快速(一般选12日)移动平均值 */
SHORT: number;
/** 慢速(一般选26日)移动平均值 */
LONG: number;
/** MACD的反转信号界定为“差离值”的9日移动平均值(9日DIF) */
MID: number;
}
export interface IRSIOptions {
N1: number;
N2: number;
N3: number;
}
export interface IBOLLOptions {
N: number;
P: number;
}
export interface IKDJResult {
/** 时间 */
time: number;
k: number;
d: number;
j: number;
}
export interface IMACDResult {
/** 时间 */
time: number;
macd: number;
diff: number;
dea: number;
}
export interface IRSIResult {
/** 时间 */
time: number;
[x: string]: number;
}
export interface IBOLLResult {
/** 时间 */
time: number;
mid: number;
upper: number;
lower: number;
}
/** 股票一些算法整合 */
export declare class Market {
/** KDJ 预设值 */
private static KDJ_OPTIONS;
/** MACD 预设值 */
private static MACD_OPTIONS;
/** RSI 预设值 */
private static RSI_OPTIONS;
/** BOLL 预设值 */
private static BOLL_OPTIONS;
/**
* 计算指数移动平均值(EMA)
* EMA(12)= 前一日EMA(12)×11/13 + 今日收盘价 ×2/13
* @param lastEma 前一日EMA(12)
* @param closePrice 今日收盘价
* @param units 单位 12
* @returns
*/
private static ema;
/**
* 计算DIF的9日EMA
* 根据离差值计算其9日的EMA,即离差平均值,是所求的MACD值。为了不与指标原名相混淆,此值又名DEA或DEM。
* 今日DEA(MACD)=前一日DEA×8/10+今日DIF×2/10。
* @param lastDea 前一日DEA
* @param curDiff 今日DIF
* @returns
*/
private static dea;
/**
* 简单移动平均线(SMA)又称“算术移动平均线”,是在投资股票时用于分析股票价格走势的一项指标。它是一个简单地将某一证券在某一时间段的收盘价之和进行算术平均的方法,并随着时间的推移将这些平均值连成一条线便可得出 SMA。
* SMA(X,N,M),表示求指标 X 的 N 日移动平均,M 为权重。
* 算法:若 Y=SMA(X,N,M) 则 Y=(M*X+(N-M)*Y’)/N,其中 Y’表示上一周期 Y 值,N 必须大于 M。
* @param x
* @param n
* @param m
* @param y
* @returns
*/
private static sma;
/**
* KDJ的计算比较复杂,首先要选择周期(n日、n周等),再计算当天的未成熟随机值(即RSV值),然后再计算K值、D值、J值等。
* @param data
* 日k 以日为单位的数据
* 周k 以周为单位的数据
* 月k 以月为单位的数据
* ...
* @param options
* kdj参数
*/
static kdj(data: IMarketData[], options?: IKDJOptions): IKDJResult[];
/**
* MACD在应用上应先行计算出快速(一般选12日)移动平均值与慢速(一般选26日)移动平均值。以这两个数值作为测量两者(快速与慢速线)间的“差离值”依据。所谓“差离值”(DIF),即12日EMA数值减去26日EMA数值。因此,在持续的涨势中,12日EMA在26日EMA之上。其间的正差离值(+DIF)会愈来愈大。反之在跌势中,差离值可能变负(-DIF),此时是绝对值愈来愈大。至于行情开始回转,正或负差离值要缩小到一定的程度,才真正是行情反转的信号。MACD的反转信号界定为“差离值”的9日移动平均值(9日DIF)。
* @param data
* @param options
* macd参数
*/
static macd(data: IMarketData[], options?: IMACDOptions): IMACDResult[];
/**
* 计算rsi指标,分别返回以6日,12日,24日为参考基期的RSI值
* @param data
* @param options
* rsi参数
*/
static rsi(data: IMarketData[], options?: IRSIOptions): IRSIResult[];
/**
* 在所有的指标计算中,BOLL指标的计算方法是最复杂的之一,其中引进了统计学中的标准差概念,涉及到中轨线(MB)、上轨线(UP)和下轨线(DN)的计算。另外,和其他指标的计算一样,由于选用的计算周期的不同,BOLL指标也包括日BOLL指标、周BOLL指标、月BOLL指标年BOLL指标以及分钟BOLL指标等各种类型。经常被用于股市研判的是日BOLL指标和周BOLL指标。虽然它们的计算时的取值有所不同,但基本的计算方法一样。
* @param data
* @param options
* boll参数
*/
static boll(data: IMarketData[], options?: IBOLLOptions): IBOLLResult[];
}