3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 ptrade 量化交易平台中,get_history 函数是获取历史 K 线数据的核心接口。对于高频或日内交易策略,准确获取一分钟线及多分钟周期数据至关重要。以下是 get_history 在处理分钟级数据时的取值逻辑详解:
frequency)get_history 的 frequency 参数支持多种分钟级别的周期,包括:
1m:1分钟线5m:5分钟线15m:15分钟线30m:30分钟线60m:60分钟线120m:120分钟线count):指定返回的 K 线根数。例如 count=10 且 frequency='1m',则返回最近的 10 根 1 分钟 K 线。include):
include=False(默认):不包含当前正在运行、尚未结束的周期数据。例如在 10:05:30 调用获取 5 分钟线,返回的最新一根 K 线是 09:55-10:00 的数据。include=True:包含当前未结束的周期数据。这在需要最新动态计算指标时非常有用。fill):仅在交易模块有效。当获取不到某一时刻的分钟数据时:
'nan'(默认):用 NaN 填充缺失数据。'pre':用上一分钟的数据进行填充。volume == 0 来过滤停牌期间的分钟线。def initialize(context):
g.security = '600570.SS'
set_universe(g.security)
def handle_data(context, data):
# 获取过去10分钟的1分钟线数据(不包含当前分钟)
his_1m = get_history(10, frequency='1m', field=['close', 'volume'], security_list=g.security, include=False)
log.info('1分钟线收盘价:\n%s' % his_1m['close'])
# 获取过去5根5分钟线数据(包含当前未结束的5分钟周期)
his_5m = get_history(5, frequency='5m', field=['close', 'high', 'low'], security_list=g.security, include=True)
log.info('5分钟线数据:\n%s' % his_5m)
get_history 接口不支持多线程同时调用。在 run_daily 或 run_interval 等定时函数中,不要与 handle_data 等框架模块在同一时刻调用 get_history,否则可能会偶现获取数据为空的现象。DataFrame、Panel 或 dict。建议在策略中明确指定 is_dict=True 以获得更快的取数速度和一致的字典格式返回。