全部 TBQuant功能 TBL语言 TB开户 问答专区 其他
跨周期引用空头无效
2022-03-21 13:44

请教,我下面这段代码哪里出错了???引用1图层的日周期,在5分钟0图层中,DayDIF<DayDEA,对多头有用,但对空头不起作用。在DayDIF>DayDEA时,依然开空信号。

Params
 //此处添加参数
 
Vars
 //此处添加变量
 
    Series<Numeric> ATR;
    Series<Numeric> DIF;
    Series<Numeric> DEA;
    Series<Numeric> MACD;
    Series<Numeric> DMa1;
    Series<Numeric> DMa2;
    Series<Numeric> Ma1;
    Series<Numeric> Ma2;
    Series<Numeric> Ma3;
    Series<Numeric> Ma4;  
    //
    Series<Numeric> DayDIF;
    Series<Numeric> DayDEA;
    //
    Series<Bool> TimePingCang1;
    Series<Bool> buy1;
    Series<Bool> Sell1;
    Series<Bool> Sell2;
    Series<Bool> SellShort1;
 Series<Bool> SellShort2;
 Series<Bool> SellShort3;  
 Series<Bool> BuyToCover1;
 Series<Bool> BuyToCover2;
 Series<Bool> BuyToCover3; 
 
    //Series<Bool> 
Defs
 //此处添加公式函数
 
Events
 //此处实现事件函数
 
 //初始化事件函数,策略运行期间,首先运行且只有一次
 OnInit()
 {
  
 }
 //Bar更新事件函数,参数indexs表示变化的数据源图层ID数组
 OnBar(ArrayRef<Integer> indexs)
 {
  //0图层,计算及调用图层。
  Range[0:DataCount-1]
  {   
   //计算副图MACD和ATR数据。
   ATR=AvgTrueRange(26);                                                       //真实波幅ATR
      DIF = XAverage(Close,12) - XAverage(Close,26) ; //快线 DIFF
      DEA = XAverage(DIF,9);            //慢线   DEA 
      MA1 = AverageFC(Close,5);
      MA2 = AverageFC(Close,10);
      MA3 = AverageFC(Close,20);
      DMA1 = AverageFC(Close,10);
      DMA2 = AverageFC(Close,30);
  //引用定义
     DayDIF = data1.DIF;
           DayDEA = data1.DEA;
           PlotNumeric("DayDIF",DayDIF); 
           PlotNumeric("DayDEA",DayDEA);   
        }
        //引用主体
           Range[1:DataCount-1]
         {
        DayDIF = DIF;
              DayDEA = DEA;
       }
          
 //交易部分
         TimePingCang1 = (Time == 0.145000||Time == 0.225000);
         buy1 = DIF[1]>DEA[1]&&DayDIF[1]>DayDEA[1];

         If((Time>=0.090500 And Time<=0.144500) || (Time>=0.210500 And Time<=0.224500))
      { 
              If(MarketPosition == 0 && (Buy1) && High[1] <> Low[1])
                {
                    Buy(0,Open);
                 }                                
             }
            Sell1 = TimePingCang1[1]; 
            Sell2 = CrossUnder(DayDIF[1],DayDEA[1]);
      If(Ma

liguangxi

全文如下:

Params
    //此处添加参数
 
Vars
    //此处添加变量
    
    Series<Numeric> ATR;
    Series<Numeric> DIF;
    Series<Numeric> DEA;
    Series<Numeric> MACD;
    Series<Numeric> DMa1;
    Series<Numeric> DMa2;
    Series<Numeric> Ma1;
    Series<Numeric> Ma2;
    Series<Numeric> Ma3;
    Series<Numeric> Ma4;  
    //
    Series<Numeric> DayDIF;
    Series<Numeric> DayDEA;
    //
    Series<Bool> TimePingCang1;
    Series<Bool> buy1;
    Series<Bool> Sell1;
    Series<Bool> Sell2;
    Series<Bool> SellShort1;
    Series<Bool> SellShort2;
    Series<Bool> SellShort3;     
    Series<Bool> BuyToCover1;
    Series<Bool> BuyToCover2;
    Series<Bool> BuyToCover3; 
    
    //Series<Bool> 
Defs
    //此处添加公式函数
    
Events
    //此处实现事件函数
    
    //初始化事件函数,策略运行期间,首先运行且只有一次
    OnInit()
    {
        
    }
    //Bar更新事件函数,参数indexs表示变化的数据源图层ID数组
    OnBar(ArrayRef<Integer> indexs)
    {
        //0图层,计算及调用图层。
        Range[0:DataCount-1]
        {            
            //计算副图MACD和ATR数据。
            ATR=AvgTrueRange(26);                                                       //真实波幅ATR
            DIF = XAverage(Close,12) - XAverage(Close,26) ;    //快线    DIFF
            DEA = XAverage(DIF,9);            //慢线   DEA 
            MA1 = AverageFC(Close,5);
            MA2 = AverageFC(Close,10);
            MA3 = AverageFC(Close,20);
            DMA1 = AverageFC(Close,10);
            DMA2 = AverageFC(Close,30);
        //引用定义
           
           DayDIF = data1.DIF;
           DayDEA = data1.DEA;
  
        }
        //引用主体

          Range[1:DataCount-1]
            {
              DayDIF = DIF;
              DayDEA = DEA;
    
             }
            Commentary("DayDIF=" + Text(DayDIF));
            Commentary("DayDEA=" + Text(DayDEA));
           /*PlotNumeric("DayDIF",DayDIF);    
           PlotNumeric("DayDEA",DayDEA);  
            PlotNumeric("DIF",DIF);    
           PlotNumeric("DEA",DEA);      */
    //交易部分
            TimePingCang1 = (Time == 0.145000||Time == 0.225000);
            buy1 = DIF[1]>DEA[1]&& DayDIF[1]>DayDEA[1];

            If((Time>=0.090500 And Time<=0.144500) || (Time>=0.210500 And Time<=0.224500))
            { 
              If(MarketPosition == 0 && (Buy1) && High[1] <> Low[1])
                {
                    Buy(0,Open);
                 }                                
             }
            Sell1 = TimePingCang1[1]; 
            Sell2 = CrossUnder(DayDIF[1],DayDEA[1]);
            If(MarketPosition != 0 And ( Sell1 || Sell1) || High[1] == Low[1])
                {
                    Sell(0,Open);                  
                 }                  
        //空头策略 
            SellShort1 = DIF[1]<DEA[1] && DayDIF[1]<DayDEA[1];
            If((Time>=0.090500 And Time<=0.144500) || (Time>=0.210500 And Time<=0.224500))
             {   
                 If(MarketPosition == 0 && (SellShort1 || High[1] <> Low[1]))
                  {
                     SellShort(0,Open);
                   }
               }
              BuyToCover1 = TimePingCang1[1]; 
              If(MarketPosition != 0  And (BuyToCover1 || High[1] == Low[1]))
                {
                    BuyToCover(0,Open);                    
                 }
             
    }

2022-03-21 22:42
wangkaiming

代码没贴全

建议单一变量一个个逐一输出观察

2022-03-21 20:52
您未登录,请先 登录注册 后发表评论
顶部