全部 智大领峰 TBQuant功能 TBL语言 TB开户 问答专区 高手圈 其他
我有一个程序,TBquant老报信号闪烁,该怎么办
2020-12-01 13:41

各位朋友,我有一个程序,TBquant老报信号闪烁,该怎么办,用了跨周期,data0,data1,data2

分别为5分,30分,120分,TBquant老报信号闪烁,该怎么办,帮我看看,改改,谢谢

 

//------------------------------------------------------------------------
// 简称: MACDjyxt
// data0  data1  data2  分别为5分,30分,2小时周期
// 本系统用于5分图表,,用于日内交易
//------------------------------------------------------------------------
Params
    Numeric FastMA(3,3,100,10);     //macd短周期值
    Numeric SlowMA(5,5,100,10);    //macd长周期值
    Numeric AvgMA(3,3,100,10);    //MACD慢线周期值
    Numeric DST(3,3,40,3);        
    Numeric DZQDST(3,3,8,3);      
    Numeric ProtectStopLossATRMultiplier(4,2,7,3);    // 保护性止损的ATR乘数
    Numeric ATRLen(10);    //atr周期值 
        Numeric lots(1); 
    Numeric pckssj(14.50);//平仓开始时间 
    


Vars

    Series<Numeric> MACDLine(0); 
    Series<Numeric> SignalLine(0); 
    Series<Numeric> MACDDiff(0); 
      Series<Numeric> DZQClose(0);
      Series<Numeric> CDZQClose(0);                     
    Series<Numeric> DZQBJValue(0);
    Series<Numeric> CDZQBJValue(0);           
    Series<Numeric> AATR(0); 
    Series<Numeric> ProtectStopLossATR_Long;        // 多头基于ATR的保护性止损
    Series<Numeric> ProtectStopLossATR_Short;        // 空头基于ATR的保护性止损
                Global Numeric zdkcj;            // 做多开仓价
                Global Numeric zkkcj;            // 做空开仓价
     Global Numeric dtzgd; //最高点
     Global Numeric  ktzdd; //最低点
     Global Numeric kdc; // 1为开了多仓,0为没开多仓
     Global Numeric  kkc; //1为开了空仓,0为没开空仓
              Numeric  Con0;
    Bool Con1;
    Bool Con2;
    Bool Con3;
    Bool pdctj; // 1为平多仓条件    
    Bool pkctj; // 1为平空仓条件    

Events
   OnBar(ArrayRef<Integer> indexs)
    { 


              If(CurrentBar() == 0)
           {
                         kdc = 0;
                       kkc = 0;
                   zdkcj = 0;
                    zkkcj= 0;
                  dtzgd= 0;
                 ktzdd= 0; 
    }

                               
                         
    MACDLine = XAverage( data0.Close, FastMA ) - XAverage( data0.Close, SlowMA ) ;    //计算macd快线

    SignalLine = XAverage( MACDLine, AvgMA );                           //计算macd慢线

    MACDDiff = MACDLine - SignalLine;          //计算macd柱

          AATR = AvgTrueRange(ATRLen);    


             DZQClose =data1.Close;  //调用30分Close,

           CDZQClose =data2.Close;  //调用2小时Close,
            
                                         DZQBJValue=  DZQClose - DZQClose[DZQDST];  

                                        CDZQBJValue=  CDZQClose - CDZQClose[DZQDST];        


                Con0 = IIF(Time*100>=pckssj and Time<0.1500 ,1 ,0);

    Con1 = CrossOver(MACDLine[1] ,SignalLine[1]);                                //快线上穿慢线

        Con2 = CrossUnder(MACDLine[1],SignalLine[1]);              //快线下穿慢线
        
        Con3 = FastMA < SlowMA ;    //短周期参数小于长周期参数 
   
        pdctj = Con2     OR DZQBJValue[1] <  0 OR CDZQBJValue[1] <  0;  

        pkctj = Con1     OR DZQBJValue[1] >  0 OR CDZQBJValue[1] >  0;  
 

     //记录多头高点

 
     If(kdc == 1 && BarsSinceentry == 0)    //当前有持仓,并且当前BAR线是开仓时的BAR线;
     {
                     dtzgd = High;  
          zdkcj  =Open;                
     }
     else if(kdc == 1 && BarsSinceentry >= 1)    //当前有持仓,并且当前的BAR线要大于进场时的BAR线;
     {
                              dtzgd = MAX(dtzgd, High); //保存最高价;
          
            
       }

    //记录空头低点

 
     If(kkc  == 1  && BarsSinceentry == 0)    //当前有持仓,并且当前BAR线是开仓时的BAR线;
     {
                    ktzdd =Low; 
          zkkcj  =Open;                
     }
     else if(kkc  == 1  && BarsSinceentry >= 1)    //当前有持仓,并且当前的BAR线要大于进场时的BAR线;
     {
          
          ktzdd = MIN(ktzdd, Low);    //保存最低价;
            
       }


    If(kdc  == 0   )    //当前没有多仓,清零
     {
                   dtzgd =0;
             zdkcj  =0;            
            }


         If( kkc  == 0 )    //当前没有空仓,清零
     {
                   ktzdd = 0;
        zkkcj  =0;        
            }

//------------------------------------------------------------------------
//                              多头系统
//------------------------------------------------------------------------    
    // 系统入场
    If(kdc == 0 And kkc  == 0 And Vol > 0  And  Con0<> 1   And DZQBJValue[1] >  0 And CDZQBJValue[1] >  0  )  
    {
        If( Con1  And Con3 ) 
        {
            Buy(lots,open,Enum_Signal_NotSend);
                                                 kdc =1;
        }
        
     }

    // 系统出场    
    If(kdc ==1  And Vol > 0)
    {
        // 多头基于ATR的保护性止损
        ProtectStopLossATR_Long = dtzgd - ProtectStopLossATRMultiplier * AATR;
        // 多头基于ATR的保护性止损
        If((Low[1] <= ProtectStopLossATR_Long[1] and  ProtectStopLossATR_Short[1] > zdkcj ) OR  pdctj) 
        {
            Sell(lots,open,Enum_Signal_NotSend);
                                                  kdc =0  ;  
                                                 
        }
    }

//------------------------------------------------------------------------
//                              空头系统
//------------------------------------------------------------------------
    // 系统入场
    If(kdc == 0 And kkc  == 0 And Vol > 0  And  Con0<> 1    And DZQBJValue[1] <  0 And CDZQBJValue[1] <  0 ) 
    {
        If( Con2  And Con3 ) 
        {
            SellShort(lots,open,Enum_Signal_NotSend);
                                                   kkc  =1;
        }
        
     }

    // 系统出场
    If( kkc  ==1  And Vol > 0)
    {

                 // 空头基于ATR的保护性止损

        ProtectStopLossATR_Short = ktzdd + ProtectStopLossATRMultiplier * AATR;
        // 空头基于ATR的保护性止损

        If((High[1] >= ProtectStopLossATR_Short[1] and  ProtectStopLossATR_Short[1] < zkkcj ) OR  pkctj)
        {
            BuyToCover(lots,open,Enum_Signal_NotSend);
                                                      kkc  =0;

        }
    }

//收盘平仓

          if(Time*100>=pckssj and Time<0.1500)

 {
         if(kkc  ==1)
         {
                 BuyToCover(1,Open,Enum_Signal_NotSend);

         }
         if(kdc ==1)
         {
                 Sell(1,Open,Enum_Signal_NotSend);
                
         }

      }

  }

您未登录,请先 登录注册 后发表评论
顶部