以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  图表正确后台交易不正确的原因?  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=63990)

--  作者:bob
--  发布时间:2014/4/16 11:04:33
--  图表正确后台交易不正确的原因?
帮忙检查一下这段代码,有什么问题吗?为什么图表的信号是正确的,但是这样改成后台交易以后交易就不正常了?

cc1:STKINDI(\'if00\',\'jz1.cc\',0,2,-1),NOAXIS;
cc2:STKINDI(\'if00\',\'jz2.cc\',0,4,-1),NOAXIS;
cc3:STKINDI(\'if00\',\'bl3.cc\',0,18,-1}),NOAXIS;

//正常交易
//1.对锁或空仓
if (cc1=0 and cc2=0 and cc3=0) or (cc1>0 and cc2<0 and cc3=0) or (cc1>0 and cc2=0 and cc3<0) 
                               or (cc1=0 and cc2<0 and cc3>0) or (cc1=0 and cc2>0 and cc3<0)
                               or (cc1<0 and cc2>0 and cc3=0) or (cc1<0 and cc2=0 and cc3>0)  then BEGIN
tsell(tHOLDING>0,tHOLDING,mkt);
tSELLSHORT(tHOLDING<0,tHOLDING,mkt);
end 
//2.三多
if cc1>0 and cc2>0 and cc3>0 then BEGIN
tsellshort(tHOLDING<0,tHOLDING,mkt);
tbuy(tHOLDING=2,1,mkt);
tbuy(tHOLDING=1,2,mkt);
tbuy(tHOLDING=0,3,mkt);
end 
//3.三空
if cc1<0 and cc2<0 and cc3<0 then BEGIN
tsell(tHOLDING>0,tHOLDING,mkt);
tbuyshort(tHOLDING=-2,1,mkt);
tbuyshort(tHOLDING=-1,2,mkt);
tbuyshort(tHOLDING=0,3,mkt);
end 
//4.两多一空
if (cc1>0 and cc2>0 and cc3<0) or (cc1>0 and cc2<0 and cc3>0) or (cc1<0 and cc2>0 and cc3>0) then BEGIN
tsellshort(tHOLDING<0,tHOLDING,mkt);
tsell(tHOLDING=3,2,mkt);
tsell(tHOLDING=2,1,mkt);
tbuy(tHOLDING=0,1,mkt);
end 
//5.两空一多
if (cc1>0 and cc2<0 and cc3<0) or (cc1<0 and cc2<0 and cc3>0) or (cc1<0 and cc2>0 and cc3<0) then BEGIN
tsell(tHOLDING>0,tHOLDING,mkt);
tsellshort(tHOLDING=-3,2,mkt);
tsellshort(tHOLDING=-2,1,mkt);
tbuyshort(tHOLDING=0,1,mkt);
end 
//6. 两多
if (cc1>0 and cc2>0 and cc3=0) or (cc1>0 and cc2=0 and cc3>0) or (cc1=0 and cc2>0 and cc3>0) then BEGIN
tSELLSHORT(tHOLDING>0,tHOLDING,mkt);
tsell(tHOLDING=3,1,mkt);
tbuy(tHOLDING=1,1,mkt);
tbuy(tHOLDING=0,2,mkt);
end 
//7. 两空
if (cc1<0 and cc2<0 and cc3=0) or (cc1<0 and cc2=0 and cc3<0) or (cc1=0 and cc2<0 and cc3<0) then BEGIN
tSELL(tHOLDING>0,tHOLDING,mkt);
tsellshort(tHOLDING=-3,1,mkt);
tbuyshort(tHOLDING=-1,1,mkt);
tbuyshort(tHOLDING=0,2,mkt);
end 
//8.一多
if (cc1=0 and cc2=0 and cc3>0) or (cc1=0 and cc2>0 and cc3=0) or (cc1>0 and cc2=0 and cc3=0) then BEGIN
tSELLSHORT(tHOLDING>0,tHOLDING,mkt);
tsell(tHOLDING=3,2,mkt);
tsell(tHOLDING=2,1,mkt);
tbuy(tHOLDING=0,1,mkt);
end 
//9.一空
if (cc1<0 and cc2=0 and cc3=0) or (cc1=0 and cc2=0 and cc3<0) or (cc1=0 and cc2<0 and cc3=0) then BEGIN
tSELL(tHOLDING>0,tHOLDING,mkt);
tsellshort(tHOLDING=-3,2,mkt);
tsellshort(tHOLDING=-2,1,mkt);
tbuyshort(tHOLDING=0,1,mkt);
end 
持仓:HOLDING,NOAXIS;

--  作者:jinzhe
--  发布时间:2014/4/16 11:05:54
--  

不正常在哪里?

详细说明一下


--  作者:bob
--  发布时间:2014/4/16 11:06:59
--  
本来应该一手空单转成一手多单的 结果给我全部平仓 没有开多
--  作者:jinzhe
--  发布时间:2014/4/16 11:09:24
--  

本来是空转多

这个是你从图表上判断来的结果?


--  作者:bob
--  发布时间:2014/4/16 11:12:49
--  
是的 
--  作者:bob
--  发布时间:2014/4/16 11:19:02
--  
请问我这段代码本身写的有没有什么问题?
--  作者:jinzhe
--  发布时间:2014/4/16 11:32:54
--  

图表和后台不一样的,不要用图表来判断后台

 

在后台里面尤其是这种双向都交易的,你用tbuyholding和tsellholding 来判断当前持仓而不是用tholding


--  作者:jinzhe
--  发布时间:2014/4/16 11:34:24
--  
最后就是要分析条件,你看看条件是不是会同时满足两个语句,比如你上面说的空转多和全屏条件同时满足但是全平语句写前面就给执行全平语句了
--  作者:bob
--  发布时间:2014/4/16 12:35:59
--  
可是昨天交易都还是正常的....奇怪