以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  PEL图表程序化,主图计算没有信号  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=173575)

--  作者:jzt666
--  发布时间:2019/12/17 9:35:23
--  PEL图表程序化,主图计算没有信号
代码如下,为什么主图计算什么都没有
INPUT:ZS(30,1,100,1);
INPUT:ZY(80,1,100,1);
INPUT:HT(40,1,100,1);
VARIABLE:N=0;
SS:=1;

当前时间:=CurrentTime();
开仓时间:=(当前时间>=091500 and 当前时间<120000);
平仓时间:=(当前时间>=155000 and 当前时间<160000);

CYC:=BARSLAST(DATE<>REF(DATE,1))+1;
REFH:=REF(HHV(HIGH,CYC),CYC);//昨日高点
REFL:=REF(LLV(LOW,CYC),CYC); //昨日低点

KD:=CROSS(C, REFH);//开多条件
KK:=CROSS(REFL, C);//开空条件

DTZY:=CLOSE-AVGENTERPRICE>=ZY*MINDIFF;//多头止盈
KTZY:=AVGENTERPRICE-CLOSE>=ZY*MINDIFF;//空头止盈

DTZS:=AVGENTERPRICE-CLOSE>=ZS*MINDIFF;//多头止损
KTZS:=CLOSE-AVGENTERPRICE>=ZS*MINDIFF;//空头止损

BKHIGH:=HHV(HIGH,ENTERBARS+1);//持仓最高
SKLOW:=LLV(LOW,ENTERBARS+1);  //持仓最低
DTHT:=CLOSE<BKHIGH-HT*MINDIFF;//多头回头
KTHT:=CLOSE>SKLOW+HT*MINDIFF; //空头回头

//MSGOUT(HOLDING<>0, \'持仓均价:\'+NUMTOSTR(AVGENTERPRICE, 0));
//MSGOUT(HOLDING<>0, \'开多最高:\'+NUMTOSTR(BKHIGH, 0));
//MSGOUT(HOLDING<>0, \'开空最低:\'+NUMTOSTR(SKLOW, 0));

IF TODAYBAR=1 THEN N:=0;

//开多
IF KD AND N=0 AND 开仓时间 THEN BEGIN
BUY(HOLDING=0, SS, MARKET);
N:=1;
END

//开空
IF KK AND N=0 AND 开仓时间 THEN BEGIN
BUYSHORT(HOLDING=0, SS, MARKET);
N:=1;
END

//平多头
IF DTZY AND HOLDING>0 AND ENTERBARS>0 THEN 多止盈:SELL(1,SS,MARKET);
IF DTZS AND HOLDING>0 AND ENTERBARS>0 THEN 多止损:SELL(1,SS,MARKET);
IF DTHT AND HOLDING>0 AND ENTERBARS>0 THEN 多回头:SELL(1,SS,MARKET);

//平空头
IF KTZY AND HOLDING>0 AND ENTERBARS>0 THEN 空止盈:SELLSHORT(1,SS,MARKET);
IF KTZS AND HOLDING>0 AND ENTERBARS>0 THEN 空止损:SELLSHORT(1,SS,MARKET);
IF KTHT AND HOLDING>0 AND ENTERBARS>0 THEN 空回头:SELLSHORT(1,SS,MARKET);

//时间平仓
IF CurrentTime>=155000 AND CurrentTime<160000 THEN 时间平多:SELL(1,HOLDING,MARKETR);
IF CurrentTime>=155000 AND CurrentTime<160000 THEN 时间平空:SELLSHORT(1,HOLDING,MARKETR);

--  作者:FireScript
--  发布时间:2019/12/17 9:48:51
--  
 当前时间:=CurrentTime();
开仓时间:(当前时间>=091500 and 当前时间<120000);
平仓时间:(当前时间>=155000 and 当前时间<160000);

历史K上这个时间判断无效。CurrentTime 只有最新值。只要当前时间符合,历史K哪怕是在这个时间之外 也会显示满足“开仓时间”。


请用time函数做这个时间判断。注意用time必须是金字塔时间, 金字塔时间和北京时间差4小时。 金字塔时间18:00 对应北京时间14:00.