当前位置: 首页 > news >正文

实盘回测一体的期货策略开发:tqsdk获取历史数据并回测,附python代码

原创内容第969篇,专注AGI+,AI量化投资、个人成长与财富自由。

星球好多同学希望说说实盘,我们就从实盘开始吧。

我们选择tqsdk给大家讲解,tqsdk支持免费注册,使用模拟账户,历史和实时数据,方便我们回测、实盘一体化的策略开发。

需要注册一个账户即可,默认就有一个模拟账户。

然后统一访问的api接口:

api = TqApi(auth=TqAuth(username, password))

然后就可以访问数据:

01 数据篇

查询所有的主连合约,一共85个:

图片

查询上交所所有有股票列表,一共2421支:

图片

查询上交所所有基金列表,一共970支:

图片

下面我们来获取时序数据——螺纹钢主连合约15分钟线(500个数据)# 定义主连合约代码(格式:KQ.m@{交易所}.{品种})

symbol = "KQ.m@SHFE.rb"  # 螺纹钢主连示例# 其他常见主连代码:#   KQ.m@DCE.m  -> 豆粕主连#   KQ.m@CFFEX.IF -> 沪深300股指主连#   KQ.m@SHFE.au -> 黄金主连
# 请求分钟线数据(以15分钟线为例)df = api.get_kline_serial(    symbol=symbol,    duration_seconds=60 * 15,  # 周期:15分钟(可修改为60=1分钟)    data_length=500,          # 获取K线数量)df['datetime'] = pd.to_datetime(df['datetime'], unit='ns')  # 毫秒转datetimedf.set_index('datetime', inplace=True)  df

图片

图片

使用tqsdk,我们不需要去管理数据,可以按需要获取数据,这是非常方便的。

另外,tqsdk还是回测功能,真正做到策略实盘和回测一体。

02 回测篇

在30分钟线上的回测——收盘价大于均线时做多,小于均线时平仓:

from datetime import datefrom tqsdk import TqApi, TqAuth, TqBacktest, TargetPosTask
'''如果当前价格大于5分钟K线的MA15则开多仓如果小于则平仓回测从 2018-05-01 到 2018-10-01'''# 在创建 api 实例时传入 TqBacktest 就会进入回测模式#api = TqApi(backtest=TqBacktest(start_dt=date(2018, 5, 1), end_dt=date(2018, 10, 1)), auth=TqAuth("快期账户", "账户密码"))api = TqApi(backtest=TqBacktest(start_dt=date(2018, 5, 1), end_dt=date(2018, 10, 1)), auth=TqAuth(username, password))api# 获得 m1901 5分钟K线的引用klines = api.get_kline_serial("DCE.m1901", 30* 60, data_length=15)# 创建 m1901 的目标持仓 task,该 task 负责调整 m1901 的仓位到指定的目标仓位target_pos = TargetPosTask(api, "DCE.m1901")
while True:    api.wait_update()    if api.is_changing(klines):        ma = sum(klines.close.iloc[-15:]) / 15        #print("最新价", klines.close.iloc[-1], "MA", ma)        if klines.close.iloc[-1] > ma:            #print("最新价大于MA: 目标多头5手")            # 设置目标持仓为多头5手            target_pos.set_target_volume(5)        elif klines.close.iloc[-1] < ma:            #print("最新价小于MA: 目标空仓")            # 设置目标持仓为空仓            target_pos.set_target_volume(0)

图片

图片

点击 “查看原文”,直接访问策略集合。

扩展  •  历史文章   

EarnMore(赚得更多)基于RL的投资组合管理框架:一致的股票表示,可定制股票池管理。(附论文+代码)

年化收益200%+的策略集 | 实时板块资金热力图 「aitrader 5.0系统代码发布」

机器学习驱动的策略开发通过流程 | 普通人阶层跃迁的可能路径?

年化30.24%,最大回撤19%,综合动量多因子评分策略再升级(python代码+数据)

三秒钟创建一个年化28%,夏普比1.25的策略(python系统已开放源代码下载)

会员专属策略可以直接下载了,多个十年年化30+%策略集|polars重构因子引擎(代码+数据下载)

6年年化收益46%,最大回撤率为16%的策略(附python代码)

http://www.dtcms.com/a/330259.html

相关文章:

  • java循环分页查询数据,任何把查询到的数据,分批处理,多线程提交到数据库清洗数据
  • 第十二节:粒子系统:海量点渲染
  • 远程办公,如何轻松访问公司内网?出差在外也能远程控制局域网内电脑、外网直接连接到指定端口应用
  • 基于通用优化软件GAMS的数学建模和优化分析(GAMS安装和介绍、GAMS程序编写、GAMS程序调试)
  • Ubuntu22.04轻松安装Qt与OpenCV库
  • 【力扣】面试经典150题总结02-双指针、滑动窗口
  • Kubernetes 网络排错
  • 《嵌入式Linux应用编程(四):Linux Framebuffer图形编程》
  • 数学建模算法-day[17]
  • 【Spring Ai框架】
  • CMake笔记:配置(Configure)、生成(Generate)和构建(Build)
  • 软件架构重构:从混沌到有序的系统性演进
  • 第6节 torch.nn介绍
  • 什么是脏读、幻读、不可重复读?
  • linux编程----文件(framebuffer)
  • 正则表达式解析(三)
  • 方法论基础。
  • 与Deepseek对话了解无线电通信知识
  • 自动曝光算法参考
  • Linux Framebuffer(帧缓冲)与基本 UI 绘制技术
  • GitHub宕机时的协作方案
  • 力扣 hot100 Day72
  • Transformer开端
  • 有效涂色问题-二维dp
  • C++进阶之lambda三种回调方式性能差异(四百二十七)
  • 【13】Transformers快速入门:Transformers 分词器 (Tokenizer) 实战?
  • 哈希表之两个数组的交集(leetcode349)
  • 智能合约开发全流程实战指南
  • 【LeetCode】4. 寻找两个正序数组的中位数
  • 芯伯乐300kHz降压DC/DC转换器XBL4005:4.5V~40V宽电压范围,5A大电流高效输出