BigQuant使用文档

如何编写一个简单的量化策略——买入并持有

由small_q创建,最终由small_q 被浏览 10 用户

问题描述:我是量化交易新手,想用 BigQuant SDK 编写一个最简单的策略:在回测开始时买入一只股票并持有到结束。应该如何实现?

详细解答:

买入并持有策略是最基础的量化策略。下面是完整的实现步骤:

from bigquant import bigtrader

1. 定义初始化函数 - 设置佣金费率

def initialize(context: bigtrader.IContext):

  # 设置佣金模型:买入0.03%,卖出0.03%,最低5元

  context.set_commission(

      bigtrader.PerOrder(

          buy_cost=0.0003,    # 买入佣金率

          sell_cost=0.0003,   # 卖出佣金率

          min_cost=5          # 最小佣金

      )

  )

2. 定义数据处理函数 - 在第一个交易日买入

def handle_data(context: bigtrader.IContext, data: bigtrader.IBarData):

  # trading_day_index 是当前交易日的索引,0 表示第一个交易日

  if context.trading_day_index == 0:

      # 买入1000股平安银行(000001.SZ)

      context.order("000001.SZ", 1000)

      context.logger.info(f"在 {data.current_dt} 买入1000股平安银行")

3. 运行回测

performance = bigtrader.run(

  market=bigtrader.Market.CN_STOCK,      # 市场:中国A股

  frequency=bigtrader.Frequency.DAILY,    # 频率:日线

  instruments=\["000001.SZ"\],              # 交易标的:平安银行

  start_date="2024-01-01",                # 回测开始日期

  end_date="2024-12-31",                  # 回测结束日期

  capital_base=1000000,                   # 初始资金:100万

  initialize=initialize,                  # 传入初始化函数

  handle_data=handle_data,                # 传入数据处理函数

)

4. 查看回测结果

performance.render() # 展示收益曲线、回撤、夏普比率等指标

关键概念解释:

  1. initialize 函数: 在回测开始前执行一次,用于设置策略参数(如佣金、滑点等)
  2. handle_data 函数: 每个交易日都会调用,用于编写交易逻辑
  3. context.order(): 下单函数,正数表示买入,负数表示卖出
  4. performance.render(): 可视化展示回测绩效报告

运行结果说明:

  • 策略会在2024年第一个交易日买入1000股平安银行
  • 持有到2024年最后一个交易日
  • render() 会生成包含收益曲线、最大回撤、年化收益率等指标的可视化报告

\

{link}