以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  开仓当根K线显示的开仓距离ENTERBARS 不是0  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=53134)

--  作者:zxlc888
--  发布时间:2013/6/18 12:06:07
--  开仓当根K线显示的开仓距离ENTERBARS 不是0

上次反馈过这个问题,我不断找原因,找不出原因来。当前开仓K线的开仓距离,显示的是上一要开仓信号到当产的距离,而不是零。

 

麻烦帮我看看,源码如下:

 

INPUT:NMIN(4,1,150,10);
INPUT:SS(10,1,10000,1);
INPUT:ZS(16,1,999,1);
CYC:=BARSLAST(DATE>REF(DATE,1))+1;  
RJL:=CYC;
RNKCCS:=COUNT(ENTERBARS=1,RJL);                     
HIGHESTOF30MIN:=VALUEWHEN(CYC=NMIN,HHV(H,CYC)),COLORRED,LINETHICK2;        
LOWESTOF30MIN:=VALUEWHEN(CYC=NMIN,LLV(L,CYC)),COLORGREEN,LINETHICK2; 
开仓距离:enterbars,linethick0;
DZS:=L<ENTERPRICE-(ENTERPRICE-REF(OPEN,ENTERBARS))-ZS;
KZS:=H>ENTERPRICE-(ENTERPRICE-REF(OPEN,ENTERBARS))+ZS;
IF DZS AND HOLDING>0 THEN
BEGIN
SELL(HOLDING>0,0,marketR);
END
IF KZS AND HOLDING<0 THEN
BEGIN
SELLSHORT(HOLDING<0,0,marketR);
END

KDA:=HIGH >= HIGHESTOF30MIN AND REF(H,1)<HIGHESTOF30MIN;
KKA:= LOW <= LOWESTOF30MIN AND REF(L,1)>LOWESTOF30MIN;
IF REF(KDA,1) AND HOLDING<=0 AND CYC>NMIN THEN 
BEGIN
  SELLSHORT(HOLDING<0,0,MARKETR);          
  BUY(HOLDING=0 AND TIME<=134500,SS,MARKETR);             
END
IF REF(KKA,1) AND HOLDING>=0 AND  CYC>NMIN THEN    
BEGIN
  SELL(HOLDING>0,0,MARKETR);
  BUYSHORT(HOLDING=0 AND TIME<=134500,SS,MARKETR);
END


--  作者:jinzhe
--  发布时间:2013/6/18 13:13:56
--  

开仓距离:enterbars,linethick0;
你把这句话放最后

代码顺序也是很重要的,因为策略的运行模式是从上到下,写前面buy,sell都还没运行,所以不能反应出交易后的情况


--  作者:zxlc888
--  发布时间:2013/6/18 13:32:51
--  
那在实盘中,他不是一秒轮询,可实盘中,也是错误的
--  作者:jinzhe
--  发布时间:2013/6/18 13:36:35
--  

错误在哪里?图表交易的原理就是根据信号进行操作,出信号后enterbars就改变

还有,我所提到的代码顺序问题,理解了吗、


--  作者:zxlc888
--  发布时间:2013/6/18 14:06:13
--  
你提到的代码顺充问题我清楚了。历史回测,他是一根K线只计算一次,按顺序下来的