# 因子与量化 / 其他 ### `adjustSmaple(bk_name, beg_t, from_no, to_no)` 根根据FromNo,ToNo选取StockArr在EndT的市盈率升序后的股票组合,再根据PercentType确定股票的比例,根据比例分配资金,返回股票的资金分配及购买股数 | 参数 | 类型 | 说明 | | --------- | -------- | --------------------------------------------------------------------------------------------- | | `bk_name` | string | 字符串,板块名称,在第二次跟踪时要选股的板块名称StockArr:数据表,初始股票组合 | | `beg_t` | datetime | 日期型时间,开始跟踪日期EndT:日期型时间,结束跟踪日期AdjustMonth:整数,在跟踪期间调整的月份数 | | `from_no` | int | 整数,起始行号 | | `to_no` | int | 整数,截止行号 | 返回:array ### `bsByMacd(short, _type)` MACD买入条件选股,DIF上穿(即突破)DEA。与系统证券pn_stock()、系统时间pn_date()和系统周期pn_cycle()有关。调用时需注意设置系统参数。 | 参数 | 类型 | 说明 | | ------- | ---- | ------------------------------------------------------------------------------------------- | | `short` | int | 整数,计算MACD指标线的短线Long:整数,计算MACD指标线的长线M:整数,计算MACD指标线的交易日长度 | | `_type` | int | 结果类型 | 返回:bool #### 示例 ```tsl oV:=BackUpSystemParameters(); setsysparam(pn_stock(),'SH600004'); setsysparam(pn_date(),inttodate(20110913)); setsysparam(pn_cycle(),cy_day()); Short:=12; Long:=26; M:=9; Type:=2; v:= SsByMACD(Short,Long,M,type); RestoreSystemParameters(oV); return v; ``` ### `cbBalanceRatio()` 1)当指定日不在在计息日与实际到期日之间,转债余额比例为nil; 2)当指定日在在计息日与实际到期日之间,返回转债余额比例。 返回:float ### `class()` 策略回测框架。 提供天软策略回测框架、策略清算、策略绩效评价。用户只需: a)设置回测时的基本属性(成员变量) b)重载GetTimeSeries方法提供调仓周期 c)重载GetTradeOrder方法提供目标比例(比例类组合)或交易明细(数量类组合) d)调用BackTest方法进行回测 e)调用查询结果,获得资产配置、持仓、交易、绩效评价等常见评价类指标 详细说明及相关范例见专题,如下链接。 返回:any ### `fiRtToDrawdownUnderwater(r)` 高点回撤序列(%) | 参数 | 类型 | 说明 | | ---- | ----- | ---------------------------------------------------------------------------------- | | `r` | array | 数组,收益率(%),可为一维数字数组,或者用一列表示一个资产收益率(%)序列的二维数组 | 返回:array ### `frameCovRblw(data, alpha)` 协方差RBLW压缩估计 | 参数 | 类型 | 说明 | | ------- | ----- | ---------------------------------------------------------------------------- | | `data` | array | 二维数据表,T×N,T期样本数量,N个股票 | | `alpha` | float | 实数,压缩系数,0到1,缺省时系统自动计算(推荐),计算方式见RBLW协方差压缩估计 | 返回:array ### `indexDataToShowable(index_table, base_value)` 把计算存贮好的指数数据转换 | 参数 | 类型 | 说明 | | ------------- | ----- | ----------------------------------------------- | | `index_table` | array | 数据表,指数结果表,必须含有’Date’,’Close’字段 | | `base_value` | float | 实数,基准值 | 返回:array #### 示例 ```tsl SetSysParam(PN_Stock(),'SZ000002'); SetSysParam(PN_DATE(),IntToDate(20121026)); t:=Nday(20,'Date',sp_time(),'Close',close()); Return array('转换前':t,'转换后':IndexDataToShowable(t,1000)); ``` ### `kline(n1, n2, n3, n4)` K线;蜡烛线 | 参数 | 类型 | 说明 | | ---- | ---- | ---- | | `n1` | int | 整数 | | `n2` | int | 整数 | | `n3` | int | 整数 | | `n4` | int | 整数 | 返回:Graph #### 示例 ```tsl SetSysParam(pn_stock(),'SH000001'); SetSysParam(pn_date(),inttodate(20140123)); Return KLine(5,10,20,60); ``` ### `mfIsMissValue(a, _type, zero_eps)` 是否缺失值判断 | 参数 | 类型 | 说明 | | ---------- | ----- | -------------------------------------- | | `a` | float | 实数, 可以为数组或者标量 | | `_type` | any | 整数, | | `zero_eps` | float | 实数, 与0的差距范围,实数;默认 epsi() | 返回:array ### `micdF(n, n1, n2, _type)` 异同离差动力指数,与系统证券pn_stock()、系统时间pn_date()、系统周期pn_cycle()、复权方式pn_rate()、复权基准日pn_rateday()和执行点数PN_nDay()相关。调用时需注意设置系统参数。 | 参数 | 类型 | 说明 | | ------ | ---- | ---------------- | | `n` | any | 整数,交易日天数 | | `n1` | any | 整数,交易日天数 | | `n2` | any | 整数,交易日天数 | | `_type` | any | 结果类型 | 返回:array ### `obvMaV(n, m)` 能量潮的M日移动平均,与系统证券pn_stock()、系统时间pn_date()、系统周期pn_cycle()、复权方式pn_rate()和复权基准日pn_rateday()相关。调用时需注意设置系统参数。 | 参数 | 类型 | 说明 | | ---- | ---- | ---------------- | | `n` | any | 整数,交易日天数 | | `m` | any | 整数,交易日天数 | 返回:float ### `optionsSkewCalDetail(option_arr, op_type)` 多个期权Skew计算详情,与系统时间、周期相关,返回每个期权的隐含波动率、期权类型、Delta | 参数 | 类型 | 说明 | | ------------ | ----- | ------------------------ | | `option_arr` | array | 多个期权代码,数组类型 | | `op_type` | any | 期权类型,整型,取值如下 | 返回:array ### `pfInverstmentRatio(wp, wb)` 投资比例与超配。总表为wb左连接wp,超配比例=wp表’比例’字段-wb表’比例’字段,若不存在该字段则用0代替。 | 参数 | 类型 | 说明 | | ---- | ----- | ---------------- | | `wp` | array | 数据表类型,组合 | | `wb` | array | 数据表类型,基准 | 返回:any ### `pfRachev(t, fname1, alpha, beta, rf)` Rachev比率。 | 参数 | 类型 | 说明 | | -------- | ------ | --------------------- | | `t` | array | 数据表类型 | | `fname1` | string | 字符串,列名 | | `alpha` | float | 实数,盈利置信度 | | `beta` | float | 实数,亏损的置信度 | | `rf` | float | 实数,无风险收益率(%) | 返回:float ### `rccdF(n, n1, n2, _type)` 异同离差变化率指数,与系统证券pn_stock()、系统时间pn_date()、系统周期pn_cycle()、复权方式pn_rate()、复权基准日pn_rateday()和执行点数PN_nDay()相关。调用时需注意设置系统参数。 | 参数 | 类型 | 说明 | | ------ | ---- | ---------------- | | `n` | any | 整数,交易日天数 | | `n1` | any | 整数,交易日天数 | | `n2` | any | 整数,交易日天数 | | `_type` | any | 结果类型 | 返回:array ### `schmidtOrth(data, if_std)` 施密特正交化,对矩阵进行正交,区别于SymOrthogonal,不会改变第一列 | 参数 | 类型 | 说明 | | -------- | ----- | ----------------------------------------------------- | | `data` | array | 二维数字数组, 二维数组 行下标为数字或字符串的二维数组 | | `if_std` | any | 用户自定义, 是否标准化 | 返回:array ### `ssByMtm(n, m)` MTM卖出条件选股,MTM的M日均线下穿(即跌破)0。与系统证券pn_stock()、系统时间pn_date()和系统周期pn_cycle()有关。调用时需注意设置系统参数。 | 参数 | 类型 | 说明 | | ---- | ---- | ----------------------------- | | `n` | int | 整数,统计天数 | | `m` | int | 整数,计算MTM均线的交易日长度 | 返回:bool #### 示例 ```tsl oV:=BackUpSystemParameters(); setsysparam(pn_stock(),'SH600004'); setsysparam(pn_date(),inttodate(20110913)); setsysparam(pn_cycle(),cy_day()); N:=12; M:=6; v:=SsByMTM(N,M); RestoreSystemParameters(oV); return v; ``` ### `stocksAssocConcept(stocksarr, endt, concept_bk_arr)` 基于概念的股票关联网络 | 参数 | 类型 | 说明 | | ---------------- | -------- | ---------------------------------------------- | | `stocksarr` | array | 一维数组类型,股票序列 | | `endt` | datetime | 日期类型,截止日 | | `concept_bk_arr` | array | 一维数组类型,概念板块代码序列,默认为全部板块 | 返回:array ### `voscV(short, long)` 成交量震荡,与系统证券pn_stock()、系统时间pn_date()、系统周期pn_cycle()、复权方式pn_rate()和复权基准日pn_rateday()相关。调用时需注意设置系统参数。 | 参数 | 类型 | 说明 | | ------- | ---- | -------------------- | | `short` | any | 整数,短期交易日天数 | | `long` | any | 整数,长期交易日天数 | 返回:float ### `getDateArr(begt, endt, days_interval, show_cycle, t)` 获取时间序列。生成字段’计算指标开始日’,’持仓截止日’,其中’计算指标开始日’为begt到Endt的时间往前推一年,’持仓截止日’为begt到endt。 | 参数 | 类型 | 说明 | | --- | --- | --- | | `begt` | TdateTIME | TdateTIME 开始日期 | | `endt` | | Tdatetime 截止日期 | | `days_interval` | integer | integer 指标开始计算日向前推移年份 | | `show_cycle` | String | String 周期 | | `t` | | 数据表类型,源数据 | 返回:any #### 示例 ```tsl return getDateArr(20111230T,20120914T,1,'日线'); 返回: ``` ### `splitDiv(len, n)` 网格参数划分,分不平均时,余数给最后一个网格 | 参数 | 类型 | 说明 | | --- | --- | --- | | `len` | int | 整型,参数个数 | | `n` | int | 整型,网格个数 | 返回:array #### 示例 ```tsl return unit(multi_proc_unit).splitDiv(14,5); // array(0,2,4,6,8,14) ``` ### `splitDiv2(len, n)` 网格参数划分,分不平均时,前面M个网格加一 | 参数 | 类型 | 说明 | | --- | --- | --- | | `len` | int | 整型,参数长度 | | `n` | int | 整型,网格个数 | 返回:array #### 示例 ```tsl return unit(multi_proc_unit).splitDiv2(14,5); // array(0,3,6,9,12,14) ``` ### `splitArrayQk(arr)` 数组等分区间,余数给最后一个网格 | 参数 | 类型 | 说明 | | --- | --- | --- | | `arr` | array | 数组,要划分数组 | 返回:array #### 示例 ```tsl arr := array(2,1,3,4,9,5,7,8,9,10,11,12,13,15); return unit(multi_proc_unit).splitArrayQk(arr,5); //array((2,1),(3,4),(9,5),(7,8),(9,15)) ``` ### `splitArrayQk2(arr)` 数组等分区间,分不平均时,前面M个网格加一 | 参数 | 类型 | 说明 | | --- | --- | --- | | `arr` | array | 数组,要划分数组 | 返回:array #### 示例 ```tsl arr := array(2,1,3,4,9,5,7,8,9,10,11,12,13,15); return unit(multi_proc_unit).splitArrayQk2(arr,5); // array((2,3),(4,5),(7,9),(10,12),(13,15)) ``` ### `addTitle(t, title)` 增加表头。 | 参数 | 类型 | 说明 | | --- | --- | --- | | `t` | array | 数据表类型,源数据 | | `title` | String | 字符串,表头 | 返回:any #### 示例 ```tsl return addTitle(``array('a':1),'b'); 返回: ``` ### `gridLogo(str, dir)` 网格写日志,一个网格id一个文件 | 参数 | 类型 | 说明 | | --- | --- | --- | | `str` | string | 字符串型,任务名称 | | `dir` | string | 字符串型,日志文件路径 ,默认为:C:\\temp\\Gridlog | 返回:int #### 示例 ```tsl //在C:\\temp\\Gridlog默认路径下写日志文件 return unit(multi_proc_unit).gridLogo('测试'); ``` ### `setToFirstValue(t1, t2)` 归一处理,用于在计算复合指数时,在基准数据t2的基础上对t1归一化 | 参数 | 类型 | 说明 | | --- | --- | --- | | `t1` | TableArray | 数据表,必须含有’close’字段 | | `t2` | TableArray | 数据表,必须含有’close’字段 | 返回:TableArray ### `wacc(rf, rm, beta, kd, delta)` 加权资本成本WACC(%) | 参数 | 类型 | 说明 | | --- | --- | --- | | `rf` | Real | 实数,无风险利率(%) | | `rm` | Real | 实数,市场预期收益率(%) | | `beta` | Real | 实数,β系数 | | `kd` | Real | 实数,债务成本(%) | | `delta` | Real | 实数,资产负债率(%) | 返回:Real #### 示例 ```tsl return wacc(3.84,10.84,0.637,4.1,40); //结果:6.6194 ``` ### `getTrueRp(w)` 计算资产组合的期望收益率,与自定义的系统变量’TZZHRiMatrix’有关,调用之前先设置该系统变量。并且w的长度必须跟该系统变量的值的长度一致 | 参数 | 类型 | 说明 | | --- | --- | --- | | `w` | Array | 一位数字数组,投资品种比例 | 返回:TableArray #### 示例 ```tsl a:=array(2,3,4,5,8); setSysParam('TZZHRiMatrix',a); w:=array(1,4,6,3,7); return getTrueRp(w); //结果:5.19048 ``` ### `adjustSampleByAny(bk_name, beg_t, money, eval_exp, sort_dir, range_type, range_beg, range_end, percent_type, condition)` 计算满足条件Condition的股票的EvalExp,选取值在RangeBeg跟RangeEnd之间,按照不同的RangeType类型选择股票,并分配资金 | 参数 | 类型 | 说明 | | --- | --- | --- | | `bk_name` | Striong | 字符串,板块名称 | | `beg_t` | TDateTime | 日期型时间,开始时间 | | `money` | Real | 实数,初始资金 | | `eval_exp` | Expression | 表达式 | | `sort_dir` | Boolean | 真假,排序方向 | | `range_type` | Integer | 整数,范围类型 | | `range_beg` | Real | 实数,范围上限 | | `range_end` | Real | 实数,范围下限 | | `percent_type` | Integer | 整数,资金分配方法,用户自定义,含义如下表: | | `condition` | Expression | 表达式,条件选择 | 返回:TableArray #### 示例 ```tsl return adjustSampleByAny( "深证A股", intToDate(20120916), 500, @close(), false, 0, 7, 9, 0, @true); //结果: ``` ### `needAdjustSampleByDays(beg_t, current_date, adjust_days)` 判断起始日期BegT间隔相应天数AdjustDays是否在系统限定的当前日期CurrentDate内 | 参数 | 类型 | 说明 | | --- | --- | --- | | `beg_t` | | 日期型时间,起始日期 | | `current_date` | | 日期型时间,当前时间 | | `adjust_days` | | 整数 | 返回:Boolean #### 示例 ```tsl begt:=intToDate(20121018); endt:=intToDate(20121026); return needAdjustSampleByDays(begt,endt,9); //结果:0 ``` ### `encodePortfolioName(name, beg_t, end_t, method_type, yh_type, predict_yield, max_risk)` 用于生成投资组合的结果保存的名称 | 参数 | 类型 | 说明 | | --- | --- | --- | | `name` | String | 字符串,股票列表 | | `beg_t` | TDateTime | 日期型时间,开始时间 | | `end_t` | TDateTime | 日期型时间,结束时间 | | `method_type` | Ingteger | 整数,0表示’Markowitz法’,1表示’单指数法’ | | `yh_type` | Integer | 整数,0表示’收益,风险最小’,1表示’风险,收益最大’ | | `predict_yield` | Real | 实数 | | `max_risk` | Real | 实数 | 返回:String #### 示例 ```tsl return encodePortfolioName( "某股票", intToDate(20120618),i nttodate(20120919),0,0,0,0); //结果:’某股票,从20120618到20120919,Markowitz法,限定收益为0求风险最小’ ``` ### `allBkYieldAndRisk(period, start_date)` 所有板块Period期的预期收益和风险 | 参数 | 类型 | 说明 | | --- | --- | --- | | `period` | Integer | 整数,做足period期 | | `start_date` | TDateTime | 日期型时间,开始时间 | 返回:TableArray #### 示例 ```tsl return allBkYieldAndRisk(20,intToDate(20120628)); //结果: ``` ### `needAdjustSmaple(beg_t, current_date, adjust_month)` 判断CurrentDate是否还在BegT往后推AdjustMonth*30的日期内 | 参数 | 类型 | 说明 | | --- | --- | --- | | `beg_t` | TDateTime | 日期型时间,起始时间 | | `current_date` | TDateTime | 日期型时间,当前时间 | | `adjust_month` | Integer | 整数,往后推的月份数,月份间隔数 | 返回:TableArray #### 示例 ```tsl return needAdjustSmaple(intToDate(20120618),intToDate(20120926),4); //结果:0 ``` ### `emptyvalue()` 返回受pn_emptymode控制的空值(实数) 返回:Real ### `riskFreeRateofReturnDayly(rf, cy, rate_type, days_in1y)` 年化无风险收益率转换非年化收益率,与系统参数(股票,时间)相关。 | 参数 | 类型 | 说明 | | --- | --- | --- | | `rf` | real | 实数,年化无风险收益率(%) | | `cy` | String | 周期,非年化收益率周期 | | `rate_type` | Integer | 用户自定义,年化收益率折算为非年化收益率方法 | | `days_in1y` | Integer | 用户自定义 | 返回:real #### 示例 ```tsl setSysParam(pn_stock(),'sz000001'); setSysParam(PN_Date(),20180801T); return riskFreeRateofReturnDayly(3,cy_day(),'单利',250); //返回:0.01 ``` ### `fastmap(grid_no, func, parms, parmstype)` 调用网格执行func | 参数 | 类型 | 说明 | | --- | --- | --- | | `grid_no` | int | 整型,网格个数,表示另开的网格数,0表示只使用本地服务器 | | `func` | string | 字符串型或函数指针,要调用网格计算的函数 | | `parms` | array | 数组,func的参数列表 | | `parmstype` | array | 数组,parms的对应类型 | 返回:array ### `gettablebyReg(reg)` 通过正则表达式匹配名称,获取用户数据 | 参数 | 类型 | 说明 | | --- | --- | --- | | `reg` | string | 字符串型,匹配的字符串 | 返回:array #### 示例 ```tsl return unit(multi_proc_unit).gettablebyReg('test'); ``` ### `tryInsetTable(path, value)` 添加用户数据,如果用户数据存在同名,则插入,否则新建 | 参数 | 类型 | 说明 | | --- | --- | --- | | `path` | string | 字符串型,用户数据存储路径 | | `value` | array | 数组,要存储的数据 | 返回:int #### 示例 ```tsl return unit(multi_proc_unit).tryInsetTable('test',array(1,2,3)); ``` ### `getAllThemespools(end_t, details)` 默认主题池:主题关键字及其对应的代表指数、成分股 | 参数 | 类型 | 说明 | | --- | --- | --- | | `end_t` | Date | 日期, 截止日 | | `details` | DBData | 数据表类型, 返回参数,包含主题详情信息 | 返回:array #### 示例 ```tsl end_t := 20230919T; return getAllThemespools(end_t); ``` ### `fileterValue(v, w)` 找出需要过滤处理的日期 | 参数 | 类型 | 说明 | | --- | --- | --- | | `v` | TableArray | 数据表,必须含有’time’字段 | | `w` | Array | 一维日期型时间数组 | 返回:TableArray #### 示例 ```tsl v:=array(('s':0,'time':41201),('s':6,'time':41202),('s':2,'time':41203),('s':8,'time':41204),('s':2,'time':41207),('s':3,'time':41208)); w:=array(41101,41202,41205,41206,41207,41209); fileterValue(v,w); //结果: ```