-- 作者:vikco
-- 发布时间:2012/3/7 1:14:08
-- 帮忙看看这代码哪里有问题?为什么总提示有问题。谢谢。
INPUT:P(1,0,200,1),P1(5,0,50,1),N(6,5,30,1); VARIABLE:MAXPROFIT=0,VMIN = 090000; WIN1:=0; WIN2:=0;//止盈、止损、回撤控制 EMA1:=EMA(CLOSE,20); DIFF:=EMA(CLOSE,12) - EMA(CLOSE,26); DEA:=EMA(DIFF,9); MACD:=2*(DIFF-DEA); EMA2:=barslast(cross(macd,0)); EMA3:=barslast(cross(0,macd)); 开多:=EMA2<=5 and HIGH>=EMA1+4; 平多:=EMA3<=5 and LOW<=EMA1-4; 开空:=EMA3<=5 and LOW<=EMA1-4; 平空:=EMA2<=5 and HIGH>=EMA1+4; 交易时间:=TIME>VMIN AND TIME<151500; IF HOLDING=0 THEN BEGIN IF 交易时间 AND 开多 THEN BEGIN BUY(1,LIMITR,CLOSE); MAXPROFIT:=0; END IF 交易时间 AND 开空 THEN BEGIN BUYSHORT(1,LIMITR,CLOSE); MAXPROFIT:=0; END END IF HOLDING>0 THEN BEGIN IF 平多 THEN SELL(1,HOLDING,LIMITR,CLOSE); IF NOT(交易时间) THEN SELL(1,HOLDING,LIMITR,CLOSE); IF ENTERBARS>0 THEN BEGIN WIN1:=(CLOSE-ENTERPRICE)/ENTERPRICE*100; IF WIN1>MAXPROFIT THEN MAXPROFIT:=WIN1; WIN2:=(MAXPROFIT-WIN1)/MAXPROFIT*100; END IF CLOSE-ENTERPRICE<-P1 THEN SELL(1,HOLDING,LIMITR,CLOSE); IF 6<MAXPROFIT <= 15 and MAXPROFIT - WIN1 = 1 THEN SELL(1,HOLDING,LIMITR,CLOSE); IF 15<=MAXPROFIT<=20 and WIN2>40 THEN SELL(1,HOLDING,LIMITR,CLOSE);
IF 20<=MAXPROFIT<=30 and WIN2>35 THEN SELL(1,HOLDING,LIMITR,CLOSE);
IF 30<=MAXPROFIT<=50 and WIN2>30 THEN SELL(1,HOLDING,LIMITR,CLOSE); IF 50<=MAXPROFIT<=100 and WIN2>25 THEN SELL(1,HOLDING,LIMITR,CLOSE); IF MAXPROFIT>=100 and WIN2>20 THEN SELL(1,HOLDING,LIMITR,CLOSE); END IF HOLDING<0 THEN BEGIN IF 平空 THEN SELLSHORT(1,HOLDING,LIMITR,CLOSE); IF NOT(交易时间) THEN SELLSHORT(1,HOLDING,LIMITR,CLOSE); IF ENTERBARS>0 THEN BEGIN WIN1:=(ENTERPRICE-CLOSE)/ENTERPRICE*100; IF WIN1>MAXPROFIT THEN MAXPROFIT:=WIN1; WIN2:=(MAXPROFIT-WIN1)/MAXPROFIT*100; END IF ENTERPRICE-CLOSE <-P1 THEN SELLSHORT(1,HOLDING,LIMITR,CLOSE); IF 6<MAXPROFIT <= 15 and MAXPROFIT - WIN1 = 1 THEN SELLSHORT(1,HOLDING,LIMITR,CLOSE); IF 15<=MAXPROFIT<=20 and WIN2>40 THEN SELLSHORT(1,HOLDING,LIMITR,CLOSE);
IF 20<=MAXPROFIT<=30 and WIN2>35 THEN SELLSHORT(1,HOLDING,LIMITR,CLOSE);
IF 30<=MAXPROFIT<=50 and WIN2>30 THEN SELLSHORT(1,HOLDING,LIMITR,CLOSE);
IF 50<=MAXPROFIT<=100 and WIN2>25 THEN SELLSHORT(1,HOLDING,LIMITR,CLOSE); IF MAXPROFIT>=100 and WIN2>20 THEN SELLSHORT(1,HOLDING,LIMITR,CLOSE); END
|