原文地址:红宝书系列- 公式系统(初级)042作者:通达信官博4.3引用函数 drawnull 无效数 返回无效数. 用法: drawnull 例如: if(closeref(close,1),close,drawnull) 表示下跌时分析图上不画线. backset 向前赋值 将当前位置到若干周期前的数据设为1. 用法: backset(x,n) 若x非0,则将当前位置到n周期前的数值设为1. 例如: backset(closeopen,2) 若收阳则将该周期及前一周期数值设为1,否则为0. barscount 有效数据周期数 求总的周期数. 用法: barscount(x) 第一个有效数据到当前的天数. 例如: barscount(close) 对于日线数据取得上市以来总交易日数,对于分笔成交取得当日成交笔数,对于1分钟线取得当日交易分钟数. currbarscount 到最后交易日的周期数 求到最后交易日的周期数. 用法: currbarscount 求到最后交易日的周期数 totalbarscount 总的周期数 求总的周期数. 用法: totalbarscount 求总的周期数 barslast 上一次条件成立位置 上一次条件成立到当前的周期数. 用法: barslast(x) 上一次x不为0到现在的天数. 例如: barslast(closeref(close,1)=1.1) 表示上一个涨停板到当前的周期数. barssince 第一个条件成立位置 第一个条件成立到当前的周期数. 用法: barssince(x) 第一次x不为0到现在的天数. 例如: barssince(high10) 表示股价超过10元时到当前的周期数. count 统计 统计满足条件的周期数. 用法: count(x,n) 统计n周期中满足x条件的周期数,若n=0则从第一个有效值开始. 例如: count(closeopen,20) 表示统计20周期内收阳的周期数. hhv 最高值 求最高值. 用法: hhv(x,n) 求n周期内x最高值,n=0则从第一个有效值开始. 例如: hhv(high,30) 表示求30日最高价. hhvbars 上一高点位置 求上一高点到当前的周期数. 用法: hhvbars(x,n) 求n周期内x最高值到当前周期数,n=0表示从第一个有效值开始统计. 例如: hhvbars(high,0) 求得历史新高到到当前的周期数. llv 最低值 求最低值. 用法: llv(x,n) 求n周期内x最低值,n=0则从第一个有效值开始. 例如: llv(low,0) 表示求历史最低价. llvbars 上一低点位置 求上一低点到当前的周期数. 用法: llvbars(x,n) 求n周期内x最低值到当前周期数,n=0表示从第一个有效值开始统计. 例如: llvbars(high,20) 求得20日最低点到当前的周期数. reverse 求相反数 求相反数. 用法: reverse(x) 返回-x. 例如: reverse(close) 返回-close. ref 向前引用 引用若干周期前的数据. 用法: ref(x,a) 引用a周期前的x值. 例如: ref(close,1) 表示上一周期的收盘价,在日线上就是昨收. refdate 指定引用 引用指定日期的数据. 用法: refdate(x,a) 引用a日期的x值. 例如: ref(close,) 表示2001年12月08日的收盘价. sum 总和 求总和. 用法: sum(x,n) 统计n周期中x的总和,n=0则从第一个有效值开始. 例如: sum(vol,0) 表示统计从上市第一天以来的成交量总和. filter 过滤 过滤连续出现的信号. 用法: filter(x,n) x满足条件后,删除其后n周期内的数据置为0. 例如: filter(closeopen,5) 查找阳线,5天内再次出现的阳线不被记录在内. sumbars 累加到指定值的周期数 向前累加到指定值到现在的周期数. 用法: sumbars(x,a) 将x向前累加直到大于等于a,返回这个区间的周期数. 例如: sumbars(vol,capital) 求完全换手到现在的周期数. sma 移动平均 返回移动平均. 用法: sma(x,n,m) x的m日移动平均,m为权重,如y=(x*m+y *(n-m))n ma 简单移动平均 返回简单移动平均. 用法: ma(x,m) x的m日简单移动平均. dma 动态移动平均 求动态移动平均. 用法: dma(x,a) 求x的动态移动平均. 算法: 若y=dma(x,a)则y=a*x+(1-a)*y ,其中y 表示上一周期y值,a必须小于1. 例如: dma(close,volcapital) 表示求以换手率作平滑因子的平均价. ema(或expma) 指数移动平均 返回指数移动平均. 用法: ema(x,m) x的m日指数移动平均. mema 平滑移动平均 返回平滑移动平均 用法: mema(x,m) x的m日平滑移动平均. mema(x,n)与ma的差别在于起始值为一平滑值,而不是初始值 expmema 指数平滑移动平均 返回指数平滑移动平均. 用法: expmema(x,m) x的m日指数平滑移动平均. expmema同ema(即expma)的差别在于他的起始值为一平滑值 range 介于某个范围之间 用法: range(a,b,c) a在b和c. 例如: range(a,b,c)表示a大于b同时小于c时返回1,否则返回0. const 取值设为常数 用法: const(a) 取a最后的值为常量. 例如: const(indexc)表示取大盘现价. 4.4逻辑函数 cross 上穿 两条线交叉. 用法: cross(a,b) 表示当a从下方向上穿过b时返回1,否则返回0. 例如: cross(ma(close,5),ma(close,10)) 表示5日均线与10日均线交金叉. longcross 维持一定周期后上穿 两条线维持一定周期后交叉. 用法: longcross(a,b,n) 表示a在n周期内都小于b,本周期从下方向上穿过b时返回1,否则返回0. upnday 连涨 返回是否连涨周期数. 用法: upnday(close,m) 表示连涨m个周期. downnday 连跌 返回是否连跌周期. 用法: downnday(close,m) 表示连跌m个周期. nday 连大 返回是否持续存在xy. 用法: nday(close,open,3) 表示连续3日收阳线. exist 存在 是否存在. 用法: exist(closeopen,10) 表示前10日内存在着阳线. every 一直存在 一直存在. 用法: every(closeopen,10) 表示前10日内一直阳线. last 持续存在 用法: last(x,a,b) ab,表示从前a日到前b日一直满足x条件.若a为0,表示从第一天开始,b为0,表示到最后日止. 例如: last(closeopen,10,5) 表示从前10日到前5日内一直阳线.