Ptrade获取L2逐笔数据,免费,券商提供

本月初国金的Ptrade做了一次大版本的升级,内置的python版本从老旧的python3.5一下子升级到了python3.11,并且还发现居然可以免费使用L2逐笔数据,分时逐笔委托队列等高频毫秒级的数据

Ptrade接口文档已更新:Ptrade API文档

Python 3.5是2015 年发布,Python 3.11是2022 年发布,性能上来说是有很大的提升,尤其对做回测和高频策略。
如果本身策略很简单或者日线交易的,影响可以忽略不计。
不过这个升级并不是个人可选的,只要你的Ptrade的券商升级了,就只能使用升级后的版本接口格式,旧代码需要做的修改来适配。

性能对比示例(Python 3.5 vs 3.11) By 豆包

以下是部分操作在 Python 3.5 和 3.11 中的性能对比(仅供参考):

操作场景Python 3.5 耗时Python 3.11 耗时提升比例
循环遍历 100 万次0.25s0.15s~40%
异常抛出 / 捕获 100 万次1.2s0.12s~90%
字典查找 100 万次0.18s0.12s~33%
f-strings 格式化 100 万次0.22s0.1s~55%

并且相应的第三方库版本亦做了升级。

接口变动

影响比较大的是pandas在 Python3.11 中,Pandas已不再支持Panel格式。pandas里的Pannel类型是用于存储三维或以上的矩阵数据。

而升级后就不支持之前的多维行情数据格式。但笔者觉得现在更加统一简单了。以前不同入参,有时候返回的是dataframe,有时候返回的是panel,比较混乱。现在统一返回的dataframe. (或者dict,可以自己设定)

影响的API有get_history,get_price ,get_individual_transaction ,get_fundamentals等。

比如通过get_history获取的日线数据:

count = 10
code_list = ['000695.SZ','001367.SZ']
df = get_history(count, frequency='1d', field=['open','close'], security_list=code_list, fq=None, include=False, fill='nan',is_dict=False)
print(type(df))
print(df)

返回的dataframe数据格式如下:

<class 'pandas.core.frame.DataFrame'>

			   code   open  close
2025-05-15  000695.SZ    NaN    NaN
2025-05-16  000695.SZ    NaN    NaN
2025-05-19  000695.SZ  10.34  10.34
2025-05-20  000695.SZ  11.37  11.37
2025-05-21  000695.SZ  12.51  12.51
2025-05-22  000695.SZ  13.76  13.76
2025-05-09  001367.SZ  29.89  29.58
2025-05-12  001367.SZ  29.70  29.60
2025-05-13  001367.SZ  30.11  29.96
2025-05-14  001367.SZ  29.96  29.83
2025-05-15  001367.SZ  29.80  30.18
2025-05-16  001367.SZ  30.13  30.39
2025-05-19  001367.SZ  30.46  30.01
2025-05-20  001367.SZ  20.25  20.08
2025-05-21  001367.SZ  20.05  20.70
2025-05-22  001367.SZ  20.98  22.77

如果要提取 000695.SZ的数据,只需要

df[df['code']=='000695.SZ']

就可以了。

           code        open  close
2025-05-09  001367.SZ  29.89  29.58
2025-05-12  001367.SZ  29.70  29.60
2025-05-13  001367.SZ  30.11  29.96
2025-05-14  001367.SZ  29.96  29.83
2025-05-15  001367.SZ  29.80  30.18
2025-05-16  001367.SZ  30.13  30.39
2025-05-19  001367.SZ  30.46  30.01
2025-05-20  001367.SZ  20.25  20.08
2025-05-21  001367.SZ  20.05  20.70
2025-05-22  001367.SZ  20.98  22.77

上面的dataframe提取收盘价或者开盘价,则

# 收盘价
df[df['code']=='001367.SZ']['close']
# 开盘价
df[df['code']=='001367.SZ']['open']

比如使用收盘价取 计算MACD:

# 计算 MACD 值
def MACD(series):
    ema_short = series.ewm(span=12).mean()
    ema_long = series.ewm(span=26).mean()
    macd_series = ema_short - ema_long
    return macd_series.iloc[-1]

close_price_series = df[df['code']=='001367.SZ']['close']
macd_val = MACD(close_price_series)

