-- 作者:伍星亮
-- 发布时间:2011/8/29 16:08:07
-- [求助]后台,每次突破都开仓。HOLDING一直等于0?
INPUT:FIXLOT(1,1,10,1), DON@(61,1,100,10), AMA@(6,1,50,5), ATR@(20,10,55,10), ATRSL(10,5,40,5), RISK(40000,1,1000000,1), ATRPS(20,0,20,5);
//Donchain UP :HHV(HIGH,DON@); DOWN :LLV(LOW,DON@); //AMA DIR:=ABS(CLOSE-REF(CLOSE,AMA@)); VIR:=SUM(ABS(CLOSE-REF(CLOSE,1)),AMA@); ER:=DIR/VIR; CS:=ER*(2/3-2/31)+2/31; CQ:=CS*CS; AMA:=DMA(CLOSE,CQ);
//AMA_TTS
//ATR ATR :=MA(TR,ATR@);
//止盈值 TP:REF(AMA,1)-REF(ATR,1)*ATRPS*0.1; TM:REF(AMA,1)+REF(ATR,1)*ATRPS*0.1;
//LOTS //LOT:=ROUND(RISK/(REF(ATR,1)*0.1*ATRSL*300)); //MAXLOT:=FLOOR(cash(0)*0.8/(H*0.12*300)); //MINLOT:=1; //LOTS:=IFELSE(BETWEEN(LOT,MAXLOT,MINLOT),LOT,IFELSE(LOT>MAXLOT,MAXLOT,MINLOT)); LOTS:=FIXLOT;
//止损值 STOP_LOSS:=ATRSL*0.1*REF(ATR,TENTERBARS+1);
//最大账面盈利 //LUP:=REF(UP,TENTERBARS+1); //MONEYL:=UP-LUP;
//SDOWN:=REF(DOWN,TENTERBARS+1); //MONEYS:=SDOWN-DOWN;
//多头止损,平仓,开仓 LSL:=TENTERPRICE-STOP_LOSS; LTP:=L<=TP;
LO :=H>=REF(UP,1); LONG:=REF(UP,1);
//空头止损,平仓,开仓 SSL:=TENTERPRICE+STOP_LOSS; STM:=H>=TM;
SO :=L<=REF(DOWN,1); SHORT:=REF(DOWN,1);
// 仓位 MYHOLDING:=HOLDING;
//调试输出 KD:=MYHOLDING=0 AND LO>0; KK:=MYHOLDING=0 AND SO>0; ZSD:=MYHOLDING>0 AND C<=LSL; ZSK:=MYHOLDING<0 AND C>=SSL; ZYD:=MYHOLDING>0 AND LTP>0; ZYK:=MYHOLDING<0 AND STM>0; DEBUGFILE(\'E:\\编程学习\\金字塔\\模型\\NTTS后台调试\\TEST.TXT\',\'开多=%.0f\',KD); DEBUGFILE(\'E:\\编程学习\\金字塔\\模型\\NTTS后台调试\\TEST.TXT\',\'开空=%.0f\',KK); DEBUGFILE(\'E:\\编程学习\\金字塔\\模型\\NTTS后台调试\\TEST.TXT\',\'止损多=%.0f\',ZSD); DEBUGFILE(\'E:\\编程学习\\金字塔\\模型\\NTTS后台调试\\TEST.TXT\',\'止损空=%.0f\',ZSK); DEBUGFILE(\'E:\\编程学习\\金字塔\\模型\\NTTS后台调试\\TEST.TXT\',\'止盈多=%.0f\',ZYD); DEBUGFILE(\'E:\\编程学习\\金字塔\\模型\\NTTS后台调试\\TEST.TXT\',\'止盈空=%.0f\',ZYK);
//IF VALID(REF(ATR,1))=1 && VALID(REF(AMA,1))=1 THEN BEGIN
//多头平仓 IF MYHOLDING>0 THEN BEGIN IF LTP>0 THEN BEGIN SELL(1,MYHOLDING,LIMITR,CLOSE); TSELL(1,LOTS,MKT,0,0,\'800166\'); //ELSE SELL(LDR>0,HOLDING,STOPR,LDRDEAL);(保证这是止盈) END IF L<=LSL THEN BEGIN SELL(1,MYHOLDING,LIMITR,CLOSE); TSELL(1,LOTS,MKT,0,0,\'800166\'); END END
//空头平仓 IF MYHOLDING<0 THEN BEGIN IF STM>0 THEN BEGIN SELLSHORT(1,MYHOLDING,LIMITR,CLOSE);//发信号给HOLDING TSELLSHORT(1,MYHOLDING,MKT,0,0,\'800166\'); //ELSE SELLSHORT(SDR>0,HOLDING,STOPR,SDRDEAL); END IF H>=SSL THEN BEGIN SELLSHORT(1,MYHOLDING,LIMITR,CLOSE);//发信号给HOLDING TSELLSHORT(1,MYHOLDING,MKT,0,0,\'800166\'); END END //开仓 IF MYHOLDING=0 THEN BEGIN IF LO>0 THEN BEGIN BUY(1,LOTS,LIMITR,CLOSE);//发信号给HOLDING TBUY(1,LOTS,MKT,0,0,\'800166\'); END IF SO>0 THEN BEGIN BUYSHORT(1,LOTS,LIMITR,CLOSE);//发信号给HOLDING TBUYSHORT(1,LOTS,MKT,0,0,\'800166\'); END END //END
由于多账户以及使用多系统关系。用THOLDING暂无法写条件,故暂用系统移植的方法写。
但问题是,今天测试,每次向下突破都开仓,这样说,是不是HOLDING在后台逐周期时,过了一支K线就HOLDING就重新变成零呢?
|