mm_maths
Version:
这是一个可以将数学公式推导变形,并转成js和计算的模块。
294 lines (290 loc) • 15.6 kB
Markdown
一,行情函数
1,HIGH 最高价 返回该周期最高价。 用法:HIGH
2,H 最高价 返回该周期最高价。 用法: H
3, LOW 最低价 返回该周期最低价。 用法: LOW
4, L 最低价 返回该周期最低价。 用法: L
5、CLOSE 收盘价 返回该周期收盘价。 用法: CLOSE
6, C 收盘价 返回该周期收盘价。 用法: C
7, VOL 成交量 返回该周期成交量。 用法: VOL
8, V 成交量 返回该周期成交量。 用法: V
9, OPEN 开盘价 返回该周期开盘价。 用法: OPEN
10,O:开盘价 返回该周期开盘价。 用法: O
11,ADVANCE 上涨家数 返回该周期上涨家数。 用法: ADVANCE (本函数仅对大盘有效)
12,DECLINE 下跌家数 返回该周期下跌家数。 用法: DECLINE (本函数仅对大盘有效)
13,AMOUNT 成交额 返回该周期成交额。 用法: AMOUNT
14,ASKPRICE 委卖价 返回委卖1--委卖3价格 用法:ASKPRICE(N) N取1—3。(本函数仅个股在分笔成交分析周期有效)
15,ASKVOL 委卖量 返回委卖1--委卖3量。 用法: ASKVOL(N) N取1—3。 (本函数仅个股在分笔成交分析周期有效)
16,BIDPRICE 委买价 返回委买1--委买3价格。 用法: BIDPRICE(N) N取1—3。(本函数仅个股在分笔成交分析周期有效)
17,BIDVOL 委买量 返回委买1--委买3量。 用法: BIDVOL(N) N取1—3。 (本函数仅个股在分笔成交分析周期有效)
18,BUYVOL 主动性买盘 返回主动性买单量。 用法:BUYVOL 当本笔成交为主动性买盘时,其数值等于成交量,否则为0。(本函数仅个股在分笔成交分析周期有效)
19,SELLVOL 主动性卖盘 返回主动性卖单量。 用法: SELLVOL 当本笔成交为主动性卖盘时,其数值等于成交量,否则为0。(本函数仅个股在分笔成交分析周期有效)
20,ISBUYORDER 主动性买单 返回该成交是否为主动性买单。
用法: ISBUYORDER 当本笔成交为主动性买盘时,返回1,否则为0。(本函数仅个股在分笔成交分析周期有效)
21,ISSELLORDER 主动性卖单 返回该成交是否为主动性卖单。
用法: ISSELLORDER 当本笔成交为主动性卖盘时,返回1,否则为0。(本函数仅个股在分笔成交分析周期有效)
22,成交额(元):AMOUNT
23,持仓量:VOLINSTK
24,外盘(手):BUYVOL
25,内盘(手):SELLVOL
26,主动性买单:ISBUYORDER
27,不定周期最高价:DHIGH
28,不定周期开盘价:DOPEN
29,不定周期最低价:DLOW
30,不定周期收盘价:DCLOSE
31,不定周期成交量:DVOL
时间函数
1, DATE 日期 取得该周期从1900以来的年月日。
用法: DATE 例如函数返回1000101,表示2000年1月1日。
2, TIME 时间 取得该周期的时分秒。
用法: TIME 函数返回有效值范围为(000000-235959)。
3, YEAR 年份 取得该周期的年份。
用法:YEAR
4, MONTH 月份 取得该周期的月份。
用法:MONTH 函数返回有效值范围为(1-12)。
5, WEEK 星期 取得该周期的星期数。
用法: WEEK 函数返回有效值范围为(0-6),0表示星期天。
6, DAY 日期 取得该周期的日期。
用法: DAY 函数返回有效值范围为(1-31)。
7, HOUR 小时 取得该周期的小时数。
用法: HOUR 函数返回有效值范围为(0-23),对于日线及更长的分析周期值为0。
8, MINUTE 分钟 取得该周期的分钟数。
用法: MINUTE 函数返回有效值范围为(0-59),对于日线及更长的分析周期值为0。
9, FROMOPEN 分钟 求当前时刻距开盘有多长时间。
用法: FROMOPEN 返回当前时刻距开盘有多长时间,单位为分钟。
例如: FROMOPEN 当前时刻为早上十点,则返回31。
10,TFILT 分钟 对指定时间段的数据进行过滤,该时间段以外的数据无效.
用法:
TFILT(X,D1,M1,D2,M2)
例如TFILT(CLOSE,1040101,1025,1040101,1345)表示在2004年1月1日的10:25到2004年1月1日的13:45的收盘价是有效的.
周期以日为基本单位的,分时为0有效.
11,周期:PERIOD 取得周期类型.
结果从0到11,依次分别是1/5/15/30/60分钟,日/周/月,多分钟,多日,季,年.
引用函数
1, DRAWNULL 无效数
返回无效数。
用法: DRAWNULL
例如: IF(CLOSE>REF(CLOSE,1),CLOSE,DRAWNULL) 表示下跌时分析图上不画线。
2, BACKSET 向前赋值
将当前位置到若干周期前的数据设为1。
用法: BACKSET(X,N) 若X非0,则将当前位置到N周期前的数值设为1。
例如: BACKSET(CLOSE>OPEN,2) 若收阳则将该周期及前一周期数值设为1,否则为0。
3, BARSCOUNT 有效数据周期数
求总的周期数。
用法: BARSCOUNT(X) 第一个有效数据到当前的天数。
例如: BARSCOUNT(CLOSE) 对于日线数据取得上市以来总交易日数,对于分笔成交取得当日成交笔数,对于1分钟线取得当日交易分钟数。
4, CURRBARSCOUNT 到最后交易日的周期数
求到最后交易日的周期数.
用法:
CURRBARSCOUNT 求到最后交易日的周期数
5, TOTALBARSCOUNT 总的周期数
求总的周期数.
用法:
TOTALBARSCOUNT 求总的周期数
6, BARSLAST 上一次条件成立位置
上一次条件成立到当前的周期数。
用法: BARSLAST(X) 上一次X不为0到现在的天数。
例如: BARSLAST(CLOSE/REF(CLOSE,1)>=1.1) 表示上一个涨停板到当前的周期数。
7, BARSSINCE 第一个条件成立位置
第一个条件成立到当前的周期数。
用法: BARSSINCE(X) 第一次X不为0到现在的天数。
例如: BARSSINCE(HIGH>10) 表示股价超过10元时到当前的周期数。
8, COUNT 统计
统计满足条件的周期数。
用法: COUNT(X,N) 统计N周期中满足X条件的周期数,若N=0则从第一个有效值开始。
例如: COUNT(CLOSE>OPEN,20) 表示统计20周期内收阳的周期数。
9, HHV 最高值
求最高值。
用法: HHV(X,N) 求N周期内X最高值,N=0则从第一个有效值开始。
例如: HHV(HIGH,30) 表示求30日最高价。
10, HHVBARS 上一高点位置
求上一高点到当前的周期数。
用法: HHVBARS(X,N) 求N周期内X最高值到当前周期数,N=0表示从第一个有效值开始统计。
例如: HHVBARS(HIGH,0) 求得历史新高到到当前的周期数。
11, LLV 最低值
求最低值。
用法: LLV(X,N) 求N周期内X最低值,N=0则从第一个有效值开始。
例如: LLV(LOW,0) 表示求历史最低价。
12, LLVBARS 上一低点位置
求上一低点到当前的周期数。
用法: LLVBARS(X,N) 求N周期内X最低值到当前周期数,N=0表示从第一个有效值开始统计。
例如: LLVBARS(HIGH,20) 求得20日最低点到当前的周期数。
13, REVERSE 求相反数
求相反数。
用法: REVERSE(X) 返回-X。
例如: REVERSE(CLOSE) 返回-CLOSE。
14, REF 向前引用
引用若干周期前的数据。
用法: REF(X,A) 引用A周期前的X值。
例如: REF(CLOSE,1) 表示上一周期的收盘价,在日线上就是昨收。
15, REFDATE 指定引用
引用指定日期的数据。
用法: REFDATE(X,A) 引用A日期的X值。
例如: REF(CLOSE,20011208) 表示2001年12月08日的收盘价。
16, SUM 总和
求总和。
用法: SUM(X,N) 统计N周期中X的总和,N=0则从第一个有效值开始。
例如: SUM(VOL,0) 表示统计从上市第一天以来的成交量总和。
17, FILTER 过滤
过滤连续出现的信号。
用法: FILTER(X,N) X满足条件后,删除其后N周期内的数据置为0。
例如: FILTER(CLOSE>OPEN,5) 查找阳线,5天内再次出现的阳线不被记录在内。
18, SUMBARS 累加到指定值的周期数
向前累加到指定值到现在的周期数。
用法: SUMBARS(X,A) 将X向前累加直到大于等于A,返回这个区间的周期数。
例如: SUMBARS(VOL,CAPITAL) 求完全换手到现在的周期数。
19, SMA 移动平均
返回移动平均。
用法: SMA(X,N,M) X的M日移动平均,M为权重,如Y=(X*M+Y'*(N-M))/N
20, MA 简单移动平均
返回简单移动平均。
用法: MA(X,M) X的M日简单移动平均。
21, DMA 动态移动平均
求动态移动平均。
用法: DMA(X,A) 求X的动态移动平均。
算法: 若Y=DMA(X,A)则 Y=A*X+(1-A)*Y',其中Y'表示上一周期Y值,A必须小于1。
例如: DMA(CLOSE,VOL/CAPITAL) 表示求以换手率作平滑因子的平均价。
22, EMA(或EXPMA) 指数移动平均
返回指数移动平均。
用法: EMA(X,M) X的M日指数移动平均。
23, MEMA 平滑移动平均
返回平滑移动平均
用法: MEMA(X,M) X的M日平滑移动平均。MEMA(X,N)与MA的差别在于起始值为一平滑值,而不是初始值
24, EXPMEMA 指数平滑移动平均
返回指数平滑移动平均。
用法: EXPMEMA(X,M) X的M日指数平滑移动平均。EXPMEMA同EMA(即EXPMA)的差别在于他的起始值为一平滑值
25, RANGE 介于某个范围之间
用法: RANGE(A,B,C) A在B和C。
例如: RANGE(A,B,C)表示A大于B同时小于C时返回1,否则返回0
26, CONST 取值设为常数
用法: CONST(A) 取A最后的值为常量.
例如: CONST(INDEXC)表示取大盘现价。
27, ISLASTBAR 判断是否为最后一个周期
28, BARSLASTCOUNT 统计条件连续成立次数
用法:
BARSLASTCOUNT(X),统计连续满足X条件的周期数.
例如:BARSLASTCOUNT(CLOSE>OPEN)表示统计连续收阳的周期数
29, XMA 偏移移动平均
用法:
XMA(X,M):X的M日偏移移动平均
30, TOPRANGE 当前值是近多少周期内的最大值
用法:
TOPRANGE(X):X是近多少周期内X的最大值
例如:TOPRANGE(HIGH)表示当前最高价是近多少周期内的最高价
31, LOWRANGE 当前值是近多少个周期内的最小值
用法:
LOWRANGE(X):X是近多少周期内X的最小值
例如:LOWRANGE(LOW)表示当前最高价是近多少周期内的最小价
逻辑函数
1, CROSS 上穿
两条线交叉。
用法: CROSS(A,B) 表示当A从下方向上穿过B时返回1,否则返回0。
例如: CROSS(MA(CLOSE,5),MA(CLOSE,10)) 表示5日均线与10日均线交金叉。
2, LONGCROSS 维持一定周期后上穿
两条线维持一定周期后交叉。
用法: LONGCROSS(A,B,N) 表示A在N周期内都小于B,本周期从下方向上穿过B时返回1,否则返回0。
3, UPNDAY 连涨
返回是否连涨周期数。
用法: UPNDAY(CLOSE,M) 表示连涨M个周期。
4, DOWNNDAY 连跌
返回是否连跌周期。
用法: DOWNNDAY(CLOSE,M) 表示连跌M个周期。
5, NDAY 连大
返回是否持续存在X>Y。
用法: NDAY(CLOSE,OPEN,3) 表示连续3日收阳线。
6, EXIST 存在
是否存在。
用法: EXIST(CLOSE>OPEN,10) 表示前10日内存在着阳线。
7, EVERY 一直存在
一直存在。
用法: EVERY(CLOSE>OPEN,10) 表示前10日内一直阳线。
8, LAST 持续存在
用法: LAST(X,A,B) A>B,表示从前A日到前B日一直满足X条件。若A为0,表示从第一天开始,B为0,表示到最后日止。
例如: LAST(CLOSE>OPEN,10,5) 表示从前10日到前5日内一直阳线。
9, TESTSKIP(A):不满足A则直接返回.
用法:
TESTSKIP(A)
表示如果不满足条件A则改公式直接返回,不再计算接下来的表达式
算术函数
1, NOT 取反
求逻辑非。
用法: NOT(X) 返回非X,即当X=0时返回1,否则返回0。
例如: NOT(ISUP) 表示平盘或收阴。
2, IF 逻辑判断
根据条件求不同的值。
用法: IF(X,A,B) 若X不为0则返回A,否则返回B。
例如: IF(CLOSE>OPEN,HIGH,LOW)表示该周期收阳则返回最高值,否则返回最低值。
3, IFF 逻辑判断
根据条件求不同的值。
用法: IFF(X,A,B) 若X不为0则返回A,否则返回B。
例如: IFF(CLOSE>OPEN,HIGH,LOW) 表示该周期收阳则返回最高值,否则返回最低值。
4, IFN 逻辑判断
根据条件求不同的值。
用法: IFN(X,A,B) 若X不为0则返回B,否则返回A。
例如: IFN(CLOSE>OPEN,HIGH,LOW) 表示该周期收阴则返回最高值,否则返回最低值。
5, MAX 较大值
求最大值。
用法: MAX(A,B) 返回A和B中的较大值。
例如: MAX(CLOSE-OPEN,0) 表示若收盘价大于开盘价返回它们的差值,否则返回0。
6, MIN 较小值
求最小值。
用法: MIN(A,B) 返回A和B中的较小值。
例如: MIN(CLOSE,OPEN) 返回开盘价和收盘价中的较小值。
数学函数
1, ACOS 反余弦
反余弦值。
用法: ACOS(X) 返回X的反余弦值。
2, ASIN 反正弦
反正弦值。
用法: ASIN(X) 返回X的反正弦值。
3, ATAN 反正切
反正切值。
用法: ATAN(X) 返回X的反正切值。
4, COS 余弦
余弦值。
用法: COS(X) 返回X的余弦值。
5, SIN 正弦
正弦值。
用法: SIN(X) 返回X的正弦值。
6, TAN 正切
正切值。
用法: TAN(X) 返回X的正切值。
7, EXP 指数
指数。
用法: EXP(X) e的X次幂。
例如: EXP(CLOSE) 返回e的CLOSE次幂。
8, LN 自然对数
求自然对数。
用法: LN(X) 以e为底的对数。
例如: LN(CLOSE) 求收盘价的对数。
9, LOG 对数
求10为底的对数。
用法: LOG(X) 取得X的对数。
例如: LOG(100) 等于2。
10, SQRT 开方
开平方。
用法: SQRT(X) 求X的平方根。
例如: SQRT(CLOSE) 收盘价的平方根。
11, ABS 绝对值
求绝对值。
用法: ABS(X) 返回X的绝对值。
例如: ABS(-34) 返回34。
12, POW 乘幂
乘幂。
用法: POW(A,B) 返回A的B次幂。
例如: POW(CLOSE,3) 求得收盘价的3次方。
13, CEILING 向上舍入
向上舍入。
用法: CEILING(A) 返回沿A数值增大方向最接近的整数。
例如: CEILING(12.3) 求得13,CEILING(-3.5)求得-3。
14, FLOOR 向下舍入
向下舍入。
用法: FLOOR(A) 返回沿A数值减小方向最接近的整数。
例如: FLOOR(12.3) 求得12,FLOOR(-3.5)求得-4。
15, INTPART 取整
用法: INTPART(A) 返回沿A绝对值减小方向最接近的整数。
例如: INTPART(12.3) 求得12,INTPART(-3.5)求得-3。
16, BETWEEN:介于
介于。
用法: BETWEEN(A,B,C) 表示A处于B和C之间时返回1,否则返回0。
例如: BETWEEN(CLOSE,MA(CLOSE,10),MA(CLOSE,5))表示收盘价介于5日均线和10日均线之间。
统计