全部 TBQuant功能 TBL语言 TB开户 问答专区 其他
图标显示开了一手空单,也成交了,但后台没有统计的问题
robinyu 分享到
2021-10-29 08:37

z20211028 14:55, 图标显示开空1手,然后成交了,但信号闪了几下后消失了;晚上21:00看后又显示了出来, 但后台没有统计该手,我关闭TBQ程序后,再重新打开策略页面才正常显示有1手空单。请问这个是什么问题??策略代码在下面,应该不会有信号闪烁的呀。

//------------------------------------------------------------------------
// 简称:Aberration系统空头
// 名称: 
// 类别: 公式应用
// 类: 用户应用
// 输出:
//------------------------------------------------------------------------
Params
    Numeric NATRstop(5);                // N倍ATR硬止损和追踪止损    
    Numeric money(20000);               // 单品种资金配置
Vars
    Numeric Scale_in_switch(0);         // 是否允许加仓,1允许,0关闭
    Numeric Length(80);     
    Numeric StdDev(1);
    Series<Numeric> STD_20 ;                 // 标准差
    Numeric LengthStd;
    Series<Numeric> UpperBand;
    Series<Numeric> LowerBand;
    Series<Numeric> AveMa;
    Numeric StdValue;
    Numeric MinPoint;

    Series<Numeric> ATR;                  // 本周期ATR
    Series<Numeric> ts;                     // 加仓后,止损调节系数 
    Numeric MyExitPrice;                // 硬止损出场均价,平仓价格
    Series<Numeric> yclose(0);            // 获得昨日收盘价
    Series<Numeric> topen(0);                // 获得今日开盘价
    Series<Numeric> LowestAfterEntry;     // 开仓后出现的最低价
    Bool CrossUnderFlag ;
    Series<Numeric> lowest_low_2_20;    // 20周期高点2
    Series<Bool> Scale_in_bo;             // 是否有过突破加仓
    Series<Bool> stoploss_hard_short ;
    Series<Bool> BIAS_R_short ;
    Series<Bool> Normal_Trailing_short ;
    Series<Bool> TS_Reentry_short ;
    Numeric Lots_temp;                    // 开仓手数
    Numeric Lots;
    Numeric Margin;                     // 保证金比例

Events
    OnInit()
        {
            
            Range[0:DataCount-1]
            {    
                AddDataFlag(Enum_Data_RolloverBackWard());    //设置后复权

            AddDataFlag(Enum_Data_RolloverRealPrice());    //设置映射真实价格

            AddDataFlag(Enum_Data_AutoSwapPosition());    //设置自动换仓

            AddDataFlag(Enum_Data_IgnoreSwapSignalCalc());    //设置忽略换仓信号计算
            }
        }
    onBar(ArrayRef<Integer> indexs)
    {    
        //If(!CallAuctionFilter()) Return;                      // 过滤集合竞价
    
        If(date!=date[1] and high==low) Return;               // 本bar价格异常
   
        If(close==Q_lowerlimit||close==Q_upperlimit) Return;  // 当前公式应用商品的当日跌停板和涨停板价
         
        Margin = MarginRatio();    
           Lots = Floor(money/(Margin*open*ContractUnit()*BigPointValue()),1); 
    
        // 早晨9点,第一根bar,记录一些重要数据
         if(Time == 0.090000)         
         {
             yclose = close[1];       // 昨日收盘价格 = 昨日最后一个bar收盘价
              topen = open;             // 今日开盘价
           }
            
    
        // ===================== 计算指标值 ==========================
   
        MinPoint = MinMove*PriceScale; 
        ATR = Average(TrueRange,14);
         AveMa = Average(Close[1],Length);
         StdValue = StandardDev(Close[1],Length);
         UpperBand = Avema + StdDev * StdValue;
         LowerBand = Avema - StdDev * StdValue;
    
        PlotNumeric("UpperBand",UpperBand);
         PlotNumeric("LowerBand",LowerBand);
         PlotNumeric("AveMa",AveMa);
   
        lowest_low_2_20 = lowest(low[2],20);
     
        // TS止损后,不允许入场条件(空)
         TS_Reentry_short = 
    
        Normal_Trailing_short == True 
         && close[1] > Lowest_low_2_20  
         && BarsSinceExit < 20 ;
    
        // ===================== 以下是开仓 =========================
         // 开空仓
    
        CrossUnderFlag = Crossunder(Close[1],LowerBand ) ;
         If(MarketPosition == 0
         && !TS_Reentry_short
         && CrossUnderFlag )
   
        {
             SellShort(Lots,Open);
            Scale_in_bo = False;    
             Normal_Trailing_short = false;
             stoploss_hard_short = false;
         }
    
        // 
  
            // 正常平仓
            If(MarketPosition == -1 
             && Close[1] > AveMa )
 
            {
                 BuyToCover(0,Open);
            }
      
            // 完全击穿
             If(MarketPosition == -1 
             && CrossOver( Close[1],UpperBand ) )
              {
                 BuyToCover(0,Open);
             }        
    
            Commentary(" stoploss_hard_short ="+IIFString(stoploss_hard_short,"True","False")) ; 
            Commentary(" Normal_Trailing_short ="+IIFString(Normal_Trailing_short,"True","False")) ; 
    
        // ============================= 【追踪止损】 =============================
    
        if ( Scale_in_bo == False )
        {    
          ts = 1 ; // 如果没有任何加仓,原始仓位下,止损位系数=1
          }
    
        if ( Scale_in_bo == True )
         {
         ts = 2 ; // 如果有过1种加仓,止损位系数=2
         }
    
        if ( BarsSinceEntry == 0 )     // 开仓后第一个bar,直接等于开仓价
         {
             LowestAfterEntry = AvgEntryPrice;
        }
    
        Else If( BarsSinceEntry > 0 )   // 之后的bar,不断用最高和最低价做比对,赋值给开仓后最高最低价
    
        {
             LowestAfterEntry = Min(LowestAfterEntry[1],low[1]);
         }
    
        Else                          // 没有仓位时,保持上次价格信息,没有其他用途
        {
             LowestAfterEntry = LowestAfterEntry[1];
         }    
   
        If( MarketPosition == -1 && BarsSinceEntry > 0 
        && AvgEntryPrice - LowestAfterEntry > NATRstop*atr[1]/ts ) // 有多仓
            {
               If( high >= LowestAfterEntry + NATRstop*atr[1]/ts )
        {
                BuyToCover(0,Max(Open, LowestAfterEntry + NATRstop*atr[1]/ts ) );
                Normal_Trailing_short = True ;
                PlotString ("TrailingStop","TrailingStop",high*1.01,White);
                }
    
            }
     // ======================= 【硬止损平仓】=======================
   
    /*
    
        If( MarketPosition == -1 && BarsSinceEntry > 0 
    
        && high >= AvgEntryPrice + NATRstop*atr[1]/ts )   // 空仓情况
    
            {
                MyExitPrice = Max (Open,AvgEntryPrice + NATRstop*atr[1]/ts );
                BuyToCover(0,MyExitPrice);         //空头止损平仓
                PlotString ("HardStop","HardStop",high*1.01,White);
                stoploss_hard_short = True ;
     }

     }
 

 

skawin88

是不是这里 If(date!=date[1] and high==low) Return;               // 本bar价格异常

因为跌停了,这根Bar的high==low了

2022-01-21 22:51
您未登录,请先 登录注册 后发表评论
顶部