以公共指标为原材料,用户可以自己定义更多的指标。

视频课程:
          自定义指标 点击观看1
    
          自定义函数 点击观看2

使用自定义指标样例可在以下帖子得到:

         自定义指标示例列表 点击查看1

         季报指标函数的使用用例 点击查看2
 
         所有财务指标定义公式 点击这里

熟悉通达信的用户可以查看以下示例:

       果仁自定义指标筛选股票示例--如何实现通达信红宝书公式 点击查看3

       通达信果仁函数对照表 点击查看4

注意:
1. 自定义指标名里只能包含中文,英文,数字;不能包含空格,标点符号, 括号,计算符号等。 比如指标名 “5日MA(收盘价)”, “5日收盘价 - 10日收盘价”等都是不合法的指标名。当指标名不合法时,后台计算很容易出错。 
2.  用户不能随便使用自己想到的指标名字。 比如5日均价在界面上是”5日复权均价“, 用户不能随便用其它名字表示5日均价, 例如 ”5日均价“ ”5天均线“ 都不可以。
3. 表达式里不能直接用负数,  比如“-1”需要写成“0-1” 表达式里不能有%号, 比如“5%”需要写成“0.05”。
4. 表达式中函数名或指标名大小写不重要, 都表示一个意思。比如"max(收盘价,1)" 和 “MAX(收盘价,1)" 都是使用Max函数, 得到一样的结果。 
5. 自定义指标表达式即支持函数嵌套功能,也支持自定义指标之间的嵌套。 比如‘1日前10天总成交额’可以用嵌套表达式“ref(sum(当日成交额,10), 1)”, 也可以定义两个指标, 并将第一个指标嵌入第二个指标:10天总成交额 = sum(当日成交额,10) ; 1日前10天总成交额 = ref(10天总成交额 ,1)。

------------------------------------------------------------------------------------------------
函数列表:
一、 算数四则运算。+,  -, *, / 。例子:“(收盘价 + 开盘价)/2”或者  ”当日成交量 / 5日平均成交量”
        比较符。 > , < , >=, <= 。  例子: "收盘价 > 开盘价“ 返回1 表示阳线收高 。

二、日期回溯函数。这是一个非常重要的函数。 

Ref(指标, 天数), 取得指标几个交易日前的值, 天数包含个股的停牌日。当天数为0时, 返回数据起始第一天的指标数据。  例子“Ref(收盘价,5)” 就是5个交易日前收盘价。“Ref(收盘价,0)”返回上市第一天收盘价, 2007年以前上市的股票返回2007-01-04的收盘价。该函数支持变量天数的计算,例子:“Ref(收盘价,countbars(收盘价>0,9999)-5)”返回股票上市后第5天的收盘价。

 

 BarRef(指标, 天数) , 取得指标几根日K线前的值.  Ref()功能类似, 很多情况返回同样的值. 区别是Ref()包括停牌日, BarRef()跳过停牌日, 只数几根K线。 比如“barRef(收盘价,5)” 就是5K线前的收盘价。该函数支持变量天数的计算,例子:“BarRef(收盘价,countbars(收盘价>0,9999)-5)”返回股票上市后第5根K线的收盘价。


Delta(指标,天数), 指标当天的值和N天前的值的差值。 等于指标-Ref(指标, 天数)。 例子:“Delta(收盘价,5)” 就是当天收盘价与5个交易日(包括停牌日)前收盘价的差值。


三、时间窗口函数(纵向统计函数)。 以下函数是对每一只股票的指标在连续的一段日期里进行聚合运算:
 
 MA(指标,天数)计算指标在过去几个交易日(不包含停牌日)的平均值; 天数为0时,从数据起始日开始计算指标的移动平均。比如 “MA(收盘价,5)”就是过去5日平均收盘价; MA(收盘价,0)”从上市第一天算起的平均收盘价,2007年以前上市的股票从2007-01-04算起平均收盘价。该函数支持变量天数的计算,例子:“MA(收盘价,barslast(Crossover(5日复权均价, 20日复权均价)))”返回股票自上次均线金叉以来的平均收盘价

 

 EMA(指标,天数) 计算指标在过去几个交易日(不包含停牌日)的指数平均值;  比如 “EMA(收盘价,5)”就是过去5日指数平均收盘价。该函数的天数参数必须是常数,不可以是变量。


 SMA(指标,天数,权重) 计算指标在过去几个交易日(不包含停牌日)的平滑移动平均值。EMA(指标,天数)相当于SMA(指标,天数,2)  比如 “SMA(收盘价,5, 1.5)”就是以1.5为权重的过去5日平滑移动平均收盘价。该函数的天数参数必须是常数,不可以是变量。


DMA(指标1,指标2),计算指标1在过去几个交易日(不包含停牌日)以指标二为平滑因子的动态移动平均。例子: “DMA(收盘价,换手率)”,表示以换手率作平滑因子的平均价。


 WMA(指标,权重指标, 天数) 计算指标在过去几个交易日(不包含停牌日)的加权平均值;  天数为0时,从数据起始日开始计算加权移动平均。 比如 “WMA(收盘价,当日成交量, 5)”就是过去5日成交量加权平均收盘价, 它比过去5日简单均线更能反映股票的成本线。“WMA(收盘价,当日成交量, 0)”从上市第一天算起的加权平均收盘价 (2007年以前上市的股票从2007-01-04算起的加权平均收盘价)。该函数支持变量天数的计算,例子:“WMA(收盘价,当日成交量,barslast(Crossover(5日复权均价, 20日复权均价)))”返回股票自上次均线金叉以来的成交量加权平均收盘价。 

 

DecayMA(指标,天数), 对过去N天(不包含停牌日)的指标进行衰减加权滚动平均, 越近的日期,权重越大。日期从最近到最远的值,分别乘以衰减权重N,(N-1),。。。1(权重最后进行标准化,使和为1)。 例子: “DecayMA(收盘价,5)”就是过去5日收盘价的衰减加权平均。该函数不支持变量天数的计算


 Med(指标,天数)计算指标在过去几个交易日(不包含停牌日)的中值;比如“Med(市净率,30)”返回过去30个交易日的市净率中值。该函数的天数参数必须是常数,不可以是变量。

 

 Sum(指标, 天数) 计算指标在过去几个交易日(不包含停牌日)的聚合值;天数为0时,从数据起始日开始计算聚合值。例子: “Sum(当日成交量,10)”就是过去10日总成交量。该函数支持变量天数的计算,例子:“Sum(当日成交量barslast(Crossover(5日复权均价, 20日复权均价)))”返回股票自上次均线金叉以来的成交量之和


