以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (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=146761)

--  作者:zwdqx
--  发布时间:2017/1/13 7:51:19
--  回测交易次数是以开仓计,还是以开仓计?

一组策略,买入条件一样,为了追求利润最大化,卖出条件做了修改,想通过回测找到利润最大。但回测中发现得到的交易次数都不一样,假如按开仓计的话,交易次数应该是一样的,不解?


--  作者:pyd
--  发布时间:2017/1/13 7:55:46
--  
交易次数是全平算一次
--  作者:zwdqx
--  发布时间:2017/1/15 17:23:40
--  
以下是引用pyd在2017-1-13 7:55:46的发言:
交易次数是全平算一次

我的策略是只开一次仓, 仓位为“0”才买,按理是开仓、平仓是一 一个对应的。 策略如下:买入条件一样,卖出条件略有不同,个人认为交易次数应该是一样的,只是胜率不一样而以,但这两种情况测试下来,交易次数就是不一样。不知为什么。  

方案一:

if CROSS(MA10,MA20)  AND  macd>REF(macd,1)   and  tbuyholding(1)=0 and TTOTALDAYTRADE<1 then BEGIN

 tbuy(1,10000/close,mkt);

End

if  (c>tenterprice*1.045  or  c<tenterprice*0.93 or  tenterbars>=20) and tbuyholding(0)>0 then  BEGIN 

tsell(1,0,mkt);

end


方案二:

if CROSS(MA10,MA20)  AND  macd>REF(macd,1)   and  tbuyholding(1)=0 and TTOTALDAYTRADE<1 then BEGIN

 tbuy(1,10000/close,mkt);

End

if ( c>tenterprice*1.045  or  c<tenterprice*0.93  or  tenterbars>=20 or CROSS(dea, diff) or cross(ma10,ma5))  and  tbuyholding(0)>0 then  BEGIN 

tsell(1,0,mkt);

end


--  作者:zwdqx
--  发布时间:2017/1/15 17:31:15
--  

我已将两份测试报告通过QQ离线文件传给金字塔客服10(2862096385).


--  作者:wenarm
--  发布时间:2017/1/16 8:31:13
--  

你开平仓条件限制上形成了类似互锁条件的。只有平仓触发后,在没有持仓时,才会进行开仓动作,那就有可能造成开仓不一致

[此贴子已经被作者于2017-1-16 9:02:45编辑过]

--  作者:shq
--  发布时间:2017/1/16 9:04:01
--  
您看下交易次数的对比,从代码逻辑来看,当测试设置完全一样时,方案二的交易次数应该比方案一多。同一次开仓后,方案二的平仓条件比方案一的平仓条件要优,方案二有可能先平仓,方案一则等着平仓。这过程中,有可能方案二又开始开仓,因此,整个方案一与方案二的交易次数很小概率才一样。