公众号

TSL课堂

登录
  • 目录
  • 资料
  • 介绍
  • 评论
  •  课时12020-04-02 交易策略评价框架
交易策略评价框架
本视频主要讲解了“天软交易策略评价框架”的使用方法和注意事项。
(1)内容简介:“天软交易策略评价框架”主要基于交易角度对历史交易明细数据进行评价,来评判策略具体实施情况如何;
(2)业务应用:“天软交易策略评价框架”可支持多品种为标的的交易数据,并提供了一套完善的评价体系;
(2)使用事宜:重点关注2点:提供的交易明细数据要包含“汇总条件”在内的12个字段,且交易要完整;以何种方式进行汇总;
(3)预先了解:天软交易策略评价框架pdf;
(4)演示范例: TrainVideo_TS04100_01;
更多内容,请参见视频和参考资料。
课程:'$CatalogInfo[0]['Name']$'X
160
精彩评论
暂无评论
发表评论
专题练习
1、(程序) 已知有如下交易策略: 投资对象:上证50(SH000016)成分股 投资区间:20200101~20201231(日线) 买入条件:10日均线上穿20日均线 卖出条件:10日均线下穿20日均线 汇总条件:按券 购买数量:1000 交易费率:万分之六 乘数:1 保证金比例:100% 请按上述要求提供交易明细数据,使用天软交易策略评价框架,返回上述交易策略的评价结果。

查看解析 》
【参考答案】
r:=array();
Position:=1000; //购买股票的数量
PosRate:=6/10000;//交易费率
Multiplier:=1;//乘数
MarginRatio:=100;//保证金比例
begt := 20210101T;
endt := 20211231T;
days := markettradedayQK(begt,endt);
//买入信号
buySignal := @cross(ma(close(),10),ma(close(),20))=1;
//卖出信号
sellSignal := @cross(ma(close(),10),ma(close(),20))=1;
for i:=0 to length(days)-1 do
begin
BuyOrder := array();
SellOrder := array();
day := days[i];
stockArr := getbkbydate("SH000016",day);
//买入清单
BuyOrder := select thisrow as "汇总条件",
day as " 截止日",
thisrow as "代码",
StockName(thisrow) as '名称',
1 as '方向',
0 as "动作",
Multiplier as '乘数',
MarginRatio as '保证金比例(%)',
c := spec(specdate(close(),day),thisrow) as '成交价',
Position as '成交量',
PosRate*Position*c*Multiplier as '费用',
Position*c*Multiplier as "成交金额"
from stockArr where spec(specdate(eval(buySignal),day),thisrow) end;
//卖出清单卖出清单
SellOrder := select thisrow as "汇总条件",
day as "截止日",
thisrow as "代码",
StockName(thisrow) as '名称',
1 as '方向',
1 as "动作",
Multiplier as '乘数',
MarginRatio as '保证金比例(%)',
c := spec(specdate(close(),day),thisrow) as '成交价',
Position as '成交量',
PosRate*Position*c*Multiplier as '费用',
Position*c*Multiplier as "成交金额"
from stockArr where spec(specdate(eval(sellSignal),day),thisrow) end;
r &= BuyOrder union SellOrder;
End;
////剔除未开先卖,未平仓的数据
tmplast := select last := sselect drange(0 to 0)["动作"],["截止日"] from thisgroup order by ["截止日"] desc end as nil,
last[0] as "期末交易类型",
["汇总条件"]+tostring(last[1]) as "label"
from r group by ["汇总条件"] end;
tmpfirdt := select last := sselect drange(0 to 0)["动作"],["截止日"] from thisgroup order by ["截止日"] desc end as nil,
last[0] as "期初交易类型",
["汇总条件"]+tostring(last[1]) as "label"
from r group by ["汇总条件"] end;

tmp := tmplast union tmpfirdt;
invalidOrder := sselect ["label"] from tmp where ["期末交易类型"]=0 or ["期初交易类型"]=1 end;
r := select * from r where not (["汇总条件"]+tostring(["截止日"]) in invalidOrder) end;
return r;
end

预约申请

×
*
*