BigQuant使用文档

快速入门

由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()

查询多表

查询股票收盘价和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()

计算因子

计算股票收盘价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

  • 数据
  • 算力
  • 算法
  • 平台

\

标签

模拟交易交易信号
{link}