以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  金字塔软件问题提交  (http://weistock.com/bbs/list.asp?boardid=2)
----  公式测试的结果很好,可是跑起来就不是那个样子了  (http://weistock.com/bbs/dispbbs.asp?boardid=2&id=49966)

--  作者:证通的曹琴
--  发布时间:2013/3/20 14:29:41
--  公式测试的结果很好,可是跑起来就不是那个样子了
公式测试结果都很好,可是跑起来就不是那个样子了,模拟账号和仿真账号都会出现,已报单,但是半天才有反应的情况,已经走了好几根K线了,早就错过时机了。。。。图片点击可在新窗口打开查看
我选的是走完一根K线跑的;   
 后来我又选了固定时间一秒来跑,又会出现信号闪烁的问题。。。。那根K线一开始的时候达到条件开多的,(它也快速的开了多),可是跳着跳着又变了,原来那根K线不应该开多,但是手上却由于刚才的信号有持仓了。。。。。图片点击可在新窗口打开查看
 我该如何解决这样的问题呢?
附上代码:
   input:nMins(30,0,90,1); // N分钟的突破
        input:OffDelatset(3,0,10,1);// 突破式的价格偏移
        input:LOTS(1,0,9,1);
        VARIABLE: ExitOnCloseMins:=150000;    
        MA5:REF(MA(CLOSE,5),1);
        MA10:REF(MA(CLOSE,10),1);
        M5M10:= CROSS(MA5,MA10);
        M10M5:=CROSS(MA10,MA5);
          if DATATYPE=1 THEN nMinsT:=nMins;
          if DATATYPE=2 THEN nMinsT:=nMins/5;
          
         i_offDelat:= OffDelatset*mindiff;
        
        If date<>REF(date,1) THEN BEGIN
                HighestOf30Min:= High;
                lowestOf30Min:= Low;
                DAYBARS:=1;
        END
        IF date=REF(date,1) THEN DAYBARS:=DAYBARS+1;
        
         If    (DAYBARS<=nMinsT AND DAYBARS>1 ) THEN BEGIN
                HighestOf30Min:=max(high,HighestOf30Min);
                lowestOf30Min:=min(Low,lowestOf30Min);
        END
                HighestOf30:HighestOf30Min;
                lowestOf30:lowestOf30Min;  
         
        if    (Time < ExitOnCloseMins and DAYBARS>nMinsT+1)  THEN BEGIN
                 If    (High >= HighestOf30Min+i_offDelat AND MA5>MA10 and close>MA5 ) THEN BEGIN
                     Sellshort(HOLDING<0,lots,LIMITR,max(HighestOf30Min+i_offDelat,Open));
                    Buy(HOLDING=0,lots,LIMITR,max(HighestOf30Min+i_offDelat,Open)); 
                 END
                  If    (Low <=lowestOf30Min-i_offDelat  AND MA10>MA5 AND close<MA10) THEN BEGIN
                     Sell(HOLDING>0,lots,limitr,Min(lowestOf30Min-i_offDelat,Open));       
                     BuyShort(HOLDING=0,lots,limitr,Min(lowestOf30Min-i_offDelat,Open));  
                   
                  END
             
         END
         
       IF HOLDING>0 AND close<=MA5 THEN BEGIN
        //SELL(1,lots,LIMITR,max(MA5,OPEN));
        
       sell(1,lots,MARKETR);
    
       END
       
       IF HOLDING<0 AND CLOSE>=MA10 THEN BEGIN
       // SELLSHORT(1,lots,LIMITR,min(MA10,OPEN));
        sellshort(1,lots,MARKETR);
       
       END
         
        If    (time>=ExitOnCloseMins and HOLDING<>0) THEN BEGIN
            Sell(holding>0,LOTS,limitr,Open);
            SellSHORT(holding<0,LOTS,limitr,Open);
        END
        

持仓:holding,noaxis ,linethick0 ;
盈亏:asset-1000000,noaxis,coloryellow,linethick2;
我是根据论坛上财富游戏002改的,在这里谢谢那位大哥!

--  作者:jinzhe
--  发布时间:2013/3/20 14:34:35
--  

条件改成ref(条件,1)

这样就是确保条件走完不闪烁


--  作者:证通的曹琴
--  发布时间:2013/3/20 14:39:58
--  
哪一个条件啊,MA5 和MA10 我都有改成REF(MA(CLOSE,5),1) 和REF(MA(CLOSE,10),1)的
--  作者:jinzhe
--  发布时间:2013/3/20 14:44:58
--  

close<=MA5 改称

ref(close,1)<=ma5

或者l<=ma5

 

诸如此类的


--  作者:证通的曹琴
--  发布时间:2013/3/20 14:59:08
--  
改了之后,我还是选固定时间间隔一秒吗
--  作者:jinzhe
--  发布时间:2013/3/20 15:01:42
--  
是,还是固定一秒
--  作者:wn10000neng
--  发布时间:2013/3/20 21:14:06
--  
这个不错