以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  有关在同样条件下历史回测时结果不同的问题  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=183253)

--  作者:yzg512999
--  发布时间:2020/11/30 9:22:15
--  有关在同样条件下历史回测时结果不同的问题
你之前说:如果是均线,可以用过去四周的周线价格+当前小周期价格计算,来替代直接调用大周期的五日均线。

我按照你的思路来进行改变代码了:
新建MM指标:
M2:CLOSE;
CC:REF(ma(c,4),1);
DD:REF(ma(c,9),1);
EE:REF(ma(c,19),1);

--------------------------------------------------------
II:="MM.M2#MIN5";
CCC:="MM.CC#WEEK";
CCCC:=(CCC*4+ii)/5;//引用的5周线

DDD:="MM.DD#WEEK";
DDDD:=(DDD*9+ii)/10;//引用的10周线

EEE:="MM.CC#DAY";
EEEE:=(EEE*4+ii)/5;//引用的5日线

FFF:="MM.DD#DAY";
FFFF:=(FFF*9+ii)/10;//引用的10日线

GGG:="MM.EE#DAY";
GGGG:=(GGG*19+ii)/20;//引用的20日线

AAA:= ii>CCCC AND ii>DDDD AND ii>EEEE AND ii>FFFF AND ii>GGGG ;
//收盘价大于5周线、10周线、5日线、10日线、20日线

BBB:=ii<CCCC AND ii<DDDD AND  ii<EEEE AND ii<FFFF AND ii<GGGG ;
//收盘价大于5周线、10周线、5日线、10日线、20日线


A:=C>MA(C,5) AND C>MA(C,10) AND C>MA(C,20) ;
B:=C<MA(C,5) AND C<MA(C,10)  AND C<MA(C,20) ;


IF A AND  AAA THEN BUY(HOLDING=0,35%,MARKET),PERTRADER;//无持仓返回0
IF B AND BBB THEN BUYSHORT(HOLDING=0,35%,MARKET),PERTRADER;//无持仓返回0

IF C<MA(C,10)  THEN SELL(HOLDING>0,HOLDING,MARKET);//多仓返回正数
IF C>MA(C,10) THEN SELLSHORT(HOLDING<0,HOLDING,MARKET);//空仓返回负数


然后我加载到60分钟K线进行多期货品种回测,然后把以上的II:="MM.M2#MIN5";进行改变,在其他所有条件都一模一样时,其具体结果如下:

当为II:="MM.M2#MIN5",其总收益率为52.96%
当为II:="MM.M2#MIN15",其总收益率为54.56%
当为II:="MM.M2#MIN30",其总收益率为52.96%
当为II:="MM.M2#MIN60",其总收益率为52.96%



然后我加载到2小时K线进行多期货品种回测,然后把以上的II:="MM.M2#MIN5";进行改变,在其他所有条件都一模一样时,其具体结果如下:

当为II:="MM.M2#MIN5",其总收益率为112.67%
当为II:="MM.M2#MIN15",其总收益率为116.24%
当为II:="MM.M2#MIN30",其总收益率为112.67%
当为II:="MM.M2#MIN60",其总收益率为96.79%


本来按照正常情况的话,引用的都是小级别K线的收盘价,照道理来说,它们的回测结果应该是完全一样的,
在其他所有条件都一模一样时进行回测时,为什么有些情况的结果会不一样呢?深层次原因在哪里呢?



--  作者:FireScript
--  发布时间:2020/11/30 9:42:28
--  
你对比的是60分钟周期和2小时周期的回测结果吗?这个周期不一样,没理由回测结果一致的啊。除非你交易不涉及当前周期的任何数据,否则肯定不会一致的呀。

A:=C>MA(C,5) AND C>MA(C,10) AND C>MA(C,20) ;
B:=C<MA(C,5) AND C<MA(C,10)  AND C<MA(C,20) ;

这2个条件都是直接和本周期数据挂钩的。

--  作者:yzg512999
--  发布时间:2020/11/30 10:26:00
--  
只加载到2小时K线进行回测。







加载到2小时K线进行多期货品种回测,然后把以上的II:="MM.M2#MIN5";进行改变,在其他所有条件都一模一样时,其具体结果如下:

当为II:="MM.M2#MIN5",其总收益率为112.67%
当为II:="MM.M2#MIN15",其总收益率为116.24%
当为II:="MM.M2#MIN30",其总收益率为112.67%
当为II:="MM.M2#MIN60",其总收益率为96.79%



为何会不一样呢??小级别k线的收盘价应该都是一样的吧
不管是用15分还是30分钟


--  作者:yzg512999
--  发布时间:2020/11/30 10:49:36
--  
我指的是在加载在同一个级别K线中,然后改变小级别k线的周期,结果却有些不同,是这个意思。
--  作者:FireScript
--  发布时间:2020/11/30 10:59:13
--  
 我知道你的意思了, 你是说大引小的情况下这四个值应该是一样的是吧?

先指出一个问题,这个涉及到K线划分的问题,前三个正常就是一样的,但是小时线那个,II:="MM.M2#MIN60" 。在11:30结束的那个K上,调用到的价格是不一样,这个不好解释,先搁置下,先给你解决方案。  这个用STKINDI(\'\',\'MM.M2\',0,21,60); 替换下即可。

然后你再检查下回测的设置,我本地也试下 等下给你截图看下。


--  作者:yzg512999
--  发布时间:2020/11/30 11:09:36
--  
明白了,原来是K线划分导致的。


当为II:="MM.M2#MIN5",其总收益率为112.67%
当为II:="MM.M2#MIN15",其总收益率为116.24%
当为II:="MM.M2#MIN30",其总收益率为112.67%
那其中改为min15分时怎么有点略微差别呢?
照道理如你所说应该三者是一样的吧?不过差别不大,可以忽略

--  作者:yzg512999
--  发布时间:2020/11/30 15:21:53
--  
那其中改为min15分时怎么有点略微差别呢?

加载到60分钟k线,也是min15的情况有点不一样?为什么呢



[此贴子已经被作者于2020/11/30 15:23:03编辑过]

--  作者:yzg512999
--  发布时间:2020/11/30 15:23:49
--  
如图所示
--  作者:FireScript
--  发布时间:2020/11/30 15:50:05
--  
 你回测的品种,交易时段,是否复权说明下,我试下。但是你这个策略这个信号非常少,你确定OK的吗?
--  作者:yzg512999
--  发布时间:2020/11/30 16:38:00
--  
信号还可以吧,你就随机选几个吧。看结果怎么样