千家信息网

如何使用Jupyter NoteBook进行IB查询和交易以及使用算法交易

发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,这篇文章主要介绍如何使用Jupyter NoteBook进行IB查询和交易以及使用算法交易,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Script_engine的大多操作都是
千家信息网最后更新 2025年01月23日如何使用Jupyter NoteBook进行IB查询和交易以及使用算法交易

这篇文章主要介绍如何使用Jupyter NoteBook进行IB查询和交易以及使用算法交易,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

Script_engine的大多操作都是针对main_engine的封装,类似的逻辑,其他交易相关App,也可以用类似方法调用,真的很方便,比起之前调试来说。其实算法交易调用也很直接,直接传入algo setting 的dict就可以。

应为Jupyter NoteBook代码不好贴,我这里又改写会直接python code。在启动tws登录后,可以直接运行。
另外IB接口的返回信息采用一个中wrapper机制,有点类似Spring的反转调用,可以理解为本地返回方法是被IBapi调用的写入。

from vnpy.app.script_trader import init_cli_tradingfrom vnpy.gateway.ib import IbGatewayfrom time import sleep# 连接到服务器setting = {    "TWS地址": "127.0.0.1",    "TWS端口": 7497,    "客户号":5 #每个链接用一个独立的链接号,一个IBAPI支持32个来同时链接}engine = init_cli_trading([IbGateway]) #返回Script_engine 示例,并且给main_engine注册了gatewayengine.connect_gateway(setting, "IB") #链接# 查询资金 - 自动sleep(10)print(engine.get_all_accounts(use_df = True))# 查询持仓print(engine.get_all_positions(use_df = True))# 订阅行情from vnpy.trader.constant import Exchangefrom vnpy.trader.object import SubscribeRequest# 从我测试直接用Script_engine有问题,IB的品种太多,get_all_contracts命令不行,需要指定具体后才可以,这里使用main_engine订阅req1 = SubscribeRequest("152791428",Exchange.SEHK) #创建行情订阅,腾讯req2 = SubscribeRequest("332623976",Exchange.SEHK) #创建行情订阅,美团req3 = SubscribeRequest("12087792",Exchange.IDEALPRO) #创建行情订阅,美团engine.main_engine.subscribe(req1,"IB")engine.main_engine.subscribe(req2,"IB")engine.main_engine.subscribe(req3,"IB")# 返回行情sleep(10)print(engine.get_all_contracts(use_df = True)) #返回所有已经订阅的contactprint(engine.get_contract("152791428.SEHK",use_df = True)) #返回单个订阅的contactprint(engine.get_ticks(["152791428.SEHK","332623976.SEHK"],use_df = True)) #返回订阅的tick# 委托下单,返回订单号from vnpy.trader.constant import OrderTypevt_orderid = engine.buy(vt_symbol = "12087792.IDEALPRO",price = 1.20, volume = 50000, order_type = OrderType.LIMIT)print(vt_orderid)# 按照订单号查询委托状态,这里也可以用get_orders, 查询订单号队列sleep(10)print(engine.get_order(vt_orderid)) #print(engine.get_trades(vt_orderid, use_df= True))# 再次查询持仓print(engine.get_all_positions(use_df = True))# 使用算法交易引擎from vnpy.app.algo_trading import AlgoTradingAppengine.main_engine.add_app(AlgoTradingApp) #加入appAlgoInstance = engine.main_engine.get_engine("AlgoTrading") #为了方便,这里直接用返回的AlgoInstance# 创建算法交易的要执行交易内容, 这个可以复制 algo_trading_setting.json的内容,这里这里策略是,100秒内每隔10秒下单一次,每次购买10000AlgotradingDict1 = {        "template_name": "TwapAlgo",        "vt_symbol": "12087792.IDEALPRO",        "direction": "多",        "price": 1.0985,        "volume": 10000.0,        "time": 100,        "interval": 10,        "offset": ""    }AlgoInstance.start_algo(setting = AlgotradingDict1)# 再次查询持仓print(engine.get_all_positions(use_df = True))

以上是"如何使用Jupyter NoteBook进行IB查询和交易以及使用算法交易"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

0