千家信息网

Jupyter Notebook怎么实现从IB接口历史数据获取及写入数据库、策略回测和实盘交易

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,本篇文章给大家分享的是有关Jupyter Notebook怎么实现从IB接口历史数据获取及写入数据库、策略回测和实盘交易,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话
千家信息网最后更新 2026年11月03日Jupyter Notebook怎么实现从IB接口历史数据获取及写入数据库、策略回测和实盘交易

本篇文章给大家分享的是有关Jupyter Notebook怎么实现从IB接口历史数据获取及写入数据库、策略回测和实盘交易,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

刚好有个同学问怎么实现IB盈透历史数据获取,和策略回测和实盘交易。想着熟悉vnpy2.0操作,就用Jupyter Notebook都是跑了一边。VNPY2.0的整体架构设计很有扩展性,而且调用也比起v1.0先进清晰很多,引擎加载调用非常方便。

讲讲注意点:

  1. IB盈透接口历史数据大多是要收费订阅的,如果收费会有报错信息提示,这里找个免费的作为使用。另外vnpy是按照最大6个月历史数据设计的。

  2. 数据库定义有个小坑,我是用mongodb的,在第一次填写 trader/setting.py中密码写错了,后面在trader/setting.py改发现怎么也改不好;原来当第一次维护后,配置会写入.vntrader/vt_setting,之后系统只会去.vntrader/vt_setting读取。去改vt_setting,而不是trader/setting.py。

  3. 使用CtaStrategyApp支持加入新策略,系统会自动输出json保持策略信息;所以第二次运行代码时候,会提示已经有了,不是问题。

  4. 我在代码里面把回测和实盘放在一次,如果直接跑下来可能会报错,建议跑实盘时候先注释的回测。

  5. 使用script_engine订阅历史数据是是默认从rqdata获取,vnpy v2.07 IB接口已经提供历史数据获取,这里创建HistoryRequest用main_engine来获取,

为了方便贴出来,改成.py代码格式,直接跑也没有问题。

from vnpy.app.script_trader import init_cli_tradingfrom vnpy.app.script_trader.cli import process_log_eventfrom vnpy.gateway.ib import IbGatewayfrom time import sleepfrom datetime import datetimeimport pandas as pd# 连接到服务器setting = {    "TWS地址": "127.0.0.1",    "TWS端口": 7497,    "客户号":8 #每个链接用一个独立的链接号,一个IBAPI支持32个来同时链接}engine = init_cli_trading([IbGateway]) #返回Script_engine 示例,并且给main_engine注册了gatewayengine.connect_gateway(setting, "IB") #链接# 查询资金 - 自动sleep(10)print("***查询资金和持仓***")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("12087792",Exchange.IDEALPRO) #创建行情订阅engine.main_engine.subscribe(req1,"IB")# 使用script_engine订阅历史数据是从rqdata获取,vnpy v2.07已经提供历史数据获取,这里创建HistoryRequest来获取,# 查询如果没有endtime,默认当前。返回历史数据输出到数据库和csv文件# 关于api更多信息可以参见 https://interactivebrokers.github.io/tws-api/historical_bars.htmlprint("***从IB读取历史数据, 返回历史数据输出到数据库和csv文件***")from vnpy.trader.object import HistoryRequestfrom vnpy.trader.object import Intervalstart = datetime.strptime('20190901', "%Y%m%d")historyreq = HistoryRequest(   symbol="12087792",   exchange=Exchange.IDEALPRO,   start=start,   interval=Interval.MINUTE)# # 读取历史数据,并把历史数据BarData放入数据库bardatalist = engine.main_engine.query_history(historyreq,"IB")from vnpy.trader.database import database_managerdatabase_manager.save_bar_data(bardatalist)# 把历史数据BarData输出到csvpd.DataFrame(bardatalist).to_csv("C:\Project\\"+ str(historyreq.symbol) + ".csv" , index=True, header=True)print("History data export to CSV")# # 参考backtesting.ipynb, 使用自带的双均线策略回测,10日上穿60日做多,否则反之print("***从数据库读取历史数据, 进行回测***")from vnpy.app.cta_strategy.backtesting import BacktestingEnginefrom vnpy.app.cta_strategy.strategies.double_ma_strategy import (   DoubleMaStrategy,)btengine = BacktestingEngine() #新建回测引擎btengine.set_parameters(    vt_symbol="12087792.IDEALPRO",    interval="1m",    start=datetime(2019, 9, 1),    end=datetime(2019, 10, 5),    rate = 0,    slippage=0.00005,    size=1000,    pricetick=0.00005,    capital=1_000_000,)btengine.add_strategy(DoubleMaStrategy, {"fast_window":10, "slow_window": 60})btengine.load_data()btengine.run_backtesting()df = btengine.calculate_result()btengine.calculate_statistics()btengine.show_chart()# 给script_engine载入双均线策略,实盘运行print("***从数据库读取准备数据, 实盘运行***")# 使用cta交易引擎from vnpy.app.cta_strategy import CtaStrategyAppfrom vnpy.app.cta_strategy.base import EVENT_CTA_LOGengine.event_engine.register(EVENT_CTA_LOG, process_log_event)cta_engine = engine.main_engine.add_app(CtaStrategyApp) #加入appcta_engine.init_engine()cta_engine.add_strategy("DoubleMaStrategy","DoubleMaStrategy_IB_12087792_v1", "12087792.IDEALPRO",{"fast_window":10, "slow_window": 50})sleep(10)cta_engine.init_strategy("DoubleMaStrategy_IB_12087792_v1")sleep(10)cta_engine.start_strategy("DoubleMaStrategy_IB_12087792_v1")

以上就是Jupyter Notebook怎么实现从IB接口历史数据获取及写入数据库、策略回测和实盘交易,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

数据 历史 历史数据 数据库 策略 订阅 接口 和实 交易 链接 查询 输出 代码 信息 引擎 更多 问题 运行 均线 文件 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 咖啡网 互联网络科技 深圳互联网络科技有限公司 互联网前沿科技 互联网科技公司介绍 四川狮子座互联网科技 海南购全球互联网科技 青岛中康互联网医疗科技有限公司 互联网科技创新服务 重庆互联网医院沙龙医盟信息科技 世界互联网科技公司市值排名 岳阳华臻互联网科技有限公司 广州市恰铎互联网科技有限公司 高科技互联网发展前景如何 互联网企业科技类企业如何做账 互联网营销推广黑科技 抖集互联网科技技术咨询 互联网科技职业技能培训学校 科技互联网公司两年变化 亚光科技低轨卫星互联网 互联网金融监管科技数据 碳银互联网科技有限公司 天扬科技互联网广告 互联网教育科技公司vipkid 互联网大会黑科技排名 浙江互联网科技研学营 亳州好赞互联网科技有限公司 卓翼科技产业互联网合作 上海互联网科技公司ppt 网互联网络科技
0