playbook/docs/tsl/syntax_book/function/financial/grid_pool.md

5.0 KiB
Raw Blame History

网格池

内容
  • MultiProc_unit
MultiProc_unit

功能描述:封装网格常用操作

接口汇总:

所属分类 接口名称 说明 备注
总接口 fastmap 调用网格执行函数
日志 gridLogo 网格写日志
等分划分方式 splitDiv 度等分划分 参数为度int
splitDiv2 长度等分划分
SplitArrayQK 数组等分划分 参数为数组array
SplitArrayQK2 数组等分划分
用户数据相关 DeleteTablebyReg 批量删除用户数据 正则匹配
GettablebyReg 获取用户数据 正则匹配
TryInsetTable 添加用户数据 正则匹配

网格使用经验:

1、网格嵌套网格模型再去调用开网格容易有效率问题

2、耗时小于0.2s~1s的函数不建议用网格因为此时网格调度耗时将会很耗时

3、在测试网格时使用Timeit 测试比较耗时的网络节点不同网络节点耗时差异可以为0.02s VS 0.4s

通过设置fastmap的sysparm参数指定运算网格
内容
  • Fastmap
  • 范例
  • 工具函数
  • 中间函数
Fastmap
  • Fastmap
  • 范例
  • 工具函数
  • 中间函数
范例

####### 内容

  • 提取50的5日涨幅
  • 提取50的历史涨幅矩阵

####### 提取50的5日涨幅

// **********************参数设置***********************//
N := 5;
endt := today();
stocks := getbk("上证50");
// **********************网格模版*********************//
gridNo := 3; // 网格个数,0表示只使用本地服务器
func := FunctionName() + '.tsubbystocks'; // 网格函数
parms := array(N, endt, stocks);
parmstype := array(0, 0, 1);
return unit(MultiProc_unit).fastmap(gridNo, func, parms, parmstype);
// ***********************子函数**********************//
function tsubbystocks(N, endt, stocks);
begin
    sp_s(pn_date(), endt);
    i := 0;
    ret := array();
    for _, stk in stocks do
    begin
        sp_s(PN_Stock(), stk);
        for j := 0 to N do
        begin
            ret[I, '截止日'] := ref(sp_time(), j);
            ret[i, '代码'] := stk;
            ret[i, '名称'] := stockname(stk);
            ret[I, '涨幅(%)'] := ref(stockzf3(), j);
            i++;
        end;
    end;
    return ret;
end;

返回

####### 提取50的历史涨幅矩阵

// **********************参数设置***********************//
N := 5;
endt := today();
stocks := getbk("上证50");
// **********************网格模版*********************//
// **********************网格模版*********************//
gridNo := 3; // 网格个数,0表示只使用本地服务器
func := FunctionName() + '.tsubbystock'; // 网格函数
parms := array(N, endt, stocks);
parmstype := array(0, 0, 2);
return unit(MultiProc_unit).fastmap(gridNo, func, parms, parmstype);
end;
function tsubbystock(N, endt, stock);
begin
    sp_s(PN_Stock(), stock);
    sp_s(pn_date(), endt);
    ret := array(
    "代码":stock,
    "名称":stockname(stock),
    "截止日":endt,
    );
    for i := 1 to N do ret["T_"$ i] := ref(stockzf3(), i);
    return ret;
end;
工具函数

####### 内容

  • GridLogo

####### GridLogo

用途MultiProc_unit相关函数。 参数arg1按示例顺序传入。 返回:处理后的结果值。

范例

// 在C:\\temp\\Gridlog默认路径下写日志文件
return unit(MultiProc_unit).gridLogo('测试');
中间函数

####### 内容

  • SplitDiv
  • SplitDiv2
  • SplitArrayQK
  • SplitArrayQK2
  • DeleteTablebyReg
  • GettablebyReg
  • TryInsetTable

####### SplitDiv

范例

return unit(MultiProc_unit).splitDiv(14, 5); // array(0,2,4,6,8,14)

####### SplitDiv2

范例

return unit(MultiProc_unit).splitDiv2(14, 5); // array(0,3,6,9,12,14)

####### SplitArrayQK

用途MultiProc_unit相关函数。 参数arg1arg2按示例顺序传入。 返回:处理后的结果值。

范例

arr := array(2, 1, 3, 4, 9, 5, 7, 8, 9, 10, 11, 12, 13, 15);
return unit(MultiProc_unit).SplitArrayQK(arr, 5); // array((2,1),(3,4),(9,5),(7,8),(9,15))

####### SplitArrayQK2

用途MultiProc_unit相关函数。 参数arg1arg2按示例顺序传入。 返回:处理后的结果值。

范例

arr := array(2, 1, 3, 4, 9, 5, 7, 8, 9, 10, 11, 12, 13, 15);
return unit(MultiProc_unit).SplitArrayQK2(arr, 5);
// array((2,3),(4,5),(7,9),(10,12),(13,15))

####### DeleteTablebyReg

用途MultiProc_unit相关函数。 参数arg1按示例顺序传入。 返回:处理后的结果值。

范例

return unit(MultiProc_unit).DeleteTablebyReg('test');

####### GettablebyReg

用途MultiProc_unit相关函数。 参数arg1按示例顺序传入。 返回:处理后的结果值。

范例

return unit(MultiProc_unit).GettablebyReg('test');

####### TryInsetTable

用途MultiProc_unit相关函数。 参数arg1arg2按示例顺序传入。 返回:处理后的结果值。

范例

return unit(MultiProc_unit).TryInsetTable('test', array(1, 2, 3));