以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  金字塔软件问题提交  (http://weistock.com/bbs/list.asp?boardid=2)
----  序列模式下求昨日最高、最低、收盘价的最快取值  (http://weistock.com/bbs/dispbbs.asp?boardid=2&id=48564)

--  作者:longbow
--  发布时间:2013/2/11 22:54:32
--  序列模式下求昨日最高、最低、收盘价的最快取值
现在用到昨日最高、最低等值的取值,如下
CYC:=BARSLAST(DATE<>REF(DATE,1))+1;
DAYH:=HHV(H,CYC);
DAYL:=LLV(L,CYC);
DAYO:=VALUEWHEN(DATE>REF(DATE,1),O);
PREH:=VALUEWHEN(DATE>REF(DATE,1),REF(DAYH,1));
PREL:=VALUEWHEN(DATE>REF(DATE,1),REF(DAYL,1));
PREC:=VALUEWHEN(DATE>REF(DATE,1),REF(C,1));

 

结果公式提示这些公式要用逐K线模式,希望转到更有效率的序列模式下,请问,以上取值如何才能适应序列模式。

 

谢谢!


--  作者:王锋
--  发布时间:2013/2/11 23:00:00
--  
上述公式可以在序列模式下使用
--  作者:longbow
--  发布时间:2013/2/11 23:05:40
--  


ENTERHP:=VALUEWHEN(TEMPHOLDINGs>0 AND TENTERBARS>1,HHV(REF(H,1),TENTERBARS-1));
ENTERLP:=VALUEWHEN(TEMPHOLDINGs<0 AND TENTERBARS>1,LLV(REF(L,1),TENTERBARS-1));
IF TEMPHOLDINGs<>0 THEN BEGIN
 IF TEMPHOLDINGs>0 THEN BEGIN
  IF ENTERHP>=MENTPRICE+istart THEN STOPLINE:=ENTERHP-Trail_STOP;
  ELSE STOPLINE:=MENTPRICE-istop;
 END
 ELSE IF TEMPHOLDINGs<0 THEN BEGIN
  IF ENTERLP<=MENTPRICE-istart THEN STOPLINE:=ENTERLP+Trail_STOP;
  ELSE STOPLINE:=MENTPRICE+istop;
 END
END

//开空条间1:1.开仓时间在参数设定的允许范围内;2.目前没有持空;3.之前日内高点曾经突破过SSETUP这条线;4.当前K线向下突破enters这条线;5.日内交易次数小于参数设定值。
ENTERS1:=IF(CurrentTIME>=STARTTIME AND CurrentTIME<145500 AND TEMPHOLDINGs>=0 AND LDAYH>=SSETUP AND L<=ENTERS AND rfilter AND TRADECOUNT<TLMT,MIN(O,ENTERS),0) and bLongStopped+BShortStopped<1; //开空
//开多条间1:1.开仓时间在参数设定的允许范围内;2.目前没有持多;3.之前日内低点曾经突破过BSETUP这条线;4.当前K线向上突破enterb这条线;5.日内交易次数小于参数设定值。
ENTERL1:=IF(CurrentTIME>=STARTTIME AND CurrentTIME<145500 AND TEMPHOLDINGs<=0 AND LDAYL<=BSETUP AND H>=ENTERB AND rfilter AND TRADECOUNT<TLMT,MAX(O,ENTERB),0) and bLongStopped+BShortStopped<1; //开多

//开多条间2:1.开仓时间在参数设定的允许范围内;2.目前没有持仓;3.当前最高价突破BBREAK这条线;4.日内交易次数小于参数设定值。
ENTERL2:=IF(CurrentTIME>=STARTTIME AND CurrentTIME<145500 AND TEMPHOLDINGs=0 AND H>=BBREAK AND TRADECOUNT<TLMT,MAX(O,BBREAK),0) and bLongStopped+BShortStopped<1; //突破开多
//开空条间2:1.开仓时间在参数设定的允许范围内;2.目前没有持仓;3.当前最低价突破SBREAK这条线;4.日内交易次数小于参数设定值。
ENTERS2:=IF(CurrentTIME>=STARTTIME AND CurrentTIME<145500 AND TEMPHOLDINGs=0 AND L<=SBREAK AND TRADECOUNT<TLMT,MIN(O,SBREAK),0) and bLongStopped+BShortStopped<1; //突破开空

//空头止盈:1.持有空单;2.持仓时间大于1根K线周期;3.最高价突破止损线。
EXITS1:=IF(TEMPHOLDINGS<0 AND TENTERBARS>1 AND H>=STOPLINE,MAX(O,STOPLINE),0);  //空头止盈
//多头止盈:1.持有多单;2.持仓时间大于1根K线周期;3.最低价突破止损线。
EXITL1:=IF(TEMPHOLDINGS>0 AND TENTERBARS>1 AND L<=STOPLINE,MIN(O,STOPLINE),0);  //多头止盈

//空头止损:1.开仓时间在参数设定的允许范围内;2.目前持有空单;3.当前最高价减进场价大于等于止损值。
EXITS2:=IF(CurrentTIME>=STARTTIME AND CURRENTTIME<145958 AND TEMPHOLDINGS<0 AND H-MENTPRICE>=i_reverse AND rfilter,Max(o,MENTPRICE+i_reverse),0); //止损,平空
//多头止损:1.开仓时间在参数设定的允许范围内;2.目前持有多单;3.进场价减当前最低价大于等于止损值。
EXITL2:=IF(CURRENTTIME>=STARTTIME AND CURRENTTIME<145958 AND TEMPHOLDINGS>0 AND MENTPRICE-L>=I_REVERSE AND rfilter,min(o,MENTPRICE-i_reverse),0);  //止损,平多

 

 

请问上述里哪个导致了软件提示要用逐K线模式,难道是Tenterbars?

 

请告知!

 


--  作者:longbow
--  发布时间:2013/2/11 23:10:21
--  
对不起,忘了说谢谢!谢谢王峰的恢复!
--  作者:RogarZ
--  发布时间:2013/2/12 13:09:32
--  
这个代码您自己逐行注释看看的。给的代码太多的未定义变量,查起来头疼。