Product(指标,天数),计算指标在过去几个交易日(不包含停牌日)的累乘值;天数为0时,从数据起始日开始计算累乘值。例子: “Product(1+1日涨幅,10)-1”就是过去10日涨幅;“Product(1+1日涨幅,0)-1”从上市第一天算起的总涨幅(2007年以前上市的股票从2007-01-04算起的总涨幅)。该函数支持变量天数的计算


 

 Max(指标,天数) 计算指标在过去几个交易日(不包含停牌日)的最大值; 天数为0时,从数据起始日开始计算。最大值。“Max(收盘价, 10)”就是过去10日最高收盘价。该函数支持变量天数的计算,例子:“Max(收盘价,barslast(Crossover(5日复权均价, 20日复权均价)))返回股票自上次均线金叉以来的最高收盘价。

 

 Min(指标, 天数 计算指标过去几个交易日(不包含停牌日)的最小值;  天数为0时,从数据起始日开始计算最小值。“Min(收盘价, 10)”就是过去10日最低收盘价;“Min(收盘价, 0)”上市以来最低收盘价(2007年以前上市的股票从2007-01-04算起的最低收盘价)。该函数支持变量天数的计算,例子:“Min(收盘价,barslast(Crossover(5日复权均价, 20日复权均价)))返回股票自上次均线金叉以来的最低收盘价。

 

Stdev(指标,天数) 计算过去几个交易日(不包含停牌日)的标准方差;  天数为0时,整个数据历史上的标准方差。 比如股价在过去20日涨幅波动率 = Stdev(1日涨幅, 20)”; 全部历史的涨幅波动率 = Stdev(1日涨幅, 0)”。该函数支持变量天数的计算,例子:“Stdev(1日涨幅,barslast(Crossover(5日复权均价, 20日复权均价)))返回股票自上次均线金叉以来1日涨幅波动率。


AveDev(指标,天数), 计算过去几个交易日(不包含停牌日)的平均绝对偏差。偏差表示每个数值与平均值之间的差,平均偏差表示每个偏差绝对值的平均值。   例子: 股价在过去14日平均绝对偏差 = ” avedev(收盘价, 14)”。该函数输入天数不能超过30天。


Skewness(指标,天数), 计算指标在过去N个交易日(不包含停牌日)的偏度; 天数为0时,整个数据历史上的偏度。例子: skewness(1日涨幅,250)返回1日涨幅在过去250天的偏度。该函数支持变量天数的计算。


Kurt(指标,天数), 计算指标在过去N个交易日(不包含停牌日)的峰度; 。例子: Kurt(收盘价,250)返回收盘价在过去250天的峰度;kurt(收盘价,0)返回收盘价在过去全部历史的峰度。天数为0时,整个数据历史上的峰度.。 该函数支持变量天数的计算,例子:“kurt(1日涨幅,countbars(收盘价>0,9999)-5)”返回股票上市后第5天到目前为止的1日涨幅峰度。

 

 Var(指标, 天数)* 计算指标在过去N个交易日(不包含停牌日)的方差;  天数为0时,整个数据历史上的方差。例子:var(收盘价,250)返回收盘价在过去250天的方差;var(收盘价,0)返回收盘价在过去全部历史的方差。该函数支持变量天数的计算,例子:“Var(1日涨幅,barslast(Crossover(5日复权均价, 20日复权均价)))返回股票自上次均线金叉以来的1日涨幅方差。


Rank(指标, 天数, 顺序标记=0)计算当前指标在过去几个交易日(不包含停牌日)指标中的排名,天数为0时,从数据起始日开始计算排名, 顺序标记= 0时 , 是由小到大排名,顺序标记= 1时, 是由大到小排名。例子:比如“Rank(收盘价, 20, 0)“返回当天收盘价在过去20天收盘价里的排名。“Rank(收盘价, 0, 0)“返回当天收盘价在上市以来收盘价里的排名。该函数不支持变量天数的计算。

Percentile(指标,百分点, N天数) , 计算在过去N个交易日排名百分点对应的值,指标数值从大到小排序。 

               percentile(收盘价, 0.95, 21)过去21天里的第二高收盘价 (95%分位点的价格) 。

               percentile(收盘价, 0.12, 10)过去10天里的第二低的收盘价(12%分位点的价格)。 


PercentRank(指标, N天数) , 计算当天指标数值在过去N个交易日中的排名百分位,指标数值从大到小排序。  如果返回0,表示当天指标数值最小, 返回1,表示当天指标数值最大, 返回0.5 表示当天数值刚好在时间序列中间。 计算规则类似于Excel : PercentRank(2, [1,2,5,4]) = 0.33 。 例子: “19-PercentRank(收盘价,20)*19” ,计算过去20天收盘价大于今天收盘价的天数。


PercentRankex(指标A, 指标B, 天数)计算当天指标A数值在过去N个指标B数值中(不包含停牌日)排名百分位,指标数值从大到小排序。天数为0时,从数据起始日开始计算排名百分位。如果返回0,表示当天指标数值最小, 返回1,表示当天指标数值最大, 返回0.5 表示当天数值刚好在时间序列中间。例子:比如“PercentRankex(预期EP1年, EP, 250)“,计算预期EP1年的最新值在EP过去250个数值中的排名分位。该函数不支持变量天数的计算。

Zscore(指标,天数), 计算指标在过去N个交易日(不包含停牌日)的zscore; 天数为0时,整个数据历史上的zscore。 例子: Zscore(收盘价,250)返回收盘价在过去250天的zscore;Zscore(收盘价,0)返回收盘价在过去全部历史的zscore。该函数支持变量天数的计算,例子:“Zscore(1日涨幅,countbars(收盘价>0,9999)-5)”返回股票上市后第5天到目前为止的1日涨幅zscore。

注意
以上的窗口函数,都会跳过停牌日期, 比如 ”Max(收盘价, 10)" 里面的10天不包含个股停牌的日期,  如果想算入停牌日期, 可以使用MA2, SMA2, EMA2,decayMA2, Med2, Sum2, product2, Max2, Min2, Stdev2, Var2,Percentile2, PercentRank2 Skewness2 , Kurt2等


 Corr(指标1,指标2,天数N)计算在过去几个交易日里两个指标的相关性;  天数为0时,返回两个指标整个数据历史上的相关度。例子: "corr(1日涨幅, 
指数涨幅(000001), 20)"返回个股1日涨幅和上证指数1日涨幅在过去20日的相关度;  "corr(1日涨幅, 指数涨幅(000001), 0)"返回个股1日涨幅和上证指数1日涨幅在历史上的相关度 。该函数支持变量天数的计算,例子:“Corr(1日涨幅,指数涨幅(000001),countbars(收盘价>0,9999)-5)”返回股票上市后第5天到目前为止股票与上证指数1日涨幅的相关度。Corr() 的计算包含个股停牌日。

 BarCorr(指标1,指标2,天数N), 和 Corr(指标1,指标2,天数)功能相同, 区别是计算时跳过股票的停牌日, 计算N个K线Bar的相关性。 

 Covar(指标1, 指标2, 天数N)计算两个指标在过去几个交易日里的协方差;  天数为0时,返回两个指标整个数据历史上的协方差。例子:“covar(1日涨幅, 收盘价, 250)” 返回1日涨幅和收盘价在过去250天的协方差;covar(1日涨幅, 收盘价, 0)” 返回1日涨幅和收盘价在过去历史上的协方差。该函数支持变量天数的计算,例子:“Covar(1日涨幅,收盘价,countbars(收盘价>0,9999)-5)”返回股票上市后第5天到目前为止股票1日涨幅与收盘价的协方差。 Covar() 的计算不会跳过停牌日。

 BarCovar(指标1, 指标2, 天数N),  和Covar(指标1, 指标2, 天数N)功能相同, 区别是计算时跳过股票的停牌日。 


四、时序回归函数(纵向回归函数)。最小二乘法线性回归函数。以下函数是对每一只股票的指标在连续的一段日期里进行聚合运算:

Forcast(指标,天数), 计算指标在过去N个交易日(不包含停牌日)的线性回归预测值; 天数为0时,计算指标在整个数据历史上的线性回归预测值。
例子: Forcast(收盘价,20)用当天和过去19天一共20天的收盘价作线性回归,返回收盘价的预测值;Forcast(收盘价,0)用过去全部历史收盘价作线性回归,返回收盘价的预测值。 该函数的天数可以是变量。 


Slope(指标,天数), 计算指标在过去N个交易日(不包含停牌日)的线性回归斜率; 天数为0时,计算指标在整个数据历史上的线性回归斜率。例子: Slope(收盘价, 20)  用当天和过去19天一共20天的收盘价作线性回归, 返回过去20日的收盘价线性斜率; Slope(收盘价, 0) 返回过去全部历史的收盘价线性回归斜率 。该函数的天数可以是变量。 


Neutralize(指标Y,指标X,天数), 返回指标Y剔除指标X因素后的值。根据过去N个交易日(不包含停牌日)指标Y和指标X的线性回归模型(X因变量), 计算Y的残差。天数为0时,根据过去整个数据历史的线性回归模型,计算残差。
例子: Neutralize(当日成交额,总市值,20) 根据过去20日的当日成交额和总市值线性回归模型,返回剔出总市值成分后的当日成交额; Neutralize(当日成交额,总市值,0)根据过去全部历史的线性回归模型,返回剔出总市值成分后的当日成交额。该函数的天数可以是变量。 


SlopeXY(指标Y,指标X,天数), 返回指标Y和指标X过去N个交易日(不包含停牌日)的线性回归斜率; 天数为0时,返回过去整个数据历史上的线性回归斜率。例子: Slopexy(当日成交额,总市值,20)返回过去20日成交额与总市值的线性回归斜率 ; Slopexy(当日成交额,总市值,0) 返回过去全部历史成交额与总市值的线性回归斜率 ”。该函数的天数可以是变量。 


InterceptXY(指标Y,指标X,天数), 返回指标Y和指标X过去N个交易日(不包含停牌日)的线性回归的Y轴截距; 天数为0时,返回过去整个数据历史上的线性回归Y轴截距。例子: InterceptXY(当日成交额,总市值,20) 过去20日成交额与总市值的线性回归Y轴截距; InterceptXY(当日成交额,总市值,0) 返回过去全部历史成交额与总市值的线性回归Y轴截距。 该函数的天数可以是变量。 


SSresid(指标Y,指标X,天数)返回指标Y和指标X过去N个交易日(不包含停牌日)的线性回归的残差平方和。该函数的天数可以是变量。 


