如何使用 Interactive Brokers 限制订单在特定时间打开并在另一个特定时间关闭它 API

How to restrict order open to a certain time and close it in another certain time with Interactive Brokers API

使用 Interactive Brokers API,我想将开单限制在特定时间,例如不在 09:35 之前,我还想在结束前大约 5 分钟平仓day.I 中的一个尝试将 if 语句与 Sys.time() 一起使用,但我没有工作,而且它也不优雅。我该如何修复错误或使用其他方法来完全填充我的需要吗?

    Hour<-as.integer(format(Sys.time(), "%H"))
    Minute<-as.integer(format(Sys.time(), "%M"))
    print(lastValue)
    library(IBrokers)
    options("scipen"=4)
    myconid = 3
    twsobj = twsConnect(myconid)
    Sys.sleep(2)
    myorderid = as.integer(reqIds(twsobj))
    print(myorderid)
    Sys.sleep(2)
    if(lastValue>0.5 && Hour > 16 && Minute > 35 ){
        placeOrder(twsobj,Contract=twsSTK("SPY"),Order=twsOrder(myorderid ,"BUY",1,"MKT"))
        print("IT WAS A BUY ORDER")
        Sys.sleep(10)
        placeOrder(twsobj,Contract=twsSTK("SPY"),Order=twsOrder(myorderid + 1 ,"SELL",1,"MKT"))

    } else{
        placeOrder(twsobj,Contract=twsSTK("SPY"),Order=twsOrder(myorderid , "SELL" , 1 , "MKT"))
        print("IT WAS A SELL ORDER")
        Sys.sleep(10)
        placeOrder(twsobj,Contract=twsSTK("SPY"),Order=twsOrder(myorderid + 1 , "BUY" ,1, "MKT"))

    }

每个经纪人都有指定时间后商品 (GAT) 的工具。应该和在R界面设置这个字段一样简单。在 CRAN IBrokers 文档中,它表示字段

goodAfterTime Trades Good After Time: YYYYMMDD hh:mm:ss or ""

这是 IB 的订单属性 API 信息 https://www.interactivebrokers.com/en/software/api/apiguide/java/order.htm

交易的"Good After Time,"格式 "YYYYMMDD hh:mm:ss (optional time zone)"

请注意,MKT 订单几乎会立即执行。 LMT订单可能需要一些时间。