以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  帮忙看看这代码哪里有问题?为什么总提示有问题。谢谢。  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=10438)

--  作者: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 

 


--  作者:阿火
--  发布时间:2012/3/7 8:04:22
--  

把EMA2 换个名字就可以了

 

EMA2 是金字塔关键字 。。