Flow
策略编写四步
以下为 zipline 策略的标准结构。
| 步骤 | 函数/方法 | 作用 |
|---|---|---|
| 1. 初始化 | initialize(context) | 设置初始变量与目标资产 |
| 2. 逐事件处理 | handle_data(context, data) | 每个交易日计算信号 |
| 3. 下单 | order_target(asset, shares) | 调整到目标仓位 |
| 4. 记录 | record(...) | 保存值供后续分析 |
说明:data.history() 用于取历史价格计算指标(如均线),需保持参数一致。
Code
双均线策略示例
官方 README 的双均线策略:短期均线上穿长期均线时买入,下穿时清仓。
from zipline.api import order_target, record, symbol
def initialize(context):
context.i = 0
context.asset = symbol('AAPL')
def handle_data(context, data):
context.i += 1
if context.i < 300:
return
short_mavg = data.history(context.asset, 'price',
bar_count=100, frequency="1d").mean()
long_mavg = data.history(context.asset, 'price',
bar_count=300, frequency="1d").mean()
if short_mavg > long_mavg:
order_target(context.asset, 100)
elif short_mavg < long_mavg:
order_target(context.asset, 0)
record(AAPL=data.current(context.asset, 'price'),
short_mavg=short_mavg, long_mavg=long_mavg)边界:回测结果仅代表历史表现,不构成收益保证或投资建议。