开拓者期货期权程序化系统交易论坛

标题: 撤单 [打印本页]

作者: 01011012    时间: 2010-6-10 09:12:12     标题: 撤单

nCount = A_GetOpenOrderCount();
        For i = 1 To nCount
        {
                        nEntryFlag = A_OrderEntryOrExit(i);//取得开平仓类型
                        If(nEntryFlag == Enum_Entry)
                                OrderPrice=IIF(OrderPrice<A_OpenOrderPrice(i),OrderPrice,A_OpenOrderPrice(i));//取得委托价格
        }
        If(Low>Low[1])
        {
                        For i = 1 To nCount
                        {
                                        nEntryFlag = A_OrderEntryOrExit(i);
                                        If(nEntryFlag == Enum_Entry And OrderPrice==A_OpenOrderPrice(i))
                                        {
                                                        A_DeleteOrder(A_OpenOrderContractNo(i));
                                                        SetGlobalVar(1,0);
                                        }
                        }
        }


斑竹所写的撤单代码,不能实现我想要的撤销最小委托价的开仓单。。。请斑竹再看看
作者: 01011012    时间: 2010-6-10 09:48:35

斑竹??????????
作者: lh948    时间: 2010-6-10 13:43:04

正在测试,测试成功我会将代码贴上来的
作者: lh948    时间: 2010-6-11 10:51:16

  1. Vars
  2.         Numeric nCount;
  3.         Numeric nEntryFlag;
  4.         Numeric OrderPrice(9999999);
  5.         String orderNo;
  6.         Numeric i;
  7. Begin
  8.         If(BarStatus==0)
  9.         {
  10.                 SetGlobalVar(0,0);
  11.         }
  12.         nCount = A_GetOpenOrderCount();
  13.         If(nCount==InvalidInteger) Return;
  14.         If(GetGlobalVar(0)==0)
  15.         {
  16.         For i = 1 To nCount
  17.         {
  18.                         nEntryFlag = A_OpenOrderEntryOrExit(i);//取得开平仓类型
  19.                         If(orderprice>A_OpenOrderPrice(i) && nEntryFlag == Enum_Entry)
  20.                         {
  21.                                 OrderPrice=A_OpenOrderPrice(i);
  22.                                 orderNo=A_OpenOrderContractNo(i);
  23.                         }
  24.         }
  25.                 A_DeleteOrder(OrderNO);
  26.                 SetGlobalVar(0,1);
  27.         }
  28. End
复制代码

作者: 01011012    时间: 2010-6-11 15:32:50

Vars
        Numeric nCount;
        Numeric nEntryFlag;
        Numeric OrderPrice(9999999);
        String orderNo;
        Numeric i;
Begin
       If(BarStatus==0)
        {
                SetGlobalVar(0,0);
        
}   //这个是否可以用在tick图上?
        nCount = A_GetOpenOrderCount();
        If(nCount==InvalidInteger) Return;
        If(GetGlobalVar(0)==0)
        {
        For i = 1 To nCount
        {
                        nEntryFlag = A_OpenOrderEntryOrExit(i);//取得开平仓类型
                        If(orderprice>A_OpenOrderPrice(i) && nEntryFlag == Enum_Entry)  //这个条件是永远成立的?
                        {
                                OrderPrice=A_OpenOrderPrice(i);   
                                OrderPrice=Min(OrderPrice,OrderPrice[1]);
                                orderNo=A_OpenOrderContractNo(i);                           }
        }
                A_DeleteOrder(OrderNO);//按照斑竹写的这个能否撤销最小价的委托开仓单?需不需要加上上面这句话?今天模拟柜台老是登陆不上,没有办法进行测试,但是按照我的理解来看,好像还是不能实现撤销最小委托价的开仓单。。

                SetGlobalVar(0,1);
        }
End


还请老师指教。。。。。。。。。。。

[ 本帖最后由 01011012 于 2010-6-11 15:35 编辑 ]
作者: 01011012    时间: 2010-6-17 08:30:38

老大,端午节快乐。。。。。。。
作者: aocool    时间: 2010-6-17 09:18:18

老大,你真用功,就凭你这个劲。我相信你能赚钱
作者: 01011012    时间: 2010-6-17 10:39:58

斑竹上班啦,可以回答下吗?
作者: 01011012    时间: 2010-6-17 14:00:24

请斑竹指教。。。。。。。。。。。。。。。。
作者: lh948    时间: 2010-6-17 15:24:38

1.可以使用在tick上
2.这个是判断条件,需要在barstatus==0下增加
OrderPrice=9999999;
删除初始化那句   Numeric OrderPrice(9999999);
3.最后那一句不用加的!
作者: 01011012    时间: 2010-6-21 10:51:15

我所写的代码是当有持仓时,马上发出平仓。从平仓发单情况上来看,时间未免也延迟太多。。有没有什么好的办法?

[ 本帖最后由 01011012 于 2010-6-21 10:55 编辑 ]
作者: 顺势顺心    时间: 2010-9-21 12:29:58

请教斑竹。
以上提供的代码只能在tb启动后撤一次单。
如果需要多次使用这个代码的功能如何搞?
执行一次后全局变量为1,如何在上述代码执行撤单成功后将全局变量重置为0?
作者: lh948    时间: 2010-9-21 12:47:27

以上代码会在每个tick都执行一遍的
作者: 顺势顺心    时间: 2010-9-21 16:39:26

for循环条件使用了全局变量值判断。执行过一次后,在后面的tick执行时将跳过for,不会再撤单了。
作者: wfklhh2017    时间: 2017-8-19 08:19:16

lh948 发表于 2010-6-11 10:51

管理员同志  学习你之前的代码  If(nCount==InvalidInteger) Return   这个是什么情况下会碰到  ,如果没有未成交委托单 大不了A_GetOpenOrderCount()=0,难道是当前委托单委托回报还没返回的情况下?那A_GetOpenOrderCount()也应该是最近的数据




欢迎光临 开拓者期货期权程序化系统交易论坛 (http://bbs.tb18.net/) Powered by Discuz! X2