放置选项订单时发生错误201 interactive brokers tws

2024-04-29 21:34:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图通过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()

Tags: fromimportselfappdefordersymbolprint
1条回答
网友
1楼 · 发布于 2024-04-29 21:34:24

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

向分区帐户下订单时,只需在IBApi order类中使用其他订单属性指定发送订单的帐号。例如

order.account = "DU12345"

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

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

相关问题 更多 >