快速入门
由jliang创建,最终由jliang 被浏览 28 用户
快速跑通一个策略
新建策略
打开 编写策略 > 点击左侧 +
AIStudio 新建策略 > 点击模版 可视化线性策略 > 回车确认
运行回测
点击右上角 全部运行
,运行回测,查看回测绩效
部署模拟交易
点击右上角 提交模拟
> 提交任务 确定
> 模拟交易任务页面上点击 查看模拟交易详情
> 查看模拟交易运行情况
查看策略信号
打开 微信 > 打开关注的公众号 BigQuant
> 确认收到任务运行后的信号推送 > 查看信号详情。为了避免因微信服务号折叠而漏收消息,请参考下图三给 BigQuant 开启 置顶服务号
如果没有收到信号,进入 我的策略 > 确认策略开启了微信调仓提醒
交易
一个简单的买入并持有的策略
从最简单的开始:买入股票并持有
def initialize(context):
"""策略初始化函数,只运行一次"""
# 确定定交易标的
context.instr = "600900.SH"
def handle_data(context, data):
"""策略K线处理函数,每个单位时间调用一次。日频回测时即每日调用一次,可获取到截止当日的历史K线数据"""
# 获取持仓,若持仓量为 0 则买入 1000 股
if context.get_position(context.instr).current_qty == 0:
print(f"handle_data({data.current_dt}) buy {context.instr}")
context.order(context.instr, 1000)
M.bigtrader...
这个策略里,我们在策略初始化函数 initialized 里指定了交易标的 “600900.SH“ ,然后在 handle_data 回调函数里,获取我们获取持仓,若持仓量为0则下单买入1000股。更多获取策略资金持仓和下单等接口,详见交易引擎接口文档。
一个实用的均线策略
def initialize(context):
"""策略初始化函数,只运行一次"""
# 确定定交易标的
context.instr = "600900.SH"
def handle_data(context, data):
"""策略K线处理函数,每个单位时间调用一次。日频回测时即每日调用一次,可获取到截止当日的历史K线数据"""
# 股票代码
stock_code = context.instr
# 获取过去五天的历史价格和5日均价
hist = data.history(stock_code, "close", 5, "1d")
average_price = round(hist["close"][-5:].mean(), 2)
# 获取当前价格
current_price = data.current(stock_code, "close")
# 如果上一时间点价格高出五天平均价1%, 则全仓买入
if current_price > average_price * 1.01:
context.order_target_percent(stock_code, 1.0)
print(f"{data.current_dt} buy {stock_code}")
# 如果上一时间点价格低于五天平均价, 则空仓卖出
elif current_price < average_price and context.get_position(stock_code).current_qty > 0:
context.order_target(stock_code, 0)
print(f"{data.current_dt} sell {stock_code}")
这个策略里,我们获取策略的前5日均价和当前价格,如果是突破5日均价的1.1倍则全仓买入,如果是跌破5日均价则全部卖出。
\
交易引擎流程框架
图:框架流程,体现了频率、回调函数等
图:执行,体现的时间周期,回测/模拟交易的图
数据
查询单表
查询A股2024年1月全市场行情数据
import dai
df = dai.query("""
SELECT date, instrument, open, high, low, close, volume
FROM cn_stock_bar1d
WHERE date BETWEEN '2024-01-01' AND '2024-01-31'
ORDER BY date, instrument
"""
).df()
- dai 数据查询和计算,简单、高性能
- 数据表 股票后复权日行情(cn_stock_bar1d)
.query("SELECT ..")
,执行 SQL 查询.df()
:返回数据转为 pandas DataFrame
查询多表
查询股票收盘价和ST状态
import dai
df = dai.query("""
SELECT date, instrument, close, st_status
FROM cn_stock_bar1d
JOIN cn_stock_status USING(date, instrument)
WHERE date BETWEEN '2024-01-01' AND '2024-01-31'
ORDER BY date, instrument
"""
).df()
- 连接数据表 股票状态(cn_stock_status)
date
(日期)和instrument
(股票代码)是很多表的主键,这里用这两个做连接
计算因子
计算股票收盘价5日移动均值
import dai
df = dai.query("""
SELECT date, instrument, m_ta_ema(close, 5) AS ema5
FROM cn_stock_bar1d
WHERE date BETWEEN '2024-01-01' AND '2024-01-31'
ORDER BY date, instrument
"""
).df()
- dai内置了主要常用算子
- 一般情况下
m_
前缀的是时序算子(按股票代码分组,按时间排序,分组计算),c_
前缀的是截面计算(按日期分组,分组计算)
TODO 数据+策略
一个完整的策略,使用dai做因子向量化计算(动量因子???),在bigtrader中使用因子
DAI
AI建模
简单的多因子策略
AI建模
模块化与可视化
BigQuant平台
- QuantAgent:智能投研和量化策略开发 AI Agent,支持端到端的策略开发、回测和部署,让每个想法都可以并且更高效的实现为策略去验证和运行,适合所有用户
- AIStudio:专业AI与量化开发IDE,适合希望专业进阶的用户
- 策略社区:分享策略,学习代码,
- 学院:学习AI与量化知识,获得教学策略用于进一步研究
- 知识库:做最专业最全面的AI量化知识库,在学习知识的同时,可从这里获得大量的投资研报、论文和策略代码等
- 数据
- 因子
BigQuant Pro
BigQuant
- 数据
- 算力
- 算法
- 平台
\