全部 智大领峰 TBQuant功能 TBL语言 TB开户 问答专区 高手圈 其他
为什么平仓的时候会多2手出来,造成平不了仓?
2022-03-21 13:15

K线图显示也是平仓61手,但是资金帐户里面却发了63手平仓单子,没有平到仓

 

kyover

我感觉你的手数计算信号闪烁了。你是不是用close计算交易手数的。

如果是平仓想要全平,手数直接写0就可以了。如果自己计算没算对反而要出错

2022-03-21 16:34
ls_20211210
@kyover

    TotalEquity = Portfolio_CurrentCapital() + Portfolio_UsedMargin();
        TurtleUnits = (TotalEquity*RiskRatio/100) /(N * ContractUnit()*BigPointValue());
        TurtleUnits = IntPart(TurtleUnits); // 对小数取整

手数是上面这个,下面是开仓和平仓

If(MarketPosition == 0)
        {
            If( cond7 && cond2 && cond5 && TurtleUnits >= 1)
            {
                // 开多单
                myEntryPrice =CLOSE[1];
                myEntryPrice = IIF(myEntryPrice < Open, Open,myEntryPrice); // 大跳空的时候用开盘价代替
                preEntryPrice = myEntryPrice;
                Buy(TurtleUnits,myEntryPrice);
                SendOrderThisBar = True;
                Commentary("preEntryPrice="+Text(preEntryPrice));
            }
             
        
        
            If( cond8 && cond4 && cond6 && TurtleUnits >= 1)
            {
                // 开空单
                myEntryPrice =CLOSE[1];
                myEntryPrice = IIF(myEntryPrice > Open, Open,myEntryPrice); // 大跳空的时候用开盘价代替
                preEntryPrice = myEntryPrice;
                SellShort(TurtleUnits,myEntryPrice);
                SendOrderThisBar = True;
                
            }
        }
        If(MarketPosition == 1) // 有多仓的情况
         { 
            
              
                If(ls3==1 && cond6 && cond4  )  /*&& A1>A1[1] */
                
                {
                    myExitPrice = CLOSE[1];
                    myExitPrice = IIF(myExitPrice > Open, Open,myExitPrice); // 大跳空的时候用开盘价代替&& ls3==1 && A1>A1[1]
                    SELL(0,myExitPrice); // 数量用0的情况下将全部平仓
                    
                    Commentary("myExitPrice="+Text(myExitPrice));
            
                
                }Else
                { 
                  If(preEntryPrice!=InvalidNumeric && TurtleUnits >= 1)
            
                  {
                    If(Open >= preEntryPrice + 0.5*N && CurrentEntries < nEntries) // 如果开盘就超过设定的1/2N,则直接用开盘价增仓。
                    {
                        myEntryPrice = Open;
                        preEntryPrice = myEntryPrice;
                        Buy(TurtleUnits,myEntryPrice);
                        SendOrderThisBar = True;
                    }
                    while(High >= preEntryPrice + 0.5*N && CurrentEntries < nEntries) // 以最高价为标准,判断能进行几次增仓
                    {
                        myEntryPrice = preEntryPrice + 0.5 * N;
                        preEntryPrice = myEntryPrice;
                        if(False == Buy(TurtleUnits,myEntryPrice))
                        {
                            break;
                        }
                        SendOrderThisBar = True;
                    }
                 }
              If(LOW<Data1.DonchianLo) 
              {
                myExitPrice = Max(low,Data1.DonchianLo-MinPoint);
                 myEntryPrice = IIF(myEntryPrice > Open, Open,myEntryPrice); // 大跳空的时候用开盘价代替
                Sell(0,myExitPrice);    // 数量用0的情况下将全部平仓
                Commentary("myExitPrice="+Text(myExitPrice));
              }        
           }
         }
        Else If(MarketPosition ==-1) // 有空仓的情况
        
        {  
           If( ls6==1 && cond5 && cond2 ) 
                
                {
                    myEntryPrice =CLOSE[1];
                    myEntryPrice = IIF(myEntryPrice < Open, Open,myEntryPrice); // 大跳空的时候用开盘价代替
                    
                    BuyToCover(0,myExitPrice); // 数量用0的情况下将全部平仓
                    
                    Commentary("myExitPrice="+Text(myExitPrice)); 
                
                 }Else 
                   { 
                    If(preEntryPrice!=InvalidNumeric && TurtleUnits >= 1)
                    {
                    If(Open <= preEntryPrice - 0.5*N && CurrentEntries < nEntries) // 如果开盘就超过设定的1/2N,则直接用开盘价增仓。
                    {
                        myEntryPrice = Open;
                        preEntryPrice = myEntryPrice;
                        SellShort(TurtleUnits,myEntryPrice);
                        SendOrderThisBar = True;
                    }
                    while(Low <= preEntryPrice - 0.5*N && CurrentEntries < nEntries) // 以最低价为标准,判断能进行几次增仓
                    {
                        myEntryPrice = preEntryPrice - 0.5 * N;
                        preEntryPrice = myEntryPrice;
                        if(False == SellShort(TurtleUnits,myEntryPrice))
                        {
                            break;
                        }
                        SendOrderThisBar = True;
                      }
                  }
                  If(High>Data1.Donchianhi) 
                  {
                 myExitPrice = Min(High,Data1.Donchianhi+MinPoint);
                 myEntryPrice = IIF(myEntryPrice < Open, Open,myEntryPrice); // 大跳空的时候用开盘价代替
                BuyToCover(0,myExitPrice);    // 数量用0的情况下将全部平仓
                Commentary("myExitPrice="+Text(myExitPrice));
                 }
             }
        Commentary("CurrentEntries = " + Text(CurrentEntries));
      }
    } 

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