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

关于return问题 [开拓者 TB]

  • 咨询内容:
    1. Params
    2.     Numeric offSet(1);                    // 委托价格偏移,为了保证成交
    3.     Numeric BeforeMins(5);                // 收盘前几分钟开始操作
    4. Vars
    5.     Numeric tempPos; // 仓位                                
    6.     Numeric DeleteOrderTickCounter;    //Tick计数器
    7.     Numeric HasSendOrder(0);          //撤单标志
    8. Begin
    9.     If(BarStatus == 0)     //第一个bar时,对Tick计数器、撤单标志初始化、并存放全局变量
    10.     {
    11.         DeleteOrderTickCounter = 9999;
    12.         HasSendOrder = 0;
    13.         SetGlobalVar(0,DeleteOrderTickCounter);
    14.         SetGlobalVar(1,HasSendOrder);
    15.     }Else          //其他bar、从全局变量中读取撤单tick计数器撤单标志的值
    16.     {
    17.         DeleteOrderTickCounter = GetGlobalVar(0);
    18.         HasSendOrder = GetGlobalVar(1);
    19.     }

    20.     If(CurrentTime > (0.1459 - 0.0001*(BeforeMins-1)) && BarStatus == 2 && HasSendOrder == 0)
    21.     {
    22.         If(Data0.Close != InvalidNumeric && Data0.A_GetOpenOrderCount()>0) // 商品0全部撤单
    23.         {
    24.             Data0.A_DeleteOrder();
    25.             DeleteOrderTickCounter = 1;
    26.         }
    27.    
    28.         DeleteOrderTickCounter = DeleteOrderTickCounter + 1;
    29.         SetGlobalVar(0,DeleteOrderTickCounter);

    30.         If(DeleteOrderTickCounter < 5) Return; // 撤单后需要延迟几个Tick才平仓(Tick开始计数,为了延迟5个Tick后的平仓用)

    31.         tempPos = Data0.A_BuyPosition();
    32.         If(tempPos > 0) // 平多单
    33.         {
    34.             Data0.A_SendOrder(Enum_Sell,Enum_Exit,tempPos,Data0.Q_BidPrice-offSet*Data0.MinMove*Data0.PriceScale);
    35.         }
    36.         tempPos = Data0.A_SellPosition();
    37.         If(tempPos > 0) //平空单
    38.         {
    39.             Data0.A_SendOrder(Enum_Buy,Enum_Exit,tempPos,Data0.Q_AskPrice+offSet*Data0.MinMove*Data0.PriceScale);
    40.         }

    41.       
    42.         HasSendOrder = 1;
    43.         SetGlobalVar(1,HasSendOrder);
    44.     }
    45. End
    46. 谁能说说 If(DeleteOrderTickCounter < 5) Return;这条语句return返回到哪吗?是不是返回程序的第一行,如果是的话那岂不是如果条件不满足的时候会一直撤单,还有一个问题就是,比如说在15分钟线上执行程序,在某一根bar上检测到撤单信号,但是这跟bar要过15分钟才转到下一根bar那么这个程序在这跟bar是不是来回的执行?

     

  • TB技术人员: 执行到return,那么后面的语句就不再执行。待下一个tick或K线进来,从头开始新一轮的运算。
    撤单执行后,那么已报单就变成0,之后就不会再满足撤单的条件了呀。所以不会一直撤单 的。
    以你说的15分钟线例子,我没有看懂,不明白转到下一个bar与在当前bar来回执行的关系是什么?

     

  • TB客服:
    小米 发表于 2014-8-28 15:33
    执行到return,那么后面的语句就不再执行。待下一个tick或K线进来,从头开始新一轮的运算。
    撤单执行后,那 ...

    我的意思是,15分钟的bar不是要在一根bar上执行15分钟吗,比如说在这根bar一开始就已经撤单,是不是这个程序还要在这根bar上执行,给过一个tick执行一次

     

  • 网友回复:
    yekunpeng 发表于 2014-8-28 16:12
    我的意思是,15分钟的bar不是要在一根bar上执行15分钟吗,比如说在这根bar一开始就已经撤单,是不是这个 ...

    整个公式是要不停地一遍又一遍地运算的。

     

  • 网友回复:
    小米 发表于 2014-8-28 16:15
    整个公式是要不停地一遍又一遍地运算的。

    哦,差不多懂啦,谢谢。还想问一下AvgEntryPrice建仓平均价格怎么理解,比如说以2300点买了一手股指期货合约,是不是AvgEntryPrice==2300,如果以两手买呢?

 

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

可联系技术人员 QQ: 1145508240  点击这里给我发消息进行 有偿 编写!不贵!点击查看价格!


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

相关文章

    没有相关内容