设为首页收藏本站

 找回密码
 注册
查看: 2246|回复: 3
打印 上一主题 下一主题

哪位老师能帮我看下,这条语句的意思? [复制链接]

Rank: 2

精华
0
UID
116165
积分
51
帖子
20
主题
5
阅读权限
30
注册时间
2013-3-3
最后登录
2013-6-18
跳转到指定楼层
1#
发表于 2013-4-11 08:53:37 |只看该作者 |倒序浏览
这是在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

Rank: 4

精华
0
UID
112594
积分
333
帖子
281
主题
8
阅读权限
50
注册时间
2012-9-20
最后登录
2013-12-4
2#
发表于 2013-4-11 09:54:10 |只看该作者
很简单,就是在数撤单后过了几个Tick。。。。。

使用道具 举报

Rank: 6Rank: 6

精华
0
UID
116229
积分
2373
帖子
2247
主题
18
阅读权限
70
注册时间
2013-3-4
最后登录
2019-3-24
3#
发表于 2013-4-11 15:03:19 |只看该作者
DeleteOrderTickCounter = DeleteOrderTickCounter + 1; //就是这里看不明白???
If(DeleteOrderTickCounter < 5) Return; // 撤单后需要延迟几个Tick才平仓
这两句是配合的。当撤单后果了5个tick才平仓

使用道具 举报

Rank: 2

精华
0
UID
116165
积分
51
帖子
20
主题
5
阅读权限
30
注册时间
2013-3-3
最后登录
2013-6-18
4#
发表于 2013-4-11 17:56:52 |只看该作者
本帖最后由 co8 于 2013-4-11 17:57 编辑

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

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

bottom

静态版|手机版|联系我们|交易开拓者 ( 粤ICP备07044698   

GMT+8, 2024-5-13 23:13

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部