同理get_price,get_individual_transaction ,get_fundamentals与之类似。

并且在get_histroy的入参里面,多了一个is_dict的参数,默认是False,返回的是dataframe数据,如果设置为True,则返回的dict数据。

返回的有序字典(OrderDict)类型数据:(省略了部分类型)

{'001367.SZ', array([(20250509, 29.89, 29.58), (20250512, 29.7 , 29.6 ),
       (20250513, 30.11, 29.96), (20250514, 29.96, 29.83),
       (20250515, 29.8 , 30.18), (20250516, 30.13, 30.39),
       (20250519, 30.46, 30.01), (20250520, 20.25, 20.08),
       (20250521, 20.05, 20.7 ), (20250522, 20.98, 22.77)]
}

但感觉这种列表形式下,提取数据反而没有使用dataframe方便和直观,它获取数据时需要用下标提取。

但官网说,返回dict类型数据的速度比DataFrame,Panel类型数据有大幅提升,对速度有要求的,建议使用is_dict=True 读取上述数据格式。

获取L2逐笔数据

L2逐笔委托数据接口函数
get_individual_entrust(stocks=None, data_count=50, start_pos=0, search_direction=1, is_dict=False)

参数:

data_count: 数据条数,默认为50,最大为200(int);

start_pos: 起始位置,默认为0(int);

虽然一次只能获取200条,但配合start_pos游标可遍历获取全部数据。

示例代码:

获取股票001367.SZ封涨停时的最新的逐笔委托行情。

code_list = ['001367.SZ']
df = get_individual_entrust(code_list)
print(df[['business_time','hq_px','business_amount','order_no']])

输出数据如下,因数据列太多,为了美观只取了其中的4列: 时间戳,委托价格,委托数量,委托编号

因为当前已经是收盘状态,它是从14:59:57.020往前取50条数据

    business_time(时间戳)  hq_px(委托价格)  business_amount(委托数量)  order_no(委托编号)
  20250523145702150  24.60              100  32493957
  20250523145714840  24.95              100  32505581
  20250523145718430  25.05             1000  32509041
  20250523145719840  25.05             1000  32510350
  20250523145721750  25.05              400  32512000
  20250523145727610  25.05              200  32517007
  20250523145730270  25.05              400  32519085
  20250523145730330  25.04             1600  32519133
  20250523145732330  25.05             2900  32520779
  20250523145740780  25.05              500  32527204
  20250523145743550  25.05              400  32529290
  20250523145743810  25.05              200  32529474
  20250523145749460  25.05             4300  32533295
  20250523145749910  25.05             1000  32533630
  20250523145749960  25.05              300  32533666
# 省略若干.....
  20250523145926790  25.05              100  32589496
  20250523145927480  25.05             1200  32589844
  20250523145936090  25.05              200  32594134
  20250523145946600  25.05              300  32601758
  20250523145946800  25.05            49100  32601865
  20250523145950800  25.05            36800  32607381
  20250523145953780  25.05            55200  32611265
  20250523145954240  25.05              500  32611713
  20250523145956830  25.05            55300  32614479
  20250523145957020  25.04             8500  32614683

可以看到上面的有些1秒内有多个的委托单,每单的委托量和委托编号。

逐笔成交

同理,L2的逐笔成交数据函数的用法一样,但返回字段不同,成交的时候有成交方向,可以通过程序计算资金流入或流出。

get_individual_transaction(stocks=None, data_count=50, start_pos=0, search_direction=1, is_dict=False)

同样用上面的股票例子获取到的数据如下:

	business_time      hq_px         business_amount   business_direction
   20250523145648440   0.00             2500                   1
   20250523145648970   0.00             3200                   1
   20250523145649300   0.00              100                   1
   20250523145649370   0.00              900                   1
   20250523145649880   0.00             1800                   1
   20250523145650150   0.00              800                   1
   20250523145650360   0.00              200                   1
   20250523145650400   0.00              500                   1
   20250523145650420   0.00              100                   1
   20250523145652050   0.00              800                   1
# 省略若干.....
  20250523145659220   0.00            24100                   1
  20250523145659550   0.00              700                   1
  20250523145659600   0.00              400                   1
  20250523150000000  25.05              100                   0
  20250523150000000  25.05              100                   0
  20250523150000000  25.05             1600                   0
  20250523150000000  25.05              800                   0
  20250523150000000  25.05             1730                   0
  20250523150000000  25.05              670                   0
  20250523150000000  25.05             2430                   0
  20250523150000000  25.05             1200                   0
  20250523150000000  25.05             9270                   0
  20250523150000000  25.05              148                   0
  20250523150000000  25.05              100                   0
  20250523150000000  25.05              200                   0
  20250523150000000  25.05             1000                   0
  20250523150000000  25.05             2000                   0

business_direction成交方向,0是卖出,1是买入。

获取分时成交
get_tick_direction(symbols=None, query_date=0, start_pos=0, search_direction=1, data_count=50, is_dict=False)

这个分时成交可获取到 当前和历史某个毫秒下,那一笔总成交量下有多少个笔,比如用上面的涨停股001367.SZ做示例,

最后一刻3点的时候,成交了21348股,里面共有14笔成交。

	 time_stamp  		hq_px  		business_amount  business_count
  20250523143721000  25.05              100               1
  20250523143724000  25.05              200               1
  20250523143745000  25.05              444               1
  20250523143809000  25.05            10000               2
  20250523144024000  25.05              100               1
  20250523144048000  25.05             1500               1
  20250523144106000  25.05              300               1
  20250523144112000  25.05            11692               2
  20250523144124000  25.05              100               1
  20250523144142000  25.05              100               1
  20250523144157000  25.05              100               1
  20250523144200000  25.05             2360               1
# 省略若干.....
  20250523145415000  25.05             1381               1
  20250523145421000  25.05              480               1
  20250523145439000  25.05              100               1
  20250523145451000  25.05             1753               1
  20250523145521000  25.05             5384               3
  20250523145539000  25.05             3600               2
  20250523145557000  25.05             1000               1
  20250523145609000  25.05              400               2
  20250523145615000  25.05              100               1
  20250523150000000  25.05            21348              14
get_gear_price 获取当前时刻的逐笔委托队列

这个函数的功能:获取委买/卖1 至 委买/卖10的价格与委托量,但现在发现亦可以获取到委托1档下逐笔委托队列。

比如当前的股票是涨停,你下了一笔订单有8888手,那么这个函数可以获取当前委1档下的委托队列(前50名),比如下面的数据,可以看到你的8888手排在第9个委托队列,还有前后的单子的逐笔数量。

{'bid_grp': {1: [13.68, 15225900, 4905, {1: 33200, 2: 104800, 3: 1000, 4: 100, 5: 51800, 6: 6300, 7: 777800, 8: 184000, 9: 8888, 10: 100, 11: 600, 12: 141800, 13: 100, 14: 141800, 15: 2700, 
16: 900, 17: 58600, 18: 2900, 19: 800, 20: 133800, 21: 2800, 22: 900, 23: 2900, 24: 800, 25: 400, 26: 400, 27: 48200, 28: 51800, 29: 99400, 30: 26600, 31: 81800, 32: 493000, 33: 427300, 34: 27700, 35: 2800, 36: 460500, 
37: 170200, 38: 166500, 39: 24100, 40: 800, 41: 29300, 42: 500, 43: 500, 44: 500, 45: 2800, 46: 1300, 47: 61700, 48: 27000, 49: 500, 50: 78900}], 
2: [13.67, 30200, 32], 
3: [13.66, 11100, 16], 
4: [13.65, 134400, 11], 
5: [13.64, 8500, 7], 
6: [13.63, 1000, 3], 
7: [13.62, 200, 2], 
8: [13.6, 7300, 17], 
9: [13.59, 600, 2], 
10: [13.58, 10700, 7]}, 

 # 因为是涨停,所以委卖是空的,挂单就立马成交,委托队列是空的
'offer_grp': {1: [0.0, 0, 0, {}], 
2: [0.0, 0, 0], 
3: [0.0, 0, 0], 
4: [0.0, 0, 0], 
5: [0.0, 0, 0], 
6: [0.0, 0, 0], 
7: [0.0, 0, 0], 
8: [0.0, 0, 0], 
9: [0.0, 0, 0], 
10: [0.0, 0, 0]}
}

所以这次ptrade的升级除了python版本的升级,还带来了更多粒度的数据,有利于高频策略的开发。

时间关系,还有一些新功能的函数就等下次继续更新,记得点赞关注+收藏哦~

待续…

原创:Ptrade获取L2逐笔数据,免费,券商提供

<think>嗯,用户需要查找GEDI L2A数据的字典或者元信息,也就是数据字段的说明。首先,我得回忆一下GEDI卫星的数据结构。GEDI是NASA的一个地球观测项目,主要使用激光雷达测量地形和植被结构。L2A数据产品通常包含地表高程、植被高度等信息。用户可能正在处理这些数据,需要了解各个字段的含义才能正确解析和使用。 首先,用户可能需要官方文档数据字典。NASA的网站通常提供详细的数据产品说明。GEDI的数据存储在HDF5文件中,所以用户可能需要查看HDF5文件中的元数据。HDF5格式的文件可以通过工具如h5py或HDFView来查看结构。比如,用Python的h5py库打开文件,然后遍历各个数据集和属性,就能获取字段信息。 另外,用户可能不知道如何访问这些数据,或者官方文档的位置。我应该建议他们访问NASA的Earthdata网站,那里有GEDI的数据产品手册。比如,搜索“GEDI Level 2A Data Product User Guide”应该能找到详细的字段说明。同时,Earthdata的搜索工具可以直接查找数据集,并下载相关的文档。 还有,用户提到之前引用了读取L2A文件路径的代码,可能需要实际操作中的帮助。比如,如何用Python读取HDF5文件并列出所有数据集。这时候给出具体的代码示例会很有用,比如使用h5py库的File函数打开文件,然后递归遍历所有组和数据集,打印出它们的名称和属性。这样用户可以直接运行代码查看自己文件的结构。 可能用户还遇到了某些字段不理解的情况,需要更详细的参数解释。这时候建议他们查阅产品手册中的附录或者数据字典部分,通常这些部分会详细列出每个字段的名称、描述、单位等。此外,NASA的GitHub仓库可能有示例代码或元数据文件,用户可以参考。 需要注意的是,用户可能已经尝试过一些方法,但没找到正确的文档路径,所以需要明确的步骤指引。比如,访问Earthdata网站的具体步骤,或者使用HDFView工具的具体操作。另外,用户可能需要知道如何申请Earthdata的账户,因为部分数据可能需要登录才能下载。 最后,我应该确保提供的解决方案覆盖了不同的方法:官方文档、编程读取、工具查看,并给出相关链接和示例代码。这样用户可以根据自己的情况选择最适合的方法。同时,生成的相关问题可以帮助用户进一步解决可能遇到的后续问题,比如处理HDF5文件或理解特定参数。</think>### GEDI L2A数据元信息获取方法 根据您提供的引用内容[^1],GEDI L2A数据采用HDF5格式存储,可通过以下三种方式获取数据字典和字段说明: #### 1. **官方数据产品手册** NASA官方提供的《GEDI Level 2A Data Product User Guide》包含完整字段说明: ```markdown - 访问NASA Earthdata网站:https://earthdata.nasa.gov - 搜索文档编号:`GEDI Level 2A User Guide V2` - 第三章「Data Description」包含所有参数的定义和单位 ``` #### 2. **HDF5文件自描述特性** 使用Python直接读取文件元信息: ```python import h5py def show_metadata(filepath): with h5py.File(filepath, 'r') as f: def print_attrs(name, obj): print(f"Dataset: {name}") for key, val in obj.attrs.items(): print(f" {key}: {val}") f.visititems(print_attrs) show_metadata("data/GEDI02_A_*.h5") # 替换为实际路径 ``` #### 3. NASA Earthdata数据工具 通过Earthdata Search获取结构化元数据: ```markdown 1. 访问 https://search.earthdata.nasa.gov 2. 搜索数据集:GEDI02_A 3. 在「Documentation」标签页下载: - 数据字典(Data Dictionary) - 产品规范文档(Product Specification Document) ``` ### 关键参数示例 $$ \text{植被高度} = \frac{\text{地表高程} - \text{地形基准面高程}}{\text{激光穿透指数}} \quad [\text{单位:米}] $$
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值