以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  序列计算,乱开单乱平仓,请帮忙看看  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=5237)

--  作者:fly
--  发布时间:2011/2/21 15:00:15
--  序列计算,乱开单乱平仓,请帮忙看看

用逐周期时在1分钟,5分钟试都正常,当然我是用在一小时的。

但是用序列计算的时候,开仓以后就立刻平仓,而且开仓是乱开的。

详情工作人员麻烦解答一下我的简单问题:

//多头止损,平仓,开仓

LSL:=tENTERPRICE-Z*0.1*REF(ATR,tENTERBARS-1);

LTP:=REF(ER,1)>=0.9 OR REF(C,1)<REF(AMA,1);

LO :=REF(C,1)>REF(SSMA,1) AND H>=REF(UP,1);

DEBUGOUT(‘多头止损=%.0F’,LSL);

DEBUGOUT(‘多头平仓=%.0F’,LTP);

DEBUGOUT(‘多头开仓=%.0F’,LO);

 

//空头止损,平仓,开仓

SSL:=tENTERPRICE+Z*0.1*REF(ATR,tENTERBARS-1);

STM:=REF(ER,1)>=0.9 OR REF(C,1)>REF(AMA,1);

SO :=REF(C,1)<REF(SSMA,1) AND L<=REF(DOWN,1);

DEBUGOUT(‘空头止损=%.0F’,SSL);

DEBUGOUT(‘空头平仓=%.0F’,STM);

DEBUGOUT(‘空头开仓=%.0F’,SO);

 

//平空开多

TSELLSHORT(STM AND THOLDING<0,THOLDING,MKT);

TSELLSHORT(THOLDING<0,THOLDING,STP,SSL);

TBUY(LO AND THOLDING=0,LOTS,MKT);

 

//平多开空

TSELL(LTP AND THOLDING>0,THOLDING,MKT);

TSELL(THOLDING>0,THOLDING,STP,LSL);

TBUYSHORT(SO AND THOLDING=0,LOTS,MKT);

 

这是用逐周期的时候,动态测试没问题。里面包括的指标用序列计算是没问题的。

但是改成序列计算的时候,就乱开单了,乱平仓了。

请问是不是下边两段改成以下这样就解决问题呢?因为序列计算是只计算一次?

 

//平空开多

IF H>=SSL THEN TSELLSHORT(THOLDING<0,THOLDING,MKT)

ELSE IF STM THEN TSELLSHORT(THOLDING<0,THOLDING,MKT);

 

IF LO THEN TBUY(THOLDING=0,LOTS,MKT);

 

//平多开空

IF L<=LSL THEN TSELL(THOLDING>0,THOLDING,MKT)

ELSE IF LTP THEN TSELL(THOLDING>0,THOLDING,MKT);

 

IF SO THEN TBUYSHORT(THOLDING=0,LOTS,MKT);


--  作者:王锋
--  发布时间:2011/2/21 15:45:01
--  

初步看了一下你的公式是有病句的

//平空开多

TSELLSHORT(STM AND THOLDING<0,THOLDING,MKT);

TSELLSHORT(THOLDING<0,THOLDING,STP,SSL);

TBUY(LO AND THOLDING=0,LOTS,MKT);

 

//平多开空

TSELL(LTP AND THOLDING>0,THOLDING,MKT);

TSELL(THOLDING>0,THOLDING,STP,LSL);

TBUYSHORT(SO AND THOLDING=0,LOTS,MKT);

 

THOLDING不要放在开平仓的条件里,详情请参考

http://www.weistock.com/bbs/dispbbs.asp?boardid=4&Id=332 问题15


--  作者:伍星亮
--  发布时间:2011/2/22 10:01:37
--  
嗯。。的确是可能有这样的问题。感谢高手指教。谢谢工作人员帮我转发帖子。