VeighNa量化社区
你的开源社区量化交易平台
Member
avatar
加入于:
帖子: 12
声望: 0

报错找不到合约 ,试了各种办法,合约代码的书写方式和规则 上是一样的,不知道为什么,具体如下:

D329ethStrategy开始执行初始化
策略初始化
行情订阅失败,找不到合约EUR-USD-CASH.IDEALPRO

,no-ui,无界面模式下运行的

Member
avatar
加入于:
帖子: 12
声望: 0

具体合约 格式到底要怎么写?比如 CME交易所的白银,要怎么写?

Member
avatar
加入于:
帖子: 12
声望: 0

使用命令行试图去获得当前 全部合约 get_all_contracts也是没有返回值的,没报错但返回为空,
from vnpy.app.script_trader import init_cli_trading
from vnpy.gateway.ib import IbGateway
from vnpy.trader.utility import load_json
setting = load_json("connect_ib.json")
engine = init_cli_trading([IbGateway])
engine.connect_gateway(setting, "IB")
engine.get_all_contracts(use_df=True)

Administrator
avatar
加入于:
帖子: 4545
声望: 324

炼数成金 wrote:

具体合约 格式到底要怎么写?比如 CME交易所的白银,要怎么写?

  1. IB接口不支持全量合约查询,需要先订阅后,才能查询到合约信息
  2. 请参考vnpy/gateway/ib/ib_gateway.py有详细代码规则说明
Member
avatar
加入于:
帖子: 12
声望: 0

都试过了,主要是单个的也显示 找不到合约

Member
avatar
加入于:
帖子: 5010
声望: 302

IB接口与其他接口不同,请先参照接口文件示例的规则,先订阅再查询,才能查询到合约信息

Member
avatar
加入于:
帖子: 12
声望: 0

现在是IB的已经可以在界面下查询 到合约 和行情,但使用无界面的却总报错说 找不到合约 ,试过了自定义的去订阅都不行,只有界面自带的可以但生产环境中linux系统

Member
avatar
加入于:
帖子: 5010
声望: 302

如果没有修改no_ui的代码的话,请附上图形界面订阅成功和无界面订阅报错的截图。
如果修改了no_ui的代码,请把no_ui的代码也贴一下

Member
avatar
加入于:
帖子: 12
声望: 0

xiaohe wrote:

如果没有修改no_ui的代码的话,请附上图形界面订阅成功和无界面订阅报错的截图。
如果修改了no_ui的代码,请把no_ui的代码也贴一下

是这样的,我使用 get_all_contracts 来查询 所有合约 ,只显示了一个合约 spy-usd-stk,只有这一个品种可以正常交易 和使用,其他品种都显示 找不到合约 ,但是在有界面那边是可以都查到的,虽然 只能查单个的,

Member
avatar
加入于:
帖子: 12
声望: 0

req1 = SubscribeRequest("EUR-USD-CASH",Exchange.IDEALPRO)
engine.main_engine.subscribe(req1,"IB")
xiaohe wrote:

如果没有修改no_ui的代码的话,请附上图形界面订阅成功和无界面订阅报错的截图。
如果修改了no_ui的代码,请把no_ui的代码也贴一下

找到原因了,就是,要想在no-ui下找到合约 之前,必须 先手工订阅一下那个合约 ,使用以下代码:
from vnpy.trader.constant import Exchange
from vnpy.trader.object import SubscribeRequest
from vnpy.app.script_trader import init_cli_trading
from vnpy.gateway.ib import IbGateway
from vnpy.trader.utility import load_json
setting = load_json("connect_ib.json")
engine = init_cli_trading([IbGateway])
engine.connect_gateway(setting, "IB")
engine.get_all_contracts(use_df=True)

engine.get_all_accounts(use_df=True)

req1 = SubscribeRequest("EUR-USD-CASH",Exchange.IDEALPRO)
engine.main_engine.subscribe(req1,"IB")

使用以上代码是可以查到,查到了之后,再使用 no-ui的脚本运行就不报‘找不到合约 ’错误了,但问题是如何实现全自动的呢,不能所有需要的品种都手工先查询一遍

Member
avatar
加入于:
帖子: 5010
声望: 302

ib和别的接口不同,需要订阅合约才能找到合约信息

© 2015-2022 上海韦纳软件科技有限公司
备案服务号:沪ICP备18006526号

沪公网安备 31011502017034号

【用户协议】
【隐私政策】
【免责条款】