Files
playbook/skills/tsl-api-reference/references/codegen/module/ts-rotation-strategy.md
T
2026-08-14 17:15:41 +08:00

5.6 KiB

量化策略 / 轮动

TSRotationStrategy

声明:class

轮动策略框架

fRotateSampleData

声明:field

区间轮动样本数据 空

可见性:public

类型:array

fBegT

声明:field

轮动开始日期 前推 1 年

可见性:public

类型:date_time

fEndT

声明:field

轮动截止日期 当前

可见性:public

类型:date_time

fRotateSampleDataExp

声明:field

单期轮动样本数据模型 ""

可见性:public

类型:string

fRotateCycle

声明:field

轮动周期 月线

可见性:public

类型:string

fConStr

声明:field

剔除条件 ""

可见性:public

类型:string

fStockArr

声明:field

轮动样本空间,用于各期固定初始样本 空

可见性:public

类型:array

fRotateDateType

声明:field

轮动选样交易日期类型 0

可见性:public

类型:integer

fMaxHoldNum

声明:field

最大持仓个数 30

可见性:public

类型:integer

fIfTiming

声明:field

是否考虑择时 0

可见性:public

类型:bool

fIfTiming2

声明:field

轮动选样后首期是否考虑择时 0

可见性:public

类型:bool

fBuyCond

声明:field

买入条件 ""

可见性:public

类型:string

fSellCond

声明:field

卖出条件 "" 同上

可见性:public

类型:string

getInitSampleArrByEndt(endt)

声明:function

获取单期轮动初始样本池,仅当模式 2 轮动模型模式有效,适用于各期非固定初始样本池

可见性:public

参数 类型 说明
endt datetime 计算或查询使用的日期时间边界

getRotateSampleArrByEndt(stock_arr, endt)

声明:function

获取单期轮动目标样本池,仅模式 2 轮动模型模式需用户重写

可见性:public

参数 类型 说明
stock_arr array 一维数组,当前设置的轮动样本空间 fStockArr
endt datetime 计算或查询使用的日期时间边界

getBuySampleData(rotate_data, vendt)

声明:function

获取当期择时买入池。仅当 FIfTiming=1 时有效(即考虑择时),如果择时买卖条件较为复杂

可见性:public

参数 类型 说明
rotate_data array 二维数组,当期最新轮动样本池;已排除当期已持有证券
vendt datetime 当期择时判断日期

getSellSampleData(hold_data, vendt)

声明:function

获取当期择时卖出池。仅当 FIfTiming=1 时有效(即考虑择时)。重写后,卖出条件表达式

可见性:public

参数 类型 说明
hold_data array 二维数组,当期最新持仓池;已排除不在本期轮动池及已触发止盈止损的证券
vendt datetime 当期择时判断日期

getRotateSampleData()

声明:function

获取当期最新轮动样本池

可见性:public

getRotateSampleData(vbegt, vendt)

声明:function

获取区间轮动样本池

可见性:public

参数 类型 说明
vbegt datetime 轮动样本区间开始日期
vendt datetime 轮动样本区间结束日期

示例

范例01:调用示例

BegT := minvalue(RotateSampleData[:,"截止日"]);
   EndT := maxvalue(RotateSampleData[:,"截止日"]);
   obj := new TSRotationStrategy();

   //轮动设置
   obj.FRotateSampleData := RotateSampleData;
   obj.FMaxHoldNum := 4;
   obj.FRotateDateType := 0;

   //择时设置
   obj.FIfTiming := 1;
   obj.FIfTiming2 := 1;
   obj.FBuyCond := "cross(close(),MA(close(),5))=1";//当日金叉则买入
   obj.FSellCond := "cross(close(),MA(close(),5))=-1"; //当日死叉则卖出
      //回测
   obj.BackTest();
    //获取返回结果(返回结果可根据需要选择)
// // 返回样式同范例1

范例02:调用示例

BegT := minvalue(RotateSampleData[:,"截止日"]);
   EndT := maxvalue(RotateSampleData[:,"截止日"]);
   obj := new TSRotationStrategy();

   //轮动设置
   obj.FRotateSampleData := RotateSampleData;
   obj.FMaxHoldNum := 4;
   obj.FRotateDateType := 1;//T+1 日
   obj.FParamCfg := array(
                        "调仓成交价类别":2,//调仓成交价类型 0:日均价,1:收盘价,2:
开盘价
                        "开仓费率(%)":0.03,
                        "平仓费率(%)":0.2,
                        );
   //回测
   obj.BackTest();
   //获取返回结果(返回结果可根据需要选择)
// // 返回样式同范例1