✨ feat(tsl-api-reference): expand API and module coverage
This commit is contained in:
@@ -0,0 +1,284 @@
|
||||
# 回测 / 快速回测
|
||||
|
||||
## `QuickBackTesting`
|
||||
|
||||
声明:class
|
||||
|
||||
执行简化的比例类组合回测,并查询组合与基准收益序列
|
||||
|
||||
<!-- tags: 调用 历史模拟 策略验证 比较基准 业绩基准 快速测试 -->
|
||||
|
||||
### `fEndT`
|
||||
|
||||
声明:field
|
||||
|
||||
回测截止时间 当前系统时间
|
||||
|
||||
可见性:`public`
|
||||
|
||||
类型:date_time
|
||||
|
||||
### `fCycle`
|
||||
|
||||
声明:field
|
||||
|
||||
调仓周期 月线
|
||||
|
||||
可见性:`public`
|
||||
|
||||
类型:string
|
||||
|
||||
### `fPoint`
|
||||
|
||||
声明:field
|
||||
|
||||
初始点位 1000
|
||||
|
||||
可见性:`public`
|
||||
|
||||
类型:integer
|
||||
|
||||
### `fIndexId`
|
||||
|
||||
声明:field
|
||||
|
||||
基准代码 SH000300
|
||||
|
||||
可见性:`public`
|
||||
|
||||
类型:string
|
||||
|
||||
### `fRateType`
|
||||
|
||||
声明:field
|
||||
|
||||
比例类组合资金分配方式 4:等权重
|
||||
|
||||
可见性:`public`
|
||||
|
||||
类型:integer
|
||||
|
||||
### `quickBackTest()`
|
||||
|
||||
声明:function
|
||||
|
||||
执行快速回测主流程,循环调仓日期、生成目标持仓并完成清算
|
||||
|
||||
<!-- tags: 历史模拟 快速回测 策略验证 -->
|
||||
|
||||
可见性:`public`
|
||||
|
||||
返回:array
|
||||
|
||||
### `getTimeSeries()`
|
||||
|
||||
声明:function
|
||||
|
||||
获取快速回测的调仓日期时间序列;可重写
|
||||
|
||||
<!-- tags: 查询 调仓周期 时序 -->
|
||||
|
||||
可见性:`public`
|
||||
|
||||
返回:array
|
||||
|
||||
#### 示例
|
||||
|
||||
范例01:调用基类实现
|
||||
|
||||
```tsl
|
||||
obj := createObject("QuickBackTesting");
|
||||
obj.FBegT := intToDate(20130101);
|
||||
obj.FEndT := intToDate(20130108);
|
||||
obj.FCycle := cy_day();
|
||||
ret := obj.GetTimeSeries();
|
||||
echo toStn(ret);
|
||||
return ret;
|
||||
// 输出:array(41278.0,41281.0,41282.0)
|
||||
```
|
||||
|
||||
### `getTradeOrder(v_end_t)`
|
||||
|
||||
声明:function
|
||||
|
||||
获取指定时点的目标持仓调仓数据;策略子类必须重写
|
||||
|
||||
<!-- tags: 查询 成交明细 交易指令 -->
|
||||
|
||||
可见性:`public`
|
||||
|
||||
| 参数 | 类型 | 说明 |
|
||||
| --------- | --------- | -------------- |
|
||||
| `v_end_t` | date_time | 日期,当前时点 |
|
||||
|
||||
返回:array
|
||||
|
||||
### `getPortfolioReturn()`
|
||||
|
||||
声明:function
|
||||
|
||||
获取区间资产数据,返回字段同 GetPortfolioReturn(),此方法可指定区间
|
||||
|
||||
<!-- tags: 查询 投资组合 资产组合 -->
|
||||
|
||||
可见性:`public`
|
||||
|
||||
返回:array
|
||||
|
||||
### `getPortfolioReturn(v_beg_t, v_end_t)`
|
||||
|
||||
声明:function
|
||||
|
||||
获取区间资产数据,返回字段同 GetPortfolioReturn(),此方法可指定区间
|
||||
|
||||
<!-- tags: 查询 投资组合 资产组合 -->
|
||||
|
||||
可见性:`public`
|
||||
|
||||
| 参数 | 类型 | 说明 |
|
||||
| --------- | -------- | ------ |
|
||||
| `v_beg_t` | datetime | 开始日 |
|
||||
| `v_end_t` | datetime | 截止日 |
|
||||
|
||||
返回:array
|
||||
|
||||
### `getPortfolioReturn2(v_beg_t, v_end_t)`
|
||||
|
||||
声明:function
|
||||
|
||||
获取区间组合累计收益率(%)
|
||||
|
||||
<!-- tags: 查询 回报率 投资收益 投资组合 资产组合 -->
|
||||
|
||||
可见性:`public`
|
||||
|
||||
| 参数 | 类型 | 说明 |
|
||||
| --------- | -------- | ------ |
|
||||
| `v_beg_t` | datetime | 开始日 |
|
||||
| `v_end_t` | datetime | 截止日 |
|
||||
|
||||
返回:float
|
||||
|
||||
### `getPortfolioReturn3(v_beg_t, v_end_t)`
|
||||
|
||||
声明:function
|
||||
|
||||
获取区间内组合、基准、超额及累计收益率序列
|
||||
|
||||
<!-- tags: 查询 组合收益率 基准收益率 -->
|
||||
|
||||
可见性:`public`
|
||||
|
||||
| 参数 | 类型 | 说明 |
|
||||
| --------- | -------- | ------ |
|
||||
| `v_beg_t` | datetime | 开始日 |
|
||||
| `v_end_t` | datetime | 截止日 |
|
||||
|
||||
返回:array
|
||||
|
||||
#### 示例
|
||||
|
||||
范例01:调用示例
|
||||
|
||||
```tsl
|
||||
//新建子类继承基类
|
||||
Type MyQKBackTesting=class(QuickBackTesting)
|
||||
public
|
||||
function GetTimeSeries();override;
|
||||
function GetTradeOrder(vEndT);override;
|
||||
end;
|
||||
//重写GetTimeSeries方法
|
||||
function MyQKBackTesting.GetTimeSeries();override;
|
||||
begin
|
||||
//具体代码省略
|
||||
end;
|
||||
//重写GetTradeOrder方法
|
||||
function MyQKBackTesting.GetTradeOrder(vEndT);override;
|
||||
begin
|
||||
//具体代码省略
|
||||
end;
|
||||
```
|
||||
|
||||
范例02:调用示例
|
||||
|
||||
```tsl
|
||||
Function MyQKBackTesting(BegT,EndT,MyPortfolioArr);
|
||||
Begin
|
||||
//创建对象
|
||||
obj := CreateObject('MyQKBackTesting');
|
||||
//初始化实例,给变量赋值(其他变量可参考成员变量介绍)
|
||||
obj.FBegT := BegT;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
obj.FEndT := EndT;
|
||||
//回测:调用对象obj的backtest方法
|
||||
obj.QuickBackTest();
|
||||
//通过调用类提供的查询方法得到回测结果
|
||||
return
|
||||
array(
|
||||
"资产配置":obj.GetPortfolioReturn(BegT,EndT),
|
||||
"组合收益率":obj.GetPortfolioReturn2(BegT,EndT),
|
||||
'区间组合收益率序列':obj.GetPortfolioReturn3(BegT,EndT)
|
||||
);
|
||||
End;
|
||||
```
|
||||
|
||||
范例03:调用示例
|
||||
|
||||
```tsl
|
||||
Function
|
||||
TSFL_QuickBackTesting_File(Begt,Endt,IndexId,IniPoint,Ratetype,Mydata);
|
||||
Begin
|
||||
obj := CreateObject('QKbackTestEg');
|
||||
//用户导入的配置数据
|
||||
obj.MyPortfolioArr := mydata;
|
||||
//回测开始时间
|
||||
obj.FBegT := BegT;
|
||||
//回测截止时间
|
||||
obj.FEndT := EndT;
|
||||
//基准代码
|
||||
obj.FIndexId := IndexId;
|
||||
//比例配比方式(本范例以用户自定义输入)
|
||||
obj.FRateType := Ratetype;
|
||||
//初始资金
|
||||
obj.FPoint := IniPoint;
|
||||
//回测
|
||||
obj.QuickBackTest();
|
||||
|
||||
//获取返回结果(返回结果可根据需要选择)
|
||||
return array(
|
||||
'资产配置':obj.GetPortfolioReturn(begt,endt),
|
||||
'区间收益率':obj.GetPortfolioReturn2(begt,endt),
|
||||
'组合和基准收益率序列':obj.GetPortfolioReturn3(begt,endt)
|
||||
);
|
||||
|
||||
End;
|
||||
|
||||
Type QKbackTestEg=class(QuickBackTesting)
|
||||
public
|
||||
MyPortfolioArr;
|
||||
function GetTimeSeries();override;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
function GetTradeOrder(vEndT);override;
|
||||
end;
|
||||
|
||||
function QKbackTestEg.GetTimeSeries();override;
|
||||
begin
|
||||
//从导入的配置文件中获取调仓日序列
|
||||
return MyPortfolioArr[:,'截止日'] union2 array();
|
||||
end;
|
||||
|
||||
function QKbackTestEg.GetTradeOrder(vEndT);override;
|
||||
begin
|
||||
//查询某个调仓日的配置数据
|
||||
t := Select * from MyPortfolioArr where ['截止日']=vEndT end;
|
||||
return t;
|
||||
end;
|
||||
```
|
||||
Reference in New Issue
Block a user