以文本方式查看主题
- 金字塔客服中心 - 专业程序化交易软件提供商 (http://www.weistock.com/bbs/index.asp)
-- 金字塔软件问题提交 (http://www.weistock.com/bbs/list.asp?boardid=2)
---- 做股票多因子时遇到的关于软件内部运行机理的问题 (http://www.weistock.com/bbs/dispbbs.asp?boardid=2&id=150063)
|
-- 作者:2879993977
-- 发布时间:2017/4/5 15:15:59
-- 做股票多因子时遇到的关于软件内部运行机理的问题
第一日做回测时开仓记录:
此主题相关图片如下:0130.png

第二日做回测的开仓记录:
此主题相关图片如下:0202.png

问题在这里就是,为什么我相同的代码相同的回测时间段的开仓时间点不一样??(两次20150202开仓股票不一样是因为对开仓过了的股票不进行开仓)
此主题相关图片如下:%hro3%0@{jewl%e54be1d1.png

而我的逻辑是首先对股票的多个因子进行综合排序,然后根据其每日排名每隔5日开一次仓,在自定义数据那里明明每个股票已经有排名了,但是回测的时候他却没有按固定的时间开仓
(比如20150130已经有排名了但是它到0150202才开仓),下单代码如下
|
-- 作者:2879993977
-- 发布时间:2017/4/5 15:17:37
--
此主题相关图片如下:xiadan.png

datcount是每五日标记一次的函数(选最高选20是刚开始的时候打算每20日更新一次的)
此主题相关图片如下:datcount.png

|
-- 作者:2879993977
-- 发布时间:2017/4/5 15:18:27
--
做排序的时候的排名数据:
此主题相关图片如下:hengxiang.png

此主题相关图片如下:paixu.png

|
-- 作者:2879993977
-- 发布时间:2017/4/5 15:21:13
--
我想问的是,是否是代码没有正确读取到:
综合排名: REF(SELFDATA(\'综合排名\'),1);
这一个函数
导致当其综合排名<11时仍没有进行开仓???
|
-- 作者:2879993977
-- 发布时间:2017/4/5 15:24:09
--
如果不是综合排名的这里的问题的话可能就是我:
DAYCOUNT=1 OR DAYCOUNT=6 OR DAYCOUNT=11 OR DAYCOUNT=1
这里每五日开一次仓这里代码的问题,
调仓周期设为5日一次有没有更好的方法????
|
-- 作者:2879993977
-- 发布时间:2017/4/5 15:29:51
--
也就是我想固定一个初始日,从这个初始日算起每个5个交易日调一次仓
|
-- 作者:shq
-- 发布时间:2017/4/5 16:11:35
--
1、自定义数据每日刷新,这个排序会变动吗?是否影响后续呢?
2、代码不会不读取,您也可以用调试工具对 综合排名: REF(SELFDATA(\'综合排名\'),1); 进行调试;
3、DAYCOUNT=1 OR DAYCOUNT=6 OR DAYCOUNT=11 OR DAYCOUNT=16 这个写法应该没有问题 您可以用求余来表示 MOD( DAYCOUNT, 5)=1;
|
-- 作者:2879993977
-- 发布时间:2017/4/5 16:55:56
--
此主题相关图片如下:)38{9dqlo_hrgi)f$njv48y.png

调试了下,可能是我daycount这部分函数的问题,
在图表上显示0130日daycount=8,并非5n+1,也就是未达到我预设的开仓信号但是在回测计算的时候它却被触发了,
也就是在图标回测中与图表现实中daycount计算存在差异,回测时其值应该并非为8而是1或6,11,16
请问金字塔回测的时候的内部机理是吧回测设置的起始第一个交易日作为有效值吗
|
-- 作者:shq
-- 发布时间:2017/4/5 17:05:44
--
是的,但是有个选项叫做“严格使用时间段数据测试”,不知是否这个产生了偏差。举例说明下:以ref(close,1)为例,起始时间段为2015/1/1,回测时,若勾选这个选项,那么接下来的第一个日K线的引用为空,若不勾选,第一根日K线的引用为上一根K线的收盘价(位于2015/1/1之前)。
|
-- 作者:2879993977
-- 发布时间:2017/4/6 9:20:20
--
试了勾选与不勾选两种情况,测试结果都一样,看来是回测试程序并没有按照
if startday=20150101 then begin
daycount:=0;
end
daycount:=daycount+1;
运行,daycount这个主要计算开仓时间点的参数无法正确按预定时间初始化;
老师有没有什么好的建议,可以设置成固定一个时间点后,后面每5个(或n个)交易日进行一次调仓?(这里主要是想保证每次相同代码相同设置回测的结果均一直,后期是实盘时也可追朔)
|