如何在 5 秒后关闭在 Interactive brokers 上打开的订单

How can I close an opened order on Interactive brokers after 5 seconds

我使用代码(下面是link)在Interactive Brokers(我使用模拟账户)中打开一个订单,但是当我试图在5秒后关闭打开的订单时,我无法做到so.What我做错了吗?

library(IBrokers)
myconid = 3
twsobj  = twsConnect(myconid)
myaud = twsCurrency("AUD",currency="USD",exch="IDEALPRO",primary="",strike="0.0",right="",local="",multiplier="",include_expired="0",conId=myconid)
Sys.sleep(2)
myorderid = as.integer(reqIds(twsobj))
print(myorderid)
Sys.sleep(2)
# my workaround:
options("scipen"=4)
placeOrder(twsobj, myaud, twsOrder(myorderid,"SELL", 1, "MKT"))
Sys.sleep(5)
placeOrder(twsobj, myaud, twsOrder(myorderid,"BUY", 1, "MKT"))
我使用的

Link:[IBrokers - How I send 100000 to IBrokers:::.placeOrder?

更新(跟随布赖恩的回答): 我使用代码(link 在 Interactive Brokers 中打开订单(我使用模拟账户)但是当我试图在 5 秒后关闭打开的订单时我无法做到 so.What我做错了吗?

 library(IBrokers)
    myconid = 3
    twsobj  = twsConnect(myconid)
    myaud = twsCurrency("AUD",currency="USD",exch="IDEALPRO",primary="",strike="0.0",right="",local="",multiplier="",include_expired="0",conId=myconid)
    Sys.sleep(2)
    print(myorderid)
    Sys.sleep(2)
    # my workaround:
    options("scipen"=4)
    placeOrder(twsobj, myaud, twsOrder(122,"SELL", 1, "MKT"))
    Sys.sleep(5)
    placeOrder(twsobj, myaud, twsOrder(123,"BUY", 1, "MKT"))

您需要使用不同的订单编号。他们不是 re-useable。您应该永远至少增加 1,即使是第二天、下个月等。当您连接时,TWS returns 下一个有效 ID。我不知道它在 R 中的什么位置或什么 reqIds returns(在 java 中它获得了一系列 ID),但你需要使用一个唯一的数字。有些人只是使用纪元的秒数​​,或者您可以寻找 nextValidId() 方法。

另外,查找错误信息,如果你得到 "duplicate order id",你应该意识到你的错误。

我看到两件事,第一,如果你想修改,关闭你刚刚介绍的开放订单,你应该使用与 select 那个确切订单相同的 orderId。

另外,你介绍了一个MKT订单,不是限价单,你确定订单没有执行才能取消吗?