繁体   English   中英

5秒后如何在Interactive Brokers上关闭未结订单

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

我使用代码(下面的链接)在盈透证券中开设了一个订单(我使用一个模拟账户),但是当我尝试在5秒后关闭已开立的订单时,我无法这样做,这是怎么做的?

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"))

我使用过的链接:[ IBrokers-如何向IBrokers ::::。placeOrder发送100000?

UPDATE(按照brian的回答):我使用代码(下面的链接)在盈透证券中打开订单(我使用书面帐户),但是当我尝试在5秒后关闭已打开的订单时,我无法执行此操作。我究竟做错了什么?

 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"))

您需要使用其他订单ID。 它们不可重复使用。 您应该永远至少增加1,即使是第二天,第二个月等。连接时,TWS将返回下一个有效ID。 我不知道它在R中的位置或reqIds返回什么(在Java中,它获取一系列ID),但是您需要使用唯一的数字。 某些人仅从纪元开始就使用秒,或者您可以寻找nextValidId()方法。

另外,查找错误消息,如果得到“重复的订单ID”,则应该意识到自己的错误。

我看到两件事,首先,如果要修改,请关闭刚引入的未结订单,应使用相同的orderId选择确切的订单。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM