繁体   English   中英

下期权订单时出现错误 201 交互式经纪人 tws

[英]Error 201 interactive brokers tws while placing options order

我正在尝试通过 TWS 在模拟账户上下达期权订单。 我按照教程进行操作,但是当我运行代码时,它给了我错误 201,“帐号无效或丢失”。 我花了一些时间试图修复它,但似乎无法解决它。 任何帮助,将不胜感激。

from ibapi.client import EClient
from ibapi.wrapper import EWrapper
from ibapi.contract import Contract
from ibapi.order import *
from threading import Timer

class TestApp(EWrapper, EClient):
    def __init__(self):
        EClient.__init__(self, self)

    def error(self, reqId, errorCode, errorString):
        print("Error: ", reqId, " ", errorCode, " ", errorString)

    def nextValidId(self, orderId):
        self.nextOrderId = orderId
        self.start()

    def orderStatus(self, orderId , status, filled,
                    remaining, avgFillPrice, permId,
                    parentId, lastFillPrice, clientId,
                    whyHeld, mktCapPrice):
        print("Order Status ID: ", orderId, ", Status", status, ", Fiilled", filled, ", Remaining: ", remaining, ", Last Fill price: ", lastFillPrice)

    def openOrder(self, orderId, contract, order,
                  orderState):
        print("OpenOrder ID: ", orderId, contract.symbol, contract.secType, "@", contract.exchange, ":", order.action, order.orderType, order.totalQuantity, orderState.status)

    def execDetails(self, reqId, contract, execution):
        print("ExecDetails. ", reqId, contract.symbol, contract.secType, contract.currency, execution.execId, execution.orderId, execution.shares, execution.lastLiquidity)

    def start(self):

        contract = Contract()
        contract.symbol = "VMW" ##self.symbol
        contract.secType = "OPT"
        contract.exchange = "SMART"
        contract.currency = "USD"
        contract.lastTradeDateOrContractMonth = "20200619" #self.expirationDate
        contract.strike = 152.5 #self.strikeP
        contract.right = "C" #self.callorput
        contract.multiplier = "100"

        order = Order()
        order.action = "BUY" #self.buyorsell
        order.totalQuantity = 10
        order.orderType = "MKT"

        self.placeOrder(self.nextOrderId, contract, order)

    def stop(self):
        self.done = True
        self.disconnect()

def main():
    app = TestApp()
    app.nextOrderId = 0

    app.connect(host = 'XXXX', port=XXXX, clientId=X)

    Timer(3, app.stop).start()
    app.run()

if __name__ == '__main__':
    main()

IB 模拟账户通常有一个分区账户结构来演示该功能。 在分区设置中,账户的一部分被“分区”以供财务顾问使用,而账户的 rest 由账户所有者交易。 每个部分都有一个唯一的识别号,用于查询头寸或进行交易。

向分区账户下订单时,您只需在 IBApi 订单 class 中指定您发送订单的帐号以及其他订单属性。 例如

order.account = "DU12345"

如果可用于交易的分区标记为“DU12345”。 它的末尾可能有一个“C”。 您应该可以在 TWS 的右上角找到帐号,或者通过连接后自动调用的 API managedaccts()回调找到该帐号。

http://interactivebrokers.github.io/tws-api/financial_advisor_methods_and_orders.html#api_orders

暂无
暂无

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

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