RSquare(指标Y,指标X,天数), 返回指标Y和指标X过去N个交易日(不包含停牌日)的线性回归的R平方; 天数为0时,计算指标在过去整个数据历史上的线性回归的R平方。 例子:  RSquare(当日成交额,总市值,0) 返回过去全部历史成交额与总市值的的线性回归的R平方。该函数的天数可以是变量。 


五、股票统计函数(横向统计函数) 在当天内对所有股票的某个指标进行统计。
HAvg(指标,范围 ) 范围等于0时, 返回全部A股指标的当天平均值, 范围等于1或2时, 返回当前股票的一级行业或二级行业内的股票指标的当天平均值。 比如 "HAvg(市净率, 1) "返回当前股票的一级行业内的所有股票当天平均市净率。

HMax(指标,范围) 范围等于0时, 返回全部A股指标的当天最大值, 范围等于1或2时, 返回当前股票的一级行业或二级行业内的股票指标的当天最大值。 比如 "HMax(收盘价, 1) "返回当前股票的一级行业内的所有股票当天最高收盘价。

HMin(指标,范围) 范围等于0时, 返回全部A股指标的当天最小值, 范围等于1或2时, 返回当前股票的一级行业或二级行业内的股票指标的当天最小值。 比如 "Hmin(收盘价, 1) "返回当前股票的一级行业内的所有股票当天最低收盘价。

HMed(指标,范围) 范围等于0时, 返回全部A股指标的当日中位数, 范围等于1或2时, 返回当前股票的一级行业或二级行业内的股票指标的的当日中位数。 比如 "HMed(净资产增长, 1)" 返回当前股票的一级行业内的所有股票当天净资产增长率的中值。

HWAvg(指标,权重指标,范围 ) 范围等于0时, 返回全部A股指标的当天加权平均值,  范围等于1或2时, 返回当前股票的一级行业或二级行业内的股票指标的当天加权平均值。 比如 "HWAvg(1日涨幅, 总市值, 1)" 返回当前股票的一级行业内的所有股票当天按市值加权平均涨幅。

HSum(指标,范围) 范围等于0时, 返回全部A股指标的当日和值, 范围等于1或2时, 返回当前股票的一级行业或二级行业内的股票指标的的当日和值。比如 "HSum(流通市值, 1)" 返回当前股票的一级行业内的总流通市值。

HStdev(指标,范围) 范围等于0时, 返回全部A股指标的当日标准方差, 范围等于1或2时, 返回当前股票的一级行业或二级行业内的股票指标的的当日标准方差。 "HStdev(20日涨幅,1)" 返回当前股票的一级行业内的所有股票20日涨幅的标准方差, 代表了行业内股票近期涨幅的离散度。

HVar(指标,范围), 返回当日全部股票指标值的方差。  范围可以是0,1,2; 含义同上。例子:“HVar(20日涨幅,1)“ 返回股票所在行业里的股票20日涨幅的方差, 代表了行业内股票近期涨幅的离散度。

HScale(指标,范围) , 将指标的值标准化,使所有股票指标的绝对值的和为1。 例子:“HScale(EP, 0)“  返回在全部A股里标准化后的EP值。范围可以是0,1,2; 含义同上。 

HSkewness(指标,范围),  返回A股指标的当日偏度, 范围可以是0,1,2; 含义同上。 .例子:“Hskewness(1日涨幅,1)“ 返回股票所在行业里的股票1日涨幅的偏度。

Hkurt(指标,范围), 返回A股指标的当日峰度,范围可以是0,1,2; 含义同上。 例子:“Hkurt(20日涨幅,1)“ 返回股票所在行业里的股票20日涨幅的峰度。

HCorr(指标1,指标2,范围) 范围等于0时, 返回全部A股的两个指标的当日相关度。 范围等于1或2时, 返回当前股票的一级行业或二级行业内的股票两个指标的当日相关度。  例子 ”HCorr(20日涨幅, 市净率, 0)"  就是全部A股的20涨幅和市净率的相关度。

HCoVar(指标1,指标2,范围), 返回全部股票的两个指标的当日协方差。范围可以是0,1,2; 含义同上。例子:“HCoVar(20日涨幅, 市净率, 0)“ 就是全部A股的20涨幅和市净率的协方差。

CountStock(条件, 范围) 返回当天符合条件的股票数。范围等于0时, 在全部A股中计数, 范围等于1或2时, 在一级行业或二级行业内部计数。
 "CountStock(1日涨幅 > 0.05, 0)"  全股票中当日涨幅大于5% 的股票个数
 "CountStock(1日涨幅 > 0.05, 1)"  当前股票一级行业中, 当日涨幅大于5% 的股票个数
 "CountStock(后复权收盘价>20日复权均价, 0) /CountStock(收盘价>0, 0)" 站在20日均线之上的股票占全部股票的比例。

HRank(指标,顺序标记,范围) 将股票按当天的指标值排名, 并返回排名名次。顺序标记= 0时 , 是由小到大排名, 即指标的值越大返回的排名越大;顺序标记= 1时, 是由大到小排名,即指标的值越大返回的排名越小。 范围 = 0时, 对全部A股排名, 范围 = 1或2时,对一级或二级行业内的股票排名。例子: HRank(收盘价, 0, 0), 将所有A股按照收盘价由小到大排名,并返回每个股票的名次。 收盘价最低的股票HRank是1, 第二低的HRank是2, 依次类推。 HRank(收盘价, 0, 1),将所有股票在各自的一级行业内按收盘价由小到大排名,每个行业有自己的第一名, HRank是1 的股票有20个。

默认简写形式:HRank(指标), 等同于 HRank(指标,0,0), 即指标在全A股范围排序, 指标值越大, 返回的排名越大。

HRankScore(指标,顺序标记, 范围)将股票按当天的指标值排名, 并返回排名分。排名分在0到100之间,排在最前面的股票得分100。排名分的具体计算规则在帮助文档中。顺序标记= 0时 , 是由小到大排名,顺序标记= 1时, 是由大到小排名。 范围 = 0时, 对全部A股排名, 范围 = 1或2时, 对同一级行业或二级行业内股票排名。例子: HRankScore(收盘价, 0, 0), 将所有A股按照收盘价由小到大排名,并返回每个股票的排名分。 收盘价最低的股票HRankScore是100, 第二低的HRank是99.9, 依次类推。

默认简写形式:HRankScore(指标),等同于HRankScore(指标, 1, 0), 即指标的值越大, 返回的排名分越高。

HPercentRank(指标,顺序标记, 范围), 功能与HRankScore(指标,顺序标记, 范围)等同, 区别是返回的排名分在0到1之间。
 
默认简写形式:HPercentRank(指标),等同于HPercentRank(指标, 1, 0), 即指标的值越大, 返回的排名分越高。

