BigQuant SDK 本地编写一个简单的量化策略——买入并持有
由small_q创建,最终由bq1fuwkt 被浏览 18 用户
问题描述
我是量化交易新手,想用 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() # 展示收益曲线、回撤、夏普比率等指标
关键概念解释
- initialize 函数: 在回测开始前执行一次,用于设置策略参数(如佣金、滑点等)
- handle_data 函数: 每个交易日都会调用,用于编写交易逻辑
- context.order(): 下单函数,正数表示买入,负数表示卖出
- performance.render(): 可视化展示回测绩效报告
运行结果说明
- 策略会在2024年第一个交易日买入1000股平安银行
- 持有到2024年最后一个交易日
- render() 会生成包含收益曲线、最大回撤、年化收益率等指标的可视化报告
\