INPUT:LOTS(1,1,50,1);
long1:=REF(CLOSE>OPEN,1);
long2:=REF(CLOSE<OPEN,1);
long3:=CLOSE>=TENTERPRICE+5*MINDIFF;
//多头开仓
IF long1 THEN
BEGIN
MYPRICE:=OPEN;
TBUY(HOLDING=0,LOTS,LIMITR,MYPRICE)
END
//空头开仓
IF long2 THEN
BEGIN
MYPRICE:=OPEN;
TBUYSHORT(HOLDING=0,LOTS,LIMITR,MYPRICE)
END
//平仓以及信号延迟确认
SELL1:=false;
IF ISLASTBAR THEN
BEGIN
IF long3 THEN
BEGIN
//将当前信号周期置全局变量数据库
//数据名字前加信号周期,标记周期位置
CRTEMP:='TEMP1'&NUMTOSTR( BARPOS, 0);
//读取原有变量的时间,判断是否到延时时间
SELLTIME1:=EXTGBDATA(CRTEMP);
SELLTIME2:=TIMETOT0(CURRENTTIME);
DEBUGOUT('D1 %.0f',SELLTIME1);
IF SELLTIME1 > 1 THEN //第一次信号的原数据库读取会得到0值
BEGIN
DEBUGOUT('D2 %.0f',SELLTIME2 - SELLTIME1);
IF SELLTIME2 - SELLTIME1 > 1 THEN
BEGIN
//大于15秒的延迟,表示信号已经得到确认
SELL1:=TRUE;
END
END
ELSE
BEGIN
//第一次信号位置记录
EXTGBDATASET(CRTEMP,TIMETOT0(CURRENTTIME));
END
END
ELSE
BEGIN
//否则表示信号中间消失了
CRTEMP:='TEMP1'&NUMTOSTR(BARPOS,0);
EXTGBDATASET(CRTEMP,0);
END
END
TSELL(SELL1&&HOLDING>0,0,MKT);
TSELLSHORT(SELL1&&HOLDING<0,0,MKT);
//15秒到时即平仓
IF TENTERBARS()=1 THEN
TSELL(HOLDING>0,0,MKT);
TSELLSHORT(HOLDING<0,0,MKT);
//收盘平仓
IF TIME=151000 THEN
BEGIN
SELL(HOLDING>0,0,LIMITR,OPEN);
SELLSHORT(HOLDING<0,0,LIMITR,OPEN);
END
后台,不是BUY变成TBUY就可以的.
也不是一两句话能说清楚的.
请您仔细参考
http://www.weistock.com/bbs/dispbbs.asp?boardid=4&Id=332
该帖子的及帖子链接的相关内容
推荐您,循序渐进,一步一步来
已经在IF08合约1分钟上测试过(K线走完),运行良好
//K线走完
long:=REF(CLOSE>OPEN,1);
short:=REF(CLOSE<OPEN,1);
//多头开仓
IF long and tHOLDING=0 THEN
BEGIN
TBUY(1,1,LMT,c+2*mindiff);
END
//空头开仓
IF short and tHOLDING=0 THEN
BEGIN
TBUYSHORT(1,1,LMT,c-2*mindiff);
END
SELL1:=FALSE;
SELL2:=FALSE;
IF ISLASTBAR and tholding>0 and tenterbars>0 THEN
BEGIN
IF CLOSE>=TENTERPRICE+5*MINDIFF THEN
BEGIN
//将当前信号周期置全局变量数据库
//数据名字前加信号周期,标记周期位置
CRTEMP1:='TEMP1'&NUMTOSTR(BARPOS, 0);
//读取原有变量的时间,判断是否到延时时间
BUYTIME1:=EXTGBDATA('CRTEMP1');
BUYTIME2:=TIMETOT0(CURRENTTIME);
IF BUYTIME1 > 1 THEN //第一次信号的原数据库读取会得到0值
BEGIN
IF BUYTIME2 - BUYTIME1 > 15 THEN
BEGIN
//大于15秒的延迟,表示信号已经得到确认
SELL1:=TRUE;
END
END
ELSE
BEGIN
//第一次信号位置记录
EXTGBDATASET('CRTEMP1',TIMETOT0(CURRENTTIME));
END
END
ELSE
BEGIN
//否则表示信号中间消失了
CRTEMP1:='TEMP1'&NUMTOSTR(BARPOS, 0);
EXTGBDATASET('CRTEMP1',0);
END
END
IF ISLASTBAR and tholding<0 and tenterbars>0 THEN
BEGIN
IF CLOSE<TENTERPRICE-5*MINDIFF THEN
BEGIN
//将当前信号周期置全局变量数据库
//数据名字前加信号周期,标记周期位置
CRTEMP2:='TEMP1'&NUMTOSTR(BARPOS, 0);
//读取原有变量的时间,判断是否到延时时间
BUYTIME1:=EXTGBDATA('CRTEMP2');
BUYTIME2:=TIMETOT0(CURRENTTIME);
IF BUYTIME1 > 1 THEN //第一次信号的原数据库读取会得到0值
BEGIN
IF BUYTIME2 - BUYTIME1 > 15 THEN
BEGIN
//大于15秒的延迟,表示信号已经得到确认
SELL2:=TRUE;
END
END
ELSE
BEGIN
//第一次信号位置记录
EXTGBDATASET('CRTEMP2',TIMETOT0(CURRENTTIME));
END
END
ELSE
BEGIN
//否则表示信号中间消失了
CRTEMP2:='TEMP1'&NUMTOSTR(BARPOS, 0);
EXTGBDATASET('CRTEMP2',0);
END
END
TSELL(SELL1,1,MKT);
TSELLSHORT(SELL2,1,MKT);