PTrade量化交易新手指南,还不知道如何获取历史行情数据?3分钟了解!
发布时间:7小时前阅读:16
PTrade量化交易新手指南,还不知道如何获取历史行情数据?3分钟了解!
在量化策略的开发过程中,历史数据是不可或缺的关键一环,在策略回测,因子挖掘、模型训练,策略优化中都需要用到历史行情信息。那么在PTrade量化系统中,如何正确使用get_history -函数获取历史行情数据?
历史行情信息的主要作用:
1.策略回测(实验室)
通过模拟历史交易计算胜率、回撤等指标,检验策略有效性,并需确保数据跨越完整的牛熊周期。
2.因子挖掘与模型训练(原材料)
利用历史数据构建技术指标、价量因子,并为机器学习模型提供训练样本,以挖掘具有统计显著性的市场规律。
3.策略优化与调优(试验场)
在历史数据中测试不同参数组合,确定最佳周期(如日线/分钟线)及入场出场逻辑。
4.风险管理与压力测试(抗压器)
模拟金融危机等极端行情下的表现,计算在险价值(VaR)和波动率,用于构建稳健的投资组合。
5.绩效归因与迭代(反馈机制)
区分收益来源(Alpha或Beta),识别策略的失效环境,并持续监控策略是否出现衰减。
核心警示:
需严格警惕过拟合(过度优化)、未来函数(使用未来信息)及幸存者偏差(忽略已退市标的)这三大陷阱,并确保数据清洗与复权处理到位。
一句话总结:历史行情是量化策略的“试验场”与“体检仪”,其价值在于通过严谨的回测发现问题,而非通过过度优化制造神话。
PTrade获取行情信息函数使用方法
get_history - 获取历史行情
get_history(count, frequency='1d', field='close', security_list=None, fq=None, include=False, fill='nan', is_dict=False)
使用场景
该函数仅在回测、交易、研究模块可用
函数说明
该函数用于获取最近N条历史行情K线数据。支持多股票、多行情字段获取。
注意事项:
该函数只能获取2005年后的数据。
针对停牌场景,我们没有跳过停牌的日期,无论对单只股票还是多只股票进行调用,时间轴均为二级市场交易日日历, 停牌时使用停牌前的数据填充,成交量为0,日K线可使用成交量为0的逻辑进行停牌日过滤。
证监会行业、聚源行业、概念板块、地域板块所对应标的的行情数据为非标准的交易所下发数据,是由数据源自行按照成分股分类规则进行计算的,存在与三方数据源不一致的情况。如用户需要在策略中使用,应自行评估该数据的合理性。
该函数与get_price函数不支持多线程同时调用,即在run_daily或run_interval等函数中不要与handle_data等框架模块同一时刻调用get_history或get_price函数,否则会偶现获取数据为空的现象
参数
Count:K线数量,大于0,返回指定数量的K线行情;必填参数;入参类型:int;
frequency:K线周期,现有支持1分钟线(1m)、5分钟线(5m)、15分钟线(15m)、30分钟线(30m)、60分钟线(60m)、120分钟线(120m)、日线(1d)、周线(1w/weekly)、月线(mo/monthly)、季度线(1q/quarter)和年线(1y/yearly)频率的数据;选填参数,默认为'1d';入参类型:str;
field:指明数据结果集中所支持输出的行情字段;选填参数,默认为['open','high','low','close','volume','money','price'];入参类型:list[str,str]或str;输出字段包括:
open -- 开盘价,字段返回类型:numpy.float64;
high -- 最高价,字段返回类型:numpy.float64;
low --最低价,字段返回类型:numpy.float64;
close -- 收盘价,字段返回类型:numpy.float64;
volume -- 交易量,字段返回类型:numpy.float64;
money -- 交易金额,字段返回类型:numpy.float64;
price -- 最新价,字段返回类型:numpy.float64;
is_open -- 是否开盘,字段返回类型:numpy.int64(仅日线返回);
preclose -- 昨收盘价,字段返回类型:numpy.float64(仅日线返回);
high_limit -- 涨停价,字段返回类型:numpy.float64(仅日线返回);
low_limit -- 跌停价,字段返回类型:numpy.float64(仅日线返回);
unlimited -- 判断查询日是否是无涨跌停限制(1:该日无涨跌停限制;0:该日不是无涨跌停限制),字段返回类型:numpy.int64(仅日线返回);
security_list:要获取数据的股票列表;选填参数,None表示在上下文中的universe中选中的所有股票;入参类型:list[str,str]或str;
fq:数据复权选项,支持包括,pre-前复权,post-后复权,dypre-动态前复权,None-不复权;选填参数,默认为None;入参类型:str;
include:是否包含当前周期,True -包含,False-不包含;选填参数,默认为False;入参类型:bool;
fill:行情获取不到某一时刻的分钟数据时,是否用上一分钟的数据进行填充该时刻数据,'pre'-用上一分钟数据填充,'nan'-NaN进行填充(仅交易有效);选填参数,默认为'nan';入参类型:str;
is_dict:返回是否是字典(dict)格式{str: array()},True -是,False-不是;选填参数,默认为False;返回为字典格式取数速度相对较快;入参类型:bool;
返回
dict类型
正常返回dict类型数据,异常时返回None(NoneType)。
OrderedDict([(股票代码(str), array([日期时间(numpy.int64), 开盘价(numpy.float64), 最高价(numpy.float64), 最低价(numpy.float64), 收盘价(numpy.float64), 成交量(numpy.float64), 成交额(numpy.float64), 最新价(numpy.float64)]]))])
OrderedDict([('xxxxxx.SZ', array([(202309220931, 11.03, 11.08, 11.03, 11.07, 2289400.0, 25302018.0, 11.07),... ]))])
非dict类型
(python3.5、python3.11版本均支持)第一种返回数据:
当获取单支股票(单只股票必须为字符串类型security_list='xxxxxx.SS',不能用security_list=['600570.SS'])的时候,无论行情字段field入参单个或多个,返回的都是pandas.DataFrame对象,行索引是datetime.datetime对象,列索引是行情字段,为str类型。比如:
如果当前时间是2017-04-18,get_history(5, '1d', 'open', 'xxxxxx.SS', fq=None, include=False)将返回:
| open | |
| 2017-04-11 | xx(对应股票价格) |
| 2017-04-12 | xx(对应股票价格) |
| 2017-04-13 | xx(对应股票价格) |
| 2017-04-14 | xx(对应股票价格) |
| 2017-04-17 | xx(对应股票价格) |
篇幅所限,完整的PTrade量化系统策略开发文档,PTrade量化软件申请等问题,欢迎评论区留言交流!
智能交易可能因系统、通讯等原因无法正常使用或无法按照您的设置价格发出委托指令及完成成交,最终成交价格及数量以交易所、登记结算机构等记录为准。请密切关注交易回报情况及条件单设置情况。以上信息仅供参考,不构成对委托指令成交的承诺,不构成投资建议,不构成收益或避免损失的承诺。请您务必仔细阅读相关风险提示及协议,了解各类智能交易功能的区别及不同风险,审慎决策是否使用相关功能。
投资有风险,入市需谨慎!
我司30多年发展历史上市券商平台,可提供:
1.QMT/PTrade量化系统,免费使用,支持券商极速交易服务配合使用;
2.现在新开户交易佣金优惠,股票/ETF/可转债/港股通/债券通用质押式回购逆回购等 惊喜费率;
3.支持创业板/科创板/北交所/港股通/融资融券等业务权限开通;
4.正在进行AI投ETF/选好股/选好基金等AI投顾工具30天免费体验活动;
5.智能条件单,网格交易,预约打新等功能支持;
6.新客理财领取(限额),赠送Level-2十档行情(佣金宝APP)活动进行中;
7.支持底仓增强策略,内置多种交易策略,适合长期持仓用户做自动日内回转交易;
8.88开头,可选数字靓号开户。
更多需求了解,欢迎点击文章上方“问一问”,或文章下方微信+电话,直接联系沟通需求!

温馨提示:投资有风险,选择需谨慎。
-
叩富问财是一个什么平台?
2026-08-10 15:10
-
国泰灵犀APP3.0正式上线啦!亮点功能都有哪些?
2026-08-10 15:10
-
交易所关掉量化专线通道,对普通投资者到底是好是坏?
2026-08-10 15:10


问一问

+微信
分享该文章
