如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
天软对Matlab建模的支持国信证券金融工程部量化交易策略组张璐楠zhanglun@guosen.com.cn量化研究平台选择•国信金融工程研究方向:量化投资策略、量化交易策略、指数与产品设计、基金评价与研究•目前的研究平台:Matlab建模+天软数据支持•在Matlab中调用天软:•RemoteCallFuncvs.RemoteExecuteRemoteCallFunc•使用时遇到几个问题:•依赖亍账户内的基础TSL函数•可移植性:不同用户、账户共同使用•增加参数vs.基础函数被修改•简单的取数据RemoteExecuteTS=actxserver(„TSExpert.CoExec‟);TS.Stock='SH000300';R=TS.RemoteExecute(„returnNday(252,“日期”,Sp_time(),“收益率”,Stockzf3(sp_time()));‟);Rd=cell2mat(R(2:end,2:end))R='日期''收益率'[40429][-0.0700][40430][-1.8300][40431][0.2100]……RemoteExecute•输入参数只是一个字符串,解决RemoteCallFunc的问题•执行耗时与RemoteCallFunc近似•遇到新的问题:参数传递系统参数的传递•TS=actxserver(„TSExpert.CoExec‟);•TS.get>>TS.getStock:''Time:'0:00:00'Cycle:''•TS.StockRate:0RateDay:'0:00:00'•TS.TimeNDay:0Precision:0•TS.CycleBK:''Stocks:NaN•TS.RateTimes:NaNBKS:NaN•TS.PrecisionNilTrans:0KeepRawData:0Logined:1•11-07-06SZ000063中兴通讯•参数得到的价格•028.47•123.48•223.47•万得中前复权为23.48,与1相同参数传递:通过字符串•参数个数较少时,将参数转化为字符串•用Strcat拼接字符串•num=5;•F0=TS.RemoteExecute(strcat(„ReturnNday(‟,num2str(num),',"low",low(),"high",high(),"close",close());'))•Matlab用单引号,TSL建议用双引号引入格式控制•空格为12,换行符为13。•CycleStr='day';•FuncStr=strcat(„SetSysParam(Pn_cycle(),cy_‟,CycleStr,„());‟,13,‟returnclose();‟);•字符串拼接结果:FuncStr=SetSysParam(Pn_cycle(),cy_day());returnclose();构建子串•Ta=TS.RemoteExecute(strcat('returnMarketTradeDayQk(',num2str(T1),',',num2str(T2),');'));•SubStr=strcat(num2str(T1),',',num2str(T2))•strcat('returnMarketTradeDayQk(„,SubStr,');')•„returnMarketTradeDayQk(40616,40617);‟数组传递:借助系统变量•list={'a'1;'b'2};•TS.SetSysParam('TSLlist',list);•TS.RemoteExecute(„s:=GetSysParam("TSLlist")[:,0];returns;‟);ans='a''b's:=GetSysParam("TSLlist")[:,0];数组下标•R[0][1]=c•R=•R[0,1]=c010ac•R[:][1]=[cd]‟1bd•R[:,1]=[cd]‟•R[1][:]=[bd]‟•R[1]=[bd]‟•GetSysParam("TSLlist")[:,0]传递数组远程调用>>R1=TS.RemoteExecute(strcat(„s:=GetSysParam("TSLlist")[:,0];res:=array();fori:=0tolength(s)-1dobeginsetsysparam(Pn_stock(),s[i