![](/img/trans.png)
[英]How to restrict order open to a certain time and close it in another certain time with Interactive Brokers API
[英]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.