我已经多次try 编写IB API代码,这些代码都在生成-1 504 Not Connected error.即使代码直接和准确地来自IBKR学院的培训视频(我已经粘贴在下面).我一遍又一遍地判断了全局设置Enable ActiveX & Socket,Socket Port#是7497,客户端ID与API代码匹配,选中了Allow Connections from Localhost,在Trusted IP中输入‘127.0.0.1’和Localhost:5000

TWS中的Data Connections表显示侦听7497 Peer—to—Peer Port 127.0.1.60104 Client ID 1的API连接为Accepted;这表明API已连接.然而,当我 Select Run时,什么都没有发生—我只是在VS Code Python终端中得到了文件链接的打印,当我执行Run Python Rugger时—我收到以下消息:

PS C:\TWS API\source\pythonclient\ibapi>  & 'c:\Users\JV\AppData\Local\Programs\Python\Python312\python.exe' 'c:\Users\JV\.vscode\extensions\ms-python.debugpy-2024.2.0-win32-x64\bundled\libs\debugpy\adapter/../..\debugpy\launcher' '60548' '--' 'c:\TWS API\source\pythonclient\tests\TestApp.py'

ERROR -1 504 Not connected

PS C:\TWS API\source\pythonclient\ibapi> 

我在这个论坛和其他论坛上搜索和寻找答案.有人可以帮助这个新手谁似乎是被牵制和挣扎摆脱一垒与IB API?谢谢

from ibapi.client import *
from ibapi.wrapper import *
import time

class TestApp(EClient, EWrapper):

    def __init__(self):
        EClient.__init__(self, self)

    def contractDetails(self, reqId, contractDetails):
        print(f"contract details: {contractDetails}")

    def contractDetailsEnd(self, reqId):
        print("End of contractDetails")
        self.disconnect()

def main():
    app = TestApp()

    app.connect("127.0.0.1", 7497, 1)

    mycontract = Contract()
    mycontract.symbol = "AAPL"
    mycontract.secType = "STK"
    mycontract.exchange = "SMART"
    mycontract.currency = "USD"
    mycontract.primaryExchange = "ISLAND"

    time.sleep(3)

    app.reqContractDetails(1, mycontract)

    app.run

if __name__ == "__main__":
    main()

推荐答案

简单的答案是app.run是一个方法调用,所以必须是app.run().

你的代码有其他常见的ib—api问题,你应该在这里搜索,点击我的名字,然后点击相关问题. 大多数例子都像你的一样,都是不正确的.

Python相关问答推荐

Python daskValue错误:无法识别的区块管理器dask -必须是以下之一:[]

根据另一列中的nan重置值后重新加权Pandas列

如何找到满足各组口罩条件的第一行?

为什么这个带有List输入的简单numba函数这么慢

如何更改分组条形图中条形图的 colored颜色 ?

部分视图的DataFrame

Python+线程\TrocessPoolExecutor

迭代嵌套字典的值

如何根据一列的值有条件地 Select 前N个组,然后按两列分组?

转换为浮点,pandas字符串列,混合千和十进制分隔符

为什么numpy. vectorize调用vectorized函数的次数比vector中的元素要多?

try 检索blob名称列表时出现错误填充错误""

python—telegraph—bot send_voice发送空文件

在Python中从嵌套的for循环中获取插值

Python pint将1/华氏度转换为1/摄氏度°°

多个矩阵的张量积

替换包含Python DataFrame中的值的<;

将像素信息写入文件并读取该文件

是否将Pandas 数据帧标题/标题以纯文本格式转换为字符串输出?

为什么fizzbuzz在两个数字的条件出现在一个数字的条件之后时不起作用?