-- 作者:hehhh0327
-- 发布时间:2011/8/4 11:10:37
-- 高手帮忙调试一下程序
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
|
-- 作者:fly
-- 发布时间:2011/8/4 14:07:02
--
已经在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);
|