HPercentile(指标,分位数, 范围  返回指标的分位值。范围等于0时, 返回全部A股中的分位值。范围等于1或2, 返回同一级行业或二级行业内的分位值。  例子:“hPercentile(收盘价,0.9, 0)” 是A股收盘价的90%分位值,也就是收盘价最高10%的值。

HWinsorize(指标,上限分位,下限分位,范围),  使用简单分位数去极值。范围等于0时, 返回全部A股的指标的去极值化的值。范围等于1或2时, 返回同一级行业或二级行业内的指标的去极值化的值。例子:“hWinsorize(收盘价, 0.01, 0.05, 0)“ 在全部A股中,将收盘价最高的1%的股票的收盘价设为99%分位的收盘价,将收盘价最低的5%的股票的收盘价设为5%分位的收盘价。

HStandarize(指标,范围), 范围等于0时, 返回全部A股的指标的标准化值。范围等于1或2时, 返回同一级行业或二级行业内的指标的标准化值。例子:“hStandarize(市盈率, 0)“ 就是全部A股市盈率的标准化值。 对于熟悉统计学的用户, 标准化值就是ZScore(Z分数)。 

HNeutralize(指标Y, 指标X, 范围) 范围等于0时, 返回全部A股的指标Y剔除指标X因素后的值, 也就是Y的残差值。范围等于1或2时, 返回同一级行业或二级行业内的股票指标Y剔除指标X因素后的值。根据指标Y和指标X的线性回归模型, 将指标X的成分从指标Y中剔除,指标Y相对指标X中性化。 比如  “hNeutralize(当日成交额, 总市值,1 )” ,  对同一行业内的股票作线性回归, 返回市值中性的当日成交额。 


HNeutralize2(指标Y,指标X1,指标X2,指标X3,指标X4,范围)

多因子回归函数求残差函数, 最多支持4个X指标。 用法和hNeutralize()类似, 只是可以支持最多4个X指标。 例子: “hNeutralize2(当日成交额, 总市值,  20日涨幅,0 ) ” 对全部A股的股票作线性回归, 返回排除总市值和20日涨幅影响的当日成交额残差值。


HSlopeXY(指标Y,指标X,范围), 范围等于0时, 返回全部A股的指标Y和指标X的线性回归斜率。范围等于1或2时, 返回同一级行业或二级行业内的股票指标Y和指标X的线性回归斜率。例子: ”HSlopeXY(当日成交额,总市值,0)” 根据就是全部A股的线性回归模型,返回当日成交额和总市值的线性回归斜率。


HInterceptXY(指标Y,指标X,范围), 范围等于0时,  返回全部A股的指标Y和指标X的Y轴截距。范围等于1或2时, 返回同一级行业或二级行业内的股票指标Y和指标X的Y轴截距。 例子:”HInterceptXY(当日成交额,总市值,0)” 根据就是全部A股的线性回归模型,返回当日成交额和总市值的Y轴截距。


hNeutralizeMI(指标, 默认=总市值), 返回市值和行业中性化的指标。 比如hNeutralizeMI(EP, log(总市值))返回 EP的市值和行业中性化后的值 。


hDemean(指标,范围),  返回指标减去范围内全部股票的指标在当天的平均值,等同于 “指标 -HAvg(指标, 范围)” 。  范围可以是0,1,2; 含义同上。 例子:“HDemean(BP, 1)“返回BP减去股票同一级行业内的股票平均BP。


hDemedian(指标,范围),  返回指标减去范围内全部股票的指标在当天的中值,等同于 “指标 -HPercentile(指标, 0.5, 范围)” 。  范围可以是0,1,2; 含义同上。 例子:“HDemedian(BP, 1)“返回BP减去股票同一级行业内的股票BP中值。



 注意 :
1 当股票指标的值为空时, 这只股票不参与统计。 比如"HAvg(市盈率, 0)" 计算全市场股票平均市盈率, 市盈率为空值的股票不参与统计。
2 股票投资域或筛选条件的设定不影响横向统计函数的结果。 
3 以上函数也适用于基金策略。 在基金策略中, 范围 = 0,代表全部的基金和指数, 范围= 1,代表在同一投资种类计数。


六、股票池统计函数 在当天内对一个股票池或基金池内的所有股票的某个指标进行统计。 
SMax(指标,股票池,范围) 范围等于0(默认值)时, 返回股票池内指标的当天最大值, 范围等于1或2时, 返回股票池一级行业或二级行业内的股票指标的当天最大值。 ”SMax( 收盘价, 低价股)“ 返回股票池“低价股”中的股票在当天的最高收盘价。

SMin(指标,股票池范围)  范围等于0(默认值)时, 返回股票池内指标的当天最小值, 范围等于1或2时, 返回股票池一级行业或二级行业内的股票指标的当天最小值。 ”SMin( 收盘价,低价股)“ 返回股票池“低价股”中的股票在当天的最低收盘价。
 
SAvg(指标,股票池范围)  范围等于0(默认值)时, 返回股票池内指标的当天平均值,范围等于1或2时, 返回股票池一级行业或二级行业内的股票指标的当天平均值。 ”SAvg( 市净率,低价股)“ 返回股票池“低价股”中的中股票在当天的平均市净率。

SWAvg(指标,加权指标,股票池, 范围)   范围等于0(默认值)时, 返回股票池内指标的当天加权平均值, 范围等于1或2时, 返回股票池一级行业或二级行业内的股票指标的当天加权平均值。 ”SWAvg( 市净率, 总市值,低价股)“ 返回股票池“低价股”中的股票在当天的按总市值加权的平均市净率。

SMed(指标,股票池, 范围  范围等于0(默认值)时, 返回股票池内指标的当天中位数, 范围等于1或2时, 返回股票池一级行业或二级行业内的股票指标的当天中位数。“SMed(净资产增长,低价股 )”返回股票池“低价股”中的股票的净资产增长率的中值。

SSum(指标,股票池, 范围  范围等于0(默认值)时, 返回股票池内指标的当天和值,范围等于1或2时, 返回股票池一级行业或二级行业内的股票指标的当天和值。 ”SSum( 流通市值,低价股)“ 返回股票池“低价股”中的股票在当天的流通市值之和。

SVar(指标,股票池, 范围), 范围等于0时, 返回股票池内指标的当天方差, 范围等于1时, 返回股票池同行业内的股票指标的当天方差。默认范围=0。 

SStdev(指标, 股票池, 范围) 范围等于0(默认值)时, 返回股票池内指标的当天标准方差, 范围等于1或2时, 返回股票池一级行业或二级行业内的股票指标的当天标准方差。”SStdev( 20日涨幅,低价股)“ 返回股票池“低价股”中的股票20日涨幅的标准方差。

SSkewness(指标,股票池, 范围), 返回股票池内指标的当天偏度,范围可以为0(默认),1,2, 意义同上。 例子:”SSkewness( 1日涨幅,低价股)“ 返回股票池“低价股”中的股票1日涨幅的偏度。

Skurt(指标,股票池, 范围), 返回股票池内指标的当天峰度, 范围可以为0(默认),1,2, 意义同上。  例子:”Skurt( 20日涨幅,低价股)“ 返回股票池“低价股”中的股票20日涨幅的峰度。

SCorr(指标1, 指标2,股票池, 范围  范围等于0(默认值)时, 返回股票池内两个指标的当日相关度, 范围等于1或2时, 返回股票池一级行业或二级行业内的股票两个指标的当日相关度。 ”SCorr(20日涨幅, 市净率,低价股)“ 返回股票池“低价股”中的股票20日涨幅和市净率的相关度。

SCount( 条件,股票池, 范围  范围等于0(默认值)时, 返回股票池内指标的当天符合条件的股票数, 范围等于1或2时, 返回股票池一级行业或二级行业内的的股票指标的当天符合条件的股票数。 "SCount(1日涨幅 > 0.05,低价股 )"  股票池“低价股”中的当日涨幅大于5% 的股票数。

SRank (指标,顺序标记,股票池, 范围 将股票池中的股票按当天的指标值排名, 并返回排名名次。顺序标记= 0时 , 是由小到大排名,顺序标记= 1时, 是由大到小排名。 范围 = 0(默认值)时, 对全部股票池排名, 范围等于1或2时,对股票池一级行业或二级行业内的股票排
        名。例子:”SRank (收盘价, 0, 低价股)“, 将股票池“低价股”中的股票按照收盘价由小到大排名,并返回每个股票的名次。 收盘价最低的股票SRank是1, 第二低的SRank是2, 依次类推。

SRankIC(指标, 排序标记, N日, 股票池, 范围) 计算指标的RankIC, 也就是N日前指标排名和N日涨幅的相关性 . 排序标记为0, 从小到大排序, 为1,从大到小排序。 股票池为空, 在全市场股票池中计算RankIC.。例子: SRankIC(收盘价, 0, 20, 中证800池, 0) 计算收盘价从小到大排名的20日IC。

SRankScore(指标,顺序标记, 股票池, 范围)将股票池中的股票按当天的指标值排名, 并返回排名分。排名分在0到100之间,排在最前面的股票得分100。排名分的具体计算规则在帮助文档中。顺序标记= 0时 , 是由小到大排名,顺序标记= 1时, 是由大到小排名。 范围 = 0(默认值)时, 对全部股票池排名, 范围等于1或2时,对股票池一级行业或二级行业内的股票排名。例子: SRankScore(收盘价, 0, 低价股 ), 将股票池“低价股”中的股票按照收盘价由小到大排名,并返回每个股票的排名分。 假设股票池中有100只股票,收盘价最低的股票SRankScore是100, 第二低的SRankScore是99, 依次类推。


SBelong(股票池), 判定当前股票是否属于股票池, 如果当前股票属于股票池返回1, 否则返回0。 例子: sbelong(次新股票 ), 如果股票属于“次新股票”池, 返回1, 否则返回0。


SPercentile(指标,分位数, 股票池, 范围) 

范围等于0(默认值)时, 返回股票池内指标的当天分位值, 范围等于1或2时, 返回股票池一级行业或二级行业内的股票指标的当天分位值。例子:“SPercentile(收盘价,0.9, 低价股, 0)” 返回股票池“低价股”中的股票在当天的收盘价的90%分位值, 也就是收盘价最高10%的值。 


SWinsorize(指标,上限分位,下限分位, 股票池, 范围)

在股票池内使用简单分位数去极值。范围等于0(默认值)时, 返回股票池内指标的当天去极值化的值, 范围等于1或2时, 返回股票池一级行业或二级行业内的股票指标的当天去极值化的值。例子:“SWinsorize(收盘价, 0.01, 0.05, 低价股, 0)“在股票池”低价股”中, 将收盘价最高的1%的股票的收盘价设为99%分位的收盘价,将收盘价最低的5%的股票的收盘价设为5%分位的收盘价。


SStandarize(指标,股票池,范围)

范围等于0(默认值)时, 返回股票池内指标的标准化值。范围等于1或2时, 返回股票池一级行业或二级行业内的指标的标准化值。例子:“SStandarize(市盈率,低价股, 0)“  返回股票池“低价股”中的市盈率的标准化值。 对于熟悉统计学的用户, 标准化值就是Z分数。 


SScale(指标,股票池,范围) 

将指标的值标准化,使股票池内所有股票指标的绝对值的和为1。 例子:“SScale(EP,中证800, 0)“  返回在中证800股票池里标准化后的EP值。范围可以是0,1,2; 含义同上。


SNeutralize(指标Y, 指标X, 股票池,范围)

 范围等于0(默认值)时, 返回股票池内的指标Y剔除指标X因素后的值。范围等于1或2时, 返回股票池一级行业或二级行业内的指标Y剔除指标X因素后的值。根据指标Y和指标X的线性回归模型, 将指标X的成分从指标Y中剔除,指标Y相对指标X中性化。 比如  “SNeutralize(当日成交额, 总市值, 低价股,1 )” ,  对股票池“低价股”同一行业内的股票作线性回归, 返回市值中性的当日成交额。


SNeutralize2(指标Y,指标X1,指标X2,指标X3,指标X4,股票池,范围)

多因子回归函数求残差函数, 最多支持4个X指标。 用法和SNeutralize()类似, 只是可以支持最多4个X指标。 比如 “SNeutralize(当日成交额, 总市值,  20日涨幅,低价股,0 ) ” 对股票池“低价股”内的股票作线性回归, 返回排除总市值和20日涨幅影响的当日成交额残差值。


SSlopeXY(指标Y, 指标X, 股票池,范围), 范围等于0(默认值)时, 返回股票池内的指标Y和指标X的线性回归斜率。范围等于1或2时, 返回股票池同一级或二级行业内的指标Y和指标X的线性回归斜率。 例子: “SSlopeXY(当日成交额, 总市值, 低价股,0 )” , 对股票池“中证800池”内的股票作线性回归, 返回市值中性的当日成交额和总市值的线性回归斜率。


SInterceptXY(指标Y, 指标X, 股票池,范围), 范围等于0(默认值)时, 返回股票池内的指标Y和指标X的Y轴截距。范围等于1或2时, 返回股票池同一级或二级行业内的指标Y和指标X的Y轴截距。 例子: “SInterceptXY(当日成交额, 总市值, 中证800池,0 )” , 对股票池“中证800池”内的股票作线性回归, 返回市值中性的当日成交额和总市值的Y轴截距。


Svalue(起始日期,股票池) 返回股票池从起始日期开始计算的净值, 起始日期和起始日期之前的净值设置为1。净值计算假设股票池中的股票等权重。
例子: Svalue(2010/01/04,低价股), 返回股票池“低价股”以2010/01/04为起始日的净值。


 

注意:
1.股票池的参数可以是系统股票池或者用户自己定义的股票池,在基金策略中, 股票池参数是用户自己定义的基金池。  
2.用股票池函数不能使用在另一个股票池的定义当中, 也就是股票池不能嵌套使用。 
3 以上函数也适用于基金策略。 在基金策略中, 股票池参数就是基金池。 

七、数学函数。
abs(指标) 返回指标的绝对值

log(指标, 常数 = 10)   返回指标的对数值。“ log(收盘价)”收盘价取10的对数值, “log(收盘价, 2)”收盘价取2的对数值。 如指标是负值, 返回空。 第二个参数必须是常数, 不支持变量。

ln(指标) 返回指标的自然对数值。“ ln(收盘价)”收盘价的自然对数值。

sqrt(指标)  返回指标的平方根。 指标是负值, 返回空。

Round(指标)  将指标四舍五入返回整数。"Round(1.6)" =2, "Round(收盘价)" 将收盘价的值四舍五入取整数。

Mod(指标1, 指标2或者常数) 用指标1整除指标2,返回整除的余数。 "Mod(12, 10)"  = 2, "Mod(收盘价, 10)"将收盘价整除10再取余数。

Floor(指标)  沿指标绝对值减小的方向取整数。 比如"Floor(1.6)" = 1, "Floor(收盘价)"将收盘价往下取整。

Power(指标,乘幂指数) 计算指标的乘幂。比如"power(收盘价, 2)" 得到收盘价的平方, “power(收盘价, 0.5)”得到收盘价的平方根。

Exp(指标) 计算指标的自然指数, 相当于Power(e, 指标), 比如 “Exp(1日涨幅)” 计算1日涨幅的自然指数值。

Sigmoid(指标)一种S型函数,将指标映射到0,1之间, sigmoid(X)等于“1/ (1 + exp(−X))“。 例子: “sigmoid(收盘价)“ 得到收盘价的S型函数结果。

Stdevm(指标1, 指标2, 。。。,指标8 ) 返回所有指标的标准方差。最多可以8个输入指标。 例子:”stdevm(营业收入(单季),RefQ(营业收入(单季),1),RefQ(营业收入(单季),2), RefQ(营业收入(单季),3))“返回过去4个季度单季度营业收入的标准方差。

Square(指标) 计算指标的平方。例子: “Square(收盘价)“ 得到收盘价的平方。

Sign(指标) 判断指标是为正数还是负数。 如果指标数值大于0, 返回1, 否则返回-1。 例子, "sign(1日涨幅)” 如果1日涨幅大于0, 返回1, 否则返回0。


Sin(指标)  返回指标的正弦值。 例子:“ sin(收盘价)”返回收盘价的正弦值。

Cos(指标)  返回指标的余弦值。 例子:“ cos(收盘价)”返回收盘价余弦值。

Tan(指标)  返回指标的正切值。 例子:“ cos(收盘价)”返回收盘价正切值。


ASin(指标), 返回指标的反正弦值, 指标单位是弧度。 例子:“ Asin(1日涨幅)”返回1日涨幅的反正弦值。

ACos(指标), 返回指标的反正弦值, 指标单位是弧度。 例子:“ Acos(1日涨幅)”返回1日涨幅的反余弦值。

ATan(指标), 返回指标的反正切值, 指标单位是弧度。 例子:“ Atan(1日涨幅)”返回1日涨幅的反正切值。


八、逻辑函数 

And(条件1, 条件2, 。。,条件8) 。 所有输入条件都是真(非0),返回1, 否则返回0。最少需要2个输入条件, 最多可以有8个输入条件。 
输入条件是关系表达式或者是数值指标, 比如 ‘指标 > 123 ‘
And(1, 1)返回1, And(1,0) 返回0 , And(1, 空)返回0
例子:
有成交量低价格 = “ And(当日成交量> 0, 收盘价 < 5)” , 当日成交量大于0而且收盘价小于5时,返回1, 否则返回0。

Or(条件1, 条件2, 。。,条件8) 。 所有输入条件中有一个是真值(非0数值),返回1, 否则返回0。最少需要2个输入条件, 最多可以有8个输入条件。
输入条件是关系表达式或者是数值指标。 
Or(0, 1)返回1,, Or(0,0) 返回0 , Or(1, 空)返回 1
例子:
有成交量或者低价格 = “ Or(当日成交量> 0, 收盘价 < 5)”当日成交量大于0或者收盘价小于5时,返回1, 否则返回0。

Not(条件)。输入是一个是真值(非0数值),返回0, 否则返回1。输入条件是关系表达式或者是数值指标。
Not(1) = 0 , Not (0) = 1, Not (空) = 空
例子
没有成交量 = “Not(当日成交量 > 0)”  当日成交量大于0时返回0,否则返回1。


九、合并函数
If(条件, 指标1, 指标2)。 当条件为真(1)的时候, 返回指标1, 否则返回指标2。例子:“if(5日复权均价 > 20日复权均价, 1, 0)”如果5日均价高于20日均价 返回1 ,否则返回0。

Greater(指标1, 指标2, 。。。,指标8) 返回所有指标中最大的那个值。最多可以8个输入指标。例子: ”Greater(收盘价, 开盘价)“ 返回收盘价和开盘价较大的那个值。


 Less(指标1, 指标2, 。。。,指标8 ) 返回所有指标中最小的那个值。最多可以8个输入指标。 例子: ”Less(收盘价, 开盘价)“ 返回收盘价和开盘价较小的那个值。


十、金叉死叉函数。
 crossover (短线指标, 长线指标) 金叉函数, 如果短线指标上穿长线指标, 返回1, 否则返回0. 比如" crossover (5日复权均价, 60日复权均价) " 当5日线上穿60线时, 返回 1 ; 否则返回0。
 crossunder(短线指标, 长线指标) 死叉函数, 如果短线指标下穿长线指标, 返回1, 否则返回0. 比如" crossunder (5日复权均价, 60日复权均价) " 当5日线下穿60线时, 返回 1 ; 否则返回0。

十一、日期统计函数 
  CountDays(条件,天数N), 统计在过去N个交易日里(包含股票停牌日), 条件值为真 的天数。 例子

 过去10天里涨停的天数 = CountDays(当日涨停标记 = 1, 10) 
 
过于30天里停牌的天数 = CountDays(当日成交量 = 030) 
 
过于30天里出现金叉的天数 = CountDays(Crossover(5日复权均价, 20日复权均价), 30)

该函数支持变量天数的计算,例子:

上次发生金叉后股价上涨天数 = “CountDays(1日涨幅>0, barslast(Crossover(5日复权均价, 20日复权均价)))”

 

CountBars(条件,天数N),统计在过去N个交易日里(不包含股票停牌日), 条件值为真 的天数。例子:

过去10天里涨停的天数 = CountBars(当日涨停标记 = 1, 10)”。

该函数支持变量天数的计算,例子:

上次发生金叉后股价上涨天数 = CountBars(1日涨幅>0, barslast(Crossover(5日复权均价, 20日复权均价)))

CountBarsCountDays区别是CountDays()包括停牌日, CountBars()跳过停牌日, 只数几根K线。


 DaysLast(条件), 统计历史上条件为真最后一天到现在的交易日数量(包含股票停牌日)。 例子 :
 连续上涨天数 = “DaysLast (1日涨幅<= 0) ” 就是现在到上次不上涨的那一天的天数。
 连续交易的天数= “DaysLast (当日成交量 = 0)” 也就是上一次停牌到现在的天数。
 连续涨停的天数 = “DaysLast (当日涨停标记 = 0)” 也就是距离上次没有涨停的天数。

DaysLastN(条件,次数),统计上N次条件为真时,到现在的交易日数量(包含停牌日),次数=1时,等同于DaysLast。 
例子:距上两次下跌天数 = “DaysLastN (1日涨幅 < 0, 2)”。

 BarsLast(条件),统计历史上条件为真最后一天到现在的交易日数量(不包股票含停牌日)。 例子:
 连续涨停的天数 = BarsLast (当日涨停标记 = 0) , 也就是距离上次没有涨停的天数。
 BarsLast()与DaysLast区别是DaysLast()包括停牌日, BarsLast()跳过停牌日, 只数几根K线。


BarsLastN(条件,次数),统计上N次条件为真时,到现在的交易日数量(不包含停牌日),次数=1时,等同于BarsLast。 
例子:距上两次下跌天数 = “BarsLastN (1日涨幅 < 0, 2)”。与DaysLastN区别是DaysLastN()包括停牌日, BarsLastN()跳过停牌日, 只数几根K线。

Argmax(指标,天数N), 计算指标过去N天(不包含股票停牌日)的最大值发生在第几天,最早的天为第一天。 例子: “Argmax(收盘价, 10)”计算过去10日最高收盘价在第几天,如果发生在最近一天,返回10。该函数不支持变量天数的计算。 (ArgMax2作一样的计算, 包含停牌日。)

Argmin(指标,天数N), 计算指标过去N天(不包含股票停牌日)的最小值发生在第几天,最早的天为第一天。 例子: “Argmin(收盘价, 10)”计算过去10日最低收盘价在第几天,如果发生在最近一天,返回10。该函数不支持变量天数的计算。 (ArgMin2作一样的计算, 包含停牌日。)


十二、条件取值函数 
 LastValue(指标, 条件) 。 返回最后一次满足条件那一天的指标值。 例子: LastValue (收盘价, 1日涨幅 > 0.05) 返回最后一次涨幅大于5%的收盘价。

LastValueN(指标,条件,次数),返回上N次满足条件那一天的指标值, 次数=1时,等同于LastValue。 
例子: LastValueN (收盘价, 1日涨幅 > 0.05, 2) 返回上两次涨幅大于5%的收盘价。

十三、指标数据函数
TickerValue(指标,股票代码) , 返回股票代码对应的指标值。 例子: "收盘价 - tickerValue(收盘价, ‘000002’)"  ,  返回本股票收盘价和万科A收盘价的差价。 如果代码不合法, 可以返回空值。  

IsNULL(指标), 如果指标为空值, 返回1, 否则返回0 。 例子 "isNULL(市盈率)" , 如果股票的市盈率是空值, 返回1, 否则返回0。

IfNULL(指标1, 指标2) , 如果指标1为空值, 返回指标2, 否则返回指标1。 指标2可以是常数或表达式。 例子:"ifNULL(市盈率,0)" , 如果股票的市盈率是空值, 返回0, 否则返回市盈率。


Null(), 返回NULL值。 用于构造返回NULL值的表达式。 比如 PEG = if(or(EP< 0,新预期盈利增长 < 0), null(), 1/EP/新预期盈利增长) , 如果EP小于0或者预期盈利增长为负数, 返回空值, 否则返回计算的值。


十四、反身函数
 ticker(),  返回股票本身的股票代码。 ticker()需要和if()结合使用, 可以对某只或某几只股票作特殊处理。 例子:
“if(ticker() = ‘000002', 1, 0)” 如果当前股票是万科A返回1,其它股票返回0。
 调整乖离率 = “if(ticker() = ‘000002', 后复权收盘价/MA(后复权收盘价,30)- 1, 后复权收盘价/MA(后复权收盘价,40)- 1)”, 对万科使用30日乖离率, 对其它股票使用40日乖离率。 
 在基金策略中, ticker()返回基金自身的基金代码, 用法和在股票策略中一样。 

 industry(), 返回股票所在一级行业的代码,仅在股票策略中有效。行业代码在下表中列出。 industry() 需要和if表达式结合使用, 可以对某个行业的股票或某几个行业的股票做出特殊处理。 
 例子: 股票估值低= "if(industry() = 25, 市盈率 < 10, 市盈率 < 30)", 如果当前股票属于银行业,市盈率小于10就返回真(1), 如果当前股票不属于银行业,市盈率小于30就返回真(1)。
 行业代码列表:
 行业代码 行业
 0 交通运输
 1 休闲服务
 2 传媒
 3 公用事业
 4 农林牧渔 
 5 化工
 6 医药生物
 7 商业贸易
 8 国防军工
 9 家用电器
 10 建筑材料
 11 建筑装饰
 12 房地产
 13 有色金属
 14 机械设备
 15 汽车
 16 电子
 17 电气设备
 18 纺织服装
 19 综合
 20 计算机
 21 轻工制造
 22 通信
 23 采掘
 24 钢铁
 25 银行
 26 非银金融
 27 食品饮料 

industry2(),返回股票所在二级行业的代码,仅在股票策略中有效。
申万2014行业分类的一二级行业的代码信息请参考股票一级行业和二级行业列表
申万2021行业分类的一二级行业的代码信息请参考果仁网申万2021行业分类行业列表

sector(), 返回股票所在交易板块的代码,仅在股票策略中有效。返回值:1表示主板,2表示创业板,3表示中小板,5表示科创板。

十五、交易日历函数, 可以帮助用户实现根据交易日顺序的择时交易模型。

DayW(顺序标记), 返回今天是周内第几交易日, 如果顺序标记 = 0, 返回周内正数第几个交易日, 如果顺序标记 = 1, 返回周内倒数第几个交易日 。比如今天是2017/04/06, DayW(0)返回 2, 表示今天是周内第2个交易日, DayW(1)返回2,  表示今天是周内倒数第2个交易日。

DayM(顺序标记), 返回今天是月内第几交易日, 如果顺序标记 = 0, 返回月内正数第几个交易日, 如果顺序标记 = 1,  返回月内倒数第几个交易日 。比如今天是2017/04/06, DayM(0)返回 2,表示今天是月内第2个交易日, DayM(1)返回 17,  表示今天是月内倒数第17个交易日。

DayY(顺序标记), 返回今天是年内第几交易日, 如果顺序标记 = 0, 返回年内正数第几个交易日, 如果顺序标记 = 1, 返回年内倒数第几个交易日 。比如今天是2017/04/06, DayY(0)返回 61,表示今天是年内第61个交易日, DayY(1)返回184, 表示今天是年内倒数第184个交易日。

MonthY(),       返回今天属于年内第几个月, 年内月分ID 1-12.  1月返回1 , 12月返回12. 
BarofDay(),        返回 日内15分钟线BarID 0-16。只有在 Level函数(见下)里有效。 比如 9:30 返回 0。9:45 返回1。15:00返回16。


十六、分钟线函数 (VIP功能)。 用高频分钟数据统计指导低频日交易。 分钟线函数可以在分钟线上做计算, 然后把结果拿到日线这个级别来选股。
     目前只支持15分钟线。 Level(15min,  量价指标的计算公式) , 将来会陆续支持1分钟, 5分钟线。
    支持的指标为量价指标: 开盘价, 收盘价, 最高价, 最低价, 当日成交量,当日成交额。
    如果策略为非实时策略, 计算以当日15:00  为基准,
    例子:

     Level(15min,  当日成交量)返回当天14:45到15:00的成交量。

     Level(15min,  ref(当日成交量,1) )返回当天14:30到14:45的成交量。 

     Level(15min,  ref(当日成交量,16) )返回当天集合竞价的成交量。

     Level(15min,  ma(当日成交量,4) )返回从14:00到15:00四个15分钟线的平均成交量。

     Level(15min,  sum(当日成交量,2) )返回收盘前半小时的成交量。

     Level(15min,sum(if(barofday()>8,当日成交量,0),85)) 返回最近5天下午成交量总和。

 

   如果策略为实时策略, 计算以当日交易时刻为基准。比如策略是10:00交易的实时策略, Level(15min,  当日成交量)返回当天9:45到10:00的成交量,  Level(15min,  ref(当日成交量,1) )返回当天9:30到9:45的成交量。 

   Level里面能支持函数有 :  时序函数包括  Ref(),   MA(),  EMA(),  SMA() ,  WMA(),  Med(),  Sum(),  Max(),  Min(),  Stdev(),  Var()。 横向统计函数包括 HMax(), HMin(), HAvg( ) , HWAvg( ),HMed() ,  HSum() , HStdev()   。



十七、大盘指标变量 (Deprecated, 已经过时)
*注意以下变量是老的用法, 新用法可以直接使用系统提供的大盘指标里的指数指标.

 #Bench.Close.指数代码 返回某个指数的收盘价。 比如”#Bench.Close.000001“ 是上证指数的收盘价。注:可以使用系统指标 指数收盘(000001) 来代替。 
 #bench.open.指数代码 返回某个指数的当日开盘价。比如”#Bench.open.000001“ 是上证指数的当日开盘价。注:可以使用系统指标 指数开盘(000001) 来代替。
 #bench.high.指数代码 返回某个指数的当日最高价。比如”#Bench.high.000001“ 是上证指数的当日最高价。注:可以使用系统指标 指数最高(000001) 来代替。
 #bench.low.指数代码 返回某个指数的当日最低价。比如”#Bench.low.000001“ 是上证指数的当日最低价。注:可以使用系统指标 指数最低(000001) 来代替。

 #Bench.Change.指数代码 返回某个指数的日涨幅。 比如”#Bench.Change.000001“ 是上证指数的日涨幅。注:可以使用系统指标 指数涨幅(000001) 来代替。 
 #Bench.Vol.指数代码 返回某个指数的成交量。比如”#Bench.Vol.000001“ 是上证指数的成交量。注:可以使用系统指标 指数成交量(000001) 来代替。 
 #Bench.Amt.指数代码 返回某个指数的成交额。比如”#Bench.Amt.000001“ 是上证指数的成交额。注:可以使用系统指标 指数成交额(000001) 来代替。
 #bench.PE.指数代码, 返回某个指数的加权市盈率。 加权市盈率 = 指数成分股的总市值 / 指数成分股的总利润TTM。比如 "#Bench.PE.000001"是上证指数成分股的加权平均市盈率。  注:可以使用系统指标 加权平均市盈率(000001) 来代替。
 #bench.PE2.指数代码,返回某个指数的调和市盈率。调和市盈率 = 指数成分股PE倒数的均值的倒数,即 1 / Avg(成份股E/P). 这样算出来的PE近似于指数PE中值,且更加合理。 比如 "#Bench.PE2.000001"是上证指数成分股的调和平均市盈率。  注:可以使用系统指标 指数调和平均市盈率(000001) 来代替。  
 #bench.PB.指数代码, 返回某个指数的加权市净率。 加权市净率= 指数成分股的总市值 / 指数成分股的总净值.  比如 "#Bench.PB.000001"是上证指数成分股的加权平均市净率。   注:可以使用系统指标 指数加权平均市净率(000001) 来代替。
 #bench.PB2.指数代码,返回某个指数的调和市净率。指数成分股PB倒数的均值的倒数,即 1 / Avg(成份股B/P)。这样算出来的PB是比较合理的指数PB中值。 比如 "#Bench.PB2.000001"是上证指数成分股的调和平均市净率。 注:可以使用系统指标 指数加权平均市净率(000001) 来代替。

 #bench.zt.指数代码,指数成分股的涨停比例,比如“#bench.zt.000001”是上证指数成分股涨停比例。  注:可以使用系统指标 指数成分股涨停比例(000001)来代替。
 #bench.dt.指数代码,指数成分股的跌停比例,比如“#bench.dt.000001“是上证指数成分股跌停比例。  注:可以使用系统指标 指数成分股跌停比例(000001)来代替。
 #bench.up.指数代码,指数成分股的上涨比例,比如“#bench.up.000001”是上证指数成分股上涨比例。注:可以使用系统指标 指数成分股上涨比例(000001)来代替。  
 #bench.down.指数代码,指数成分股的下跌比例,比如“#bench.down.000001”是上证指数成分股下跌比例。注:可以使用系统指标 指数成分股下跌比例(000001)来代替。

所有的使用大盘变量的窗口函数都要加个”2“作为后缀, MA2, Max2, Min2, EMA2, Sum2,  Stdev2。 日期前移函数使用Ref(), 不要使用BarRef()

十八、季报指标函数。 季报函数的输入指标只能是财报条目以及财务指标。  
RefQ(季报指标,前移季度数N,补全选项 = 0):返回从最新季报往前N个季度的财报指标。 当季度指标为空值时, 默认最多往前找4个季度补全空值。 补全选项 = 1时, 保留空值不补全; 补全选项 =2时, 空值转换成0。 例子:RefQ(营业收入, 1):返回最新季报往前一个季度的营业收入。比如现在某只股票的最新季报是2016Q2, RefQ(营业收入, 1)是这支股票在2016Q1的营业收入, 当2016Q1营业收入为空值时,往前季度搜索非空值返回, 最多搜索到2015Q1。而RefQ(营业收入, 1,2)是这支股票在2016Q1的营业收入,  2016Q1营业收入为空值时,返回0。

TTM(季报指标, 前移季度数): 返回股票最新4个季度指标加在一起的值。例子:TTM(营业收入, 0)返回最新4个季报营业收入之和, TTM(营业收入, 4)返回1年前的4个季报营业收入之和。

SumQ(季报指标,季度数N, 前移季度数) 返回股票最新N个季度指标之和。例子SumQ(营业收入, 4, 0) = TTM(营业收入, 0)。

AvgQ(季报指标, 季度数N, 前移季度数) 返回股票最新N个季度指标之平均值 。例子AvgQ(资产合计, 4, 0)返回最新4个季度的总资产平均值;AvgQ(资产合计, 4, 4)返回4个季度前的4个季度的总资产平均值。

MaxQ(季报指标, 季度数N) 返回股票最近N个季度指标的最大值 。例子MaxQ(营业收入, 4)返回最近4个季度的营业收入的最大值。 

MinQ(季报指标, 季度数N) 返回股票最近N个季度指标的最小值 。例子MinQ(营业收入, 4)返回最近4个季度的营业收入的最小值。 

MedQ(季报指标, 季度数N)返回股票最新N个季度指标的中位数 。 例子:medQ(资产合计, 4)返回最新4个季度的总资产中位数; medQ(净利润, 4)返回最新4个季度的净利润中位数。

StdevQ(季报指标, 季度数N) 返回股票最近N个季度指标之标准方差 。例子stdevQ(净资产回报率, 8)返回最近8个季度的ROE的标准方差。 

ForecastQ(季报指标, 季度数N) 根据股票最近N个季度指标的值, 根据线性回归计算, 预测下一个季度的值。例子:ForecastQ(净利润, 4)根据股票最近4个季度净利润,返回预测下一个季度的净利润。

SlopeQ(季报指标, 季度数N) 根据股票最近N个季度指标的值,计算线性回归斜率。 例子:SlopeQ(净利润, 4)根据股票最近4个季度净利润,计算线性回归斜率。

AccuQ(季报指标, 前移年数 = 0返回季报指标的年内季度累计数据, 前移年数 = 0时, 返回最近季度年内累计数据。例子:假设现在最新的季报是2016Q3 AccuQ(营业收入,0)就是20161-9月的累计营业收入,而AccuQ(营业收入,1)就是20151-9月的累计营业收入。

CorrQ(季报指标1, 季报指标2, 季度数N) 计算最近N个季度,指标1与指标2的相关系数。例子:CorrQ(净利润,营业收入,4)计算最近4个季度,净利润与营业收入的相关系数。

NeutralizeQ季报指标Y季报指标X季度数N返回指标Y剔除指标X因素后的值。根据过去N个季度指标Y和指标X的线性拟合模型, 将指标X的成分从指标Y中剔除,计算Y拟合后的残差值。例子: neutralizeQ(营业利润,营业收入, 8)  根据过去8个季度的营业利润和营业收入作线性拟合, 计算营业利润的拟合残差值。

SlopeXYQ季报指标Y季报指标X季度数N返回指标Y和指标X过去N个季度的线性拟合斜率。 例子: SlopeXYQ(营业利润,营业收入, 8)根据过去8个季度的营业利润和营业收入作线性拟合,计算拟合线的斜率。

Annual(季报指标, 前移年数 = 0)返回季报指标的年报数据, 前移年数 = 0时, 返回最近年报数据。 例子:假设现在是2016Q2, Annual(营业收入,0)就是2015年报的营业收入,而Annual(营业收入,1)就是2014年报收入。 年报函数不支持计算表达式输入, 比如Annual(营业收入/100000000,0)

注意: 从2017/12/21开始, 季报指标函数计算财务衍生指标,也可以嵌套使用。  例子:
RefQ(资产回报率, 1): 一个季度前的资产回报率。
AvgQ(营业收入 – 营业支出, 4): 可以指标表达是嵌套。过去4个季度的平均营业净收入。   
RefQ(TTM(营业收入, 0), 1): 支持函数嵌套, 等同于TTM(营业收入, 1)计算一个季度前的营业收入TTM。



十九、 持仓股票变量和持仓统计函数
持仓股票变量和持仓统计函数可以被用来制作更加灵活的交易模型。 在交易模型II里, 用户可以使用持仓股票变量和持仓统计函数自定义卖出条件、不卖条件、买入限制。
注意:持仓股票变量和持仓统计函数只在模型II自定义买卖条件中有效。 
            持仓股票变量和持仓统计函数不支持与反身函数配合使用。


持仓股票变量:

后复权买入价: $beginPrice

持有天数 :$Days

买入后涨幅: $change。 买入时点的价格到选股时点的价格的变化。 

买入后最高点跌幅: $withdraw 。 买入后从最高收盘价到选股时点的价格的跌幅。 比如跌幅是10%, $withdraw 是0.1 .

买入时排名: $beginRank

买入时排名分: $beginScore

最新排名:$rank

最新排名分: $score

持仓占比:  $stockRatio , 策略持仓股票总市值/策略总市值。 

 

持仓统计函数:

$max(指标,股票池代码)

$min(指标, 股票池代码)

$sum(指标, 股票池代码)

$avg(指标, 股票池代码)

股票池代码可以是: 1 代表持仓股票池, 2 代表经过筛选条件的股票池, 3 代表经过筛选条件而且不在持仓股票池中的股票, 即候选买入股票池。 默认值是1。


$max(指标) ,返回持仓股票里的指标最大值。 比如$Max(市盈率) 返回现有持仓股票的最高市盈。   

$min(指标),返回持仓股票里的指标最小值。 比如$Min(市盈率) 返回现有持仓股票的最小市盈。   

$sum(指标), 返回持仓股票里的指标之和。比如$Sum(成交额) 返回现有持仓股票在选股日的成交额之和。   

$avg(指标), 返回持仓股票里的指标平均值。比如 $avg(市盈率)  返回现有持仓股票的平均市盈率。   

 

使用例子


卖出排名下跌10名以上的股票 , 可定义卖出条件$rank- $beginRank >= 10

卖出在持仓股票中排名下降最多的股票,可定义卖出条件 $rank-$beginRank = $max($rank-$beginRank)

如果买入后跌幅超过2个ATR,止损卖出, 可定义卖出条件  后复权收盘价 - $beginPrice < 0 -2 * ATR(14)



候选买入股票统计函数 (候选股票是经过筛选而且不在仓内的股票)

$max(指标, 3) ,返回候选股票里的指标最大值。 比如$Max(市盈率,3) 返回候选股票的最高市盈。   

$min(指标, 3),返回候选股票里的指标最小值。 比如$Min(市盈率,3) 返回候选股票的最小市盈。   

$sum(指标, 3), 返回候选股票里的指标之和。比如$Sum(成交额, 3) 返回候选股票在选股日的成交额之和。   

$avg(指标, 3), 返回候选股票里的指标平均值。比如 $avg(市盈率,3)  返回候选股票的平均市盈率。

函数中的“3”是候选股票池的代码。 


使用例子:

卖出比候选股票排名靠后10名以上的持仓股票,卖出条件:  $rank>=$min($rank,3)+10

卖出市盈率超过候选股票1.1倍的持仓股票, 卖出条件: 市盈率>=$min(市盈率,3)*1.1。


二十、K线聚合函数

将日线级别指标调整到周线或月线级别。目前有效的高K线级别有:y-年线, q-季度线, m-月线, w-周线。

KFirst(指标, 高K线级别), 返回K线的第一个值。  KFirst(开盘价, m), 返回月线开盘价。 

KLast(指标, K线级别), 返回K线的最后一个值。 KLast(收盘价, m), 返回月线收盘价。

KMax(指标, K线级别), 返回K线的最高值。   KMax(最高价, m), 返回月线最高价。

KMin(指标, K线级别), 返回K线的最低值。 KMin(最低价, m), 返回月线最低价。 

KSum(指标, K线级别), 返回K线的和值。  KSum(成交量, m), 返回月线总成交量。 


更多例子:
上一个月的月线收盘价: ref( KLast(收盘价, m), 1)。
20个月的月线收盘价均价:MA( KLast(收盘价, m), 20)。
20周成交量均线: ma(KSum(当日成交量, w),20)  。

注意: 在实时策略里, K线聚合函数和Ref()一起使用时, 可能返回不正确的结果。 实时策略不建议使用K线聚合函数。 

二十一、大盘择时函数
Timing(指标,下限,上限),当指标小于下限时返回1,当指标大于上限时返回0,否则保持上一天的值。 可用在自定义大盘择时里,下限、上限参数只支持常量。 

例子:Timing(市盈率,15,30),市盈率小于15返回1,市盈率大于30返回0,其他时候返回上一天的值。



--------------------------------------------------------------------------------------------------------------------------------------
创建完成后,自定义指标的使用方法和其它公共指标一样,可以用于筛选条件或排名条件中。

注意:
1. 自定义指标名里只能包含中文,英文,数字;不能包含空格,标点符号, 括号,计算符号等。 比如指标名 “5日MA(收盘价)”, “5日收盘价 - 10日收盘价”等都是不合法的指标名。当指标名不合法时,后台计算很容易出错。
2. 自定义指标表达式里使用到的公共指标名称必须和界面上的指标名字一样, 用户不能随便使用自己想到的指标名字。 比如5日均价在界面上是”5日复权均价“, 用户不能随便用其它名字表示5日均价, 例如 ”5日均价“ ”5天均线“ 都不可以。
3. 表达式里不能直接用负数,  比如“-1”需要写成“0-1”。  表达式里不能有%号, 比如“5%”需要写成“0.05” 
4. 表达式中函数名或指标名大小写不重要, 都表示一个意思。比如"max(收盘价,1)" 和 “MAX(收盘价,1)" 都是使用Max函数, 得到一样的结果。 
5. 自定义指标表达式现在即支持函数嵌套功能,也支持自定义指标之间的嵌套。 比如‘1日前10天总成交额’可以用嵌套表达式“ref(sum(当日成交额,10), 1)”, 也可以定义两个指标, 并将第一个指标嵌入第二个指标:10天总成交额 = sum(当日成交额,10) ; 1日前10天总成交额 = ref(10天总成交额 ,1)。