您现在的位置:程序化交易>> 期货公式>> 交易开拓者(TB)>> 开拓者知识>>正文内容

开拓者 TB DeleteOrderTickCounter + 1;不明白的是,为什么要在这里将该变量+1处理呢??? [开拓者 TB]

  • 咨询内容: 这是在tb公式指南中,A函数与全局变量匹配使用小节中的一条语句:DeleteOrderTickCounter = DeleteOrderTickCounter + 1;不明白的是,为什么要在这里将该变量+1处理呢???

    这是整段代码:

    Params
    Numeric offSet(1); // 委托价格偏移,为了保证成交
    Numeric BeforeMins(5); // 收盘前几分钟开始操作
    Vars
    Numeric tempPos; // 仓位
    Numeric DeleteOrderTickCounter;
    Numeric HasSendOrder(0);

    Begin
    If(BarStatus == 0)
      {
        DeleteOrderTickCounter = 9999;
        HasSendOrder = 0;
        SetGlobalVar(0,DeleteOrderTickCounter);
        SetGlobalVar(1,HasSendOrder);
      }Else
      {
        DeleteOrderTickCounter = GetGlobalVar(0);
        HasSendOrder = GetGlobalVar(1);
       }
    If(CurrentTime > (0.1459 - 0.0001*(BeforeMins-1)) && BarStatus == 2 && HasSendOrder == 0)
       {
          If(Data0.Close != InvalidNumeric && Data0.A_GetOpenOrderCount()>0) //商品0全部撤单
            {
                Data0.A_DeleteOrder();
                DeleteOrderTickCounter = 1;
             }
          If(Data1.Close != InvalidNumeric && Data1.A_GetOpenOrderCount()>0)//商品1全部撤单
             {
                Data1.A_DeleteOrder();
                DeleteOrderTickCounter = 1;
              }
          If(Data2.Close != InvalidNumeric && Data2.A_GetOpenOrderCount()>0) //商品2全部撤单
              {
                Data2.A_DeleteOrder();
                DeleteOrderTickCounter = 1;
               }
           DeleteOrderTickCounter = DeleteOrderTickCounter + 1; //就是这里看不明白???
           SetGlobalVar(0,DeleteOrderTickCounter);
           If(DeleteOrderTickCounter < 5) Return; // 撤单后需要延迟几个Tick才平仓
           tempPos = Data0.A_BuyPosition();
           If(tempPos > 0) // 平多单
               {
                 Data0.A_SendOrder(Enum_Sell,Enum_Exit,tempPos,Data0.Q_BidPrice - offSet* Data0.MinMove*Data0.PriceScale);
               }
           tempPos = Data0.A_SellPosition();
           If(tempPos > 0) //平空单
              {
                Data0.A_SendOrder(Enum_Buy,Enum_Exit,tempPos,Data0.Q_AskPrice +offSet*Data0.MinMove*Data0.PriceScale);
              }
           tempPos = Data1.A_BuyPosition;
           If(tempPos > 0) // 平多单
             {
               Data1.A_SendOrder(Enum_Sell,Enum_Exit,tempPos,Data1.Q_BidPrice -offSet*Data1.MinMove*Data1.PriceScale);
             }
           tempPos = Data1.A_SellPosition;
           If(tempPos > 0) //平空单
            {
              Data1.A_SendOrder(Enum_Buy,Enum_Exit,tempPos,Data1.Q_AskPrice +offSet*Data1.MinMove*Data1.PriceScale);
            }
           tempPos = Data2.A_BuyPosition;
           If(tempPos > 0) // 平多单
            {
              Data2.A_SendOrder(Enum_Sell,Enum_Exit,tempPos,Data2.Q_BidPrice -offSet*Data2.MinMove*Data2.PriceScale);
            }
           tempPos = Data2.A_SellPosition;
           If(tempPos > 0) //平空单
            {
              Data2.A_SendOrder(Enum_Buy,Enum_Exit,tempPos,Data2.Q_AskPrice +offSet*Data2.MinMove*Data2.PriceScale);
            }
           HasSendOrder = 1;
           SetGlobalVar(1,HasSendOrder);
        }
        End

     

  • TB技术人员: 很简单,就是在数撤单后过了几个Tick。。。。。

     

  • TB客服: DeleteOrderTickCounter = DeleteOrderTickCounter + 1; //就是这里看不明白???
    If(DeleteOrderTickCounter < 5) Return; // 撤单后需要延迟几个Tick才平仓
    这两句是配合的。当撤单后果了5个tick才平仓

     

  • 网友回复: 本帖最后由 co8 于 2013-4-11 17:57 编辑

    感谢两位老师的回复,对不起,可能是我没问清楚;
    我的问题是该语句为什么要+1?如果不加1行吗?不加1会是什么结果?

 

有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友

可联系技术人员 QQ: 1145508240  有需要帮忙请点击这里留言!!!进行 有偿 编写!不贵!点击查看价格!


【字体: 】【打印文章】【查看评论

相关文章

    没有相关内容