3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 JoinQuant(聚宽)平台中,handle_data(context, data) 函数本身的参数中并没有用于设置日线级别还是分钟级别的参数。它的运行频率是由您在网页端的回测/模拟交易配置界面中设置的。
handle_data 的调用频率完全取决于您在启动回测时选择的**“运行频率”**:
handle_data 就会在每个交易日调用一次(通常在 9:30 左右触发,具体取决于底层撮合机制)。此时传入的 data 是前一天的日线数据。handle_data 就会在交易时间的每一分钟调用一次(每天 240 次)。此时传入的 data 是上一分钟的分钟线数据。虽然 handle_data 可以通过界面设置频率,但聚宽官方目前更推荐使用定时运行函数(如 run_daily、run_weekly、run_monthly)来替代 handle_data。使用定时运行函数可以让您在代码中精确控制策略的执行时间,而不需要依赖全局的频率设置。
示例:使用 run_daily 替代 handle_data
def initialize(context):
# 每天 9:30 运行一次(相当于按天回测的 handle_data)
run_daily(my_trade_logic, time='09:30')
# 如果你想每分钟运行一次,可以这样设置(前提是网页端频率必须选“按分钟”):
# run_daily(my_trade_logic, time='every_bar')
def my_trade_logic(context):
# 在这里编写你的交易逻辑
# 注意:定时运行函数只接受 context 参数,不再提供 data 参数
# 你可以使用 get_price 或 attribute_history 来获取数据
pass
handle_data 的频率:在网页右上角的回测设置中选择“每天”或“每分钟”。initialize 中使用 run_daily 等定时函数来显式指定运行时间,这样代码的意图更清晰,且灵活性更高。注意,如果在一个策略中同时使用了 run_daily 和 handle_data,可能会导致逻辑混乱,官方建议不要在同一个策略中混用。