这篇文章主要介绍如何使用Jupyter NoteBook进行IB查询和交易以及使用算法交易,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
成都创新互联长期为超过千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为即墨企业提供专业的成都做网站、成都网站设计、成都外贸网站建设,即墨网站改版等技术服务。拥有十余年丰富建站经验和众多成功案例,为您定制开发。
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_trading from vnpy.gateway.ib import IbGateway from time import sleep # 连接到服务器 setting = { "TWS地址": "127.0.0.1", "TWS端口": 7497, "客户号":5 #每个链接用一个独立的链接号,一个IBAPI支持32个来同时链接 } engine = init_cli_trading([IbGateway]) #返回Script_engine 示例,并且给main_engine注册了gateway engine.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 Exchange from 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)) #返回所有已经订阅的contact print(engine.get_contract("152791428.SEHK",use_df = True)) #返回单个订阅的contact print(engine.get_ticks(["152791428.SEHK","332623976.SEHK"],use_df = True)) #返回订阅的tick # 委托下单,返回订单号 from vnpy.trader.constant import OrderType vt_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 AlgoTradingApp engine.main_engine.add_app(AlgoTradingApp) #加入app AlgoInstance = engine.main_engine.get_engine("AlgoTrading") #为了方便,这里直接用返回的AlgoInstance # 创建算法交易的要执行交易内容, 这个可以复制 algo_trading_setting.json的内容,这里这里策略是,100秒内每隔10秒下单一次,每次购买10000 AlgotradingDict1 = { "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查询和交易以及使用算法交易”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注创新互联行业资讯频道!