请 [注册] 或 [登录]  | 返回主站

量化交易吧 /  量化平台 帖子:3364730 新帖:17

新手入门:数据提取逻辑 get_price/attri

只求稳定发表于:5 月 10 日 07:03回复(1)

时间戳与数据的关系:

数据的时间戳是时间段的结束点,比如取到的一分钟数据是2012-01-02 10:00:00,实际的数据统计时间是 09:59:00到10:00:00这个时间段的数据,因此,以股票为例,取一整天的分钟数据,数据开始的时间戳是09:31:00,结束时间是15:00:00,回测中在 10:00:00取到时间戳为10:00:00的数据是正常的,不存在未来数据。

数据的获取基本原则为向前的就近原则。

三种方法的区别:

40dccc9425311b47b1ea5d8ed8938bd.png
当选择频率为 'Xd','Xm' 或其他非1频率时:

get_price的取数逻辑:

时间戳是时间段的结束
注意! 取天数据时,传入的时间包含分钟时会进行忽略,end_date传入分钟时会对数据结束时间进行判断:以股票为例,传入的分钟小于 09:30:00 ,则以前一天收盘为结束,传入的分钟 大于等于 09:30:00,则以当天收盘为结束。

1,使用 count:(从后向前划分,一直到取到足够的数量)
  1.png

2,使用  start_date: 以start_date为统计开始时间点(从前向后划分)

2.png
 3,注意取分钟数据时end_date为数据当天时 需要带上 分时秒,否则默认end_date和start_date的分时秒均为 00:00:00 ,导致取不到当天数据:

3.png
 4.png
 4,分钟数据的划分和天数据的划分逻辑一致

attribute_history和history

和get_price的count逻辑基本相同,但注意取到的天数据为上一交易日的数据,相当于get_price设end_date为前一日。

get_bars

1,取数逻辑和get_price的start_date逻辑类似,是以从前往后数的方式进行的;
    比如股票在9:36分,count =2,unit=’5m’的情况下,:
          ①include_now为True:
              9:30:00至9:35:00为一个bar, 9:35:00 到 9:36:00为一个bar
          ②Include_now为False:
              昨日 14:55:00至15:00:00 为一个bar , 9:30:00至9:35:00为一个bar, 35:00至36:00的数据不包括

2,时间戳为时间段的结束,注意inclode_now的影响而导致返回数据的最后一行的时间戳的改变。

3,注意get_bars的划分时间都是固定的,如果行情数据的bar不足count个,返回的长度则小于count个数。

  划分方式(以股票为例):
 unit='1m', '5m', '15m', '30m', '60m', '120m',时,
          开始统计时间为每天的开盘, 相当于设get_price的start_date=’aY-bM-cd 09:30:00’
  unit = ‘1W’,’1M’时,开始统计时间(start_date)都为每周/月的第一个交易日

4,注意inclode_now为False和为True的区别(默认为False,当为False时获取的数据比history等晚一个时间段,尤其开盘时需要注意,
        前unit 分钟取到的是昨日的最后一个bar)

5.png
 6.png

附:其他平台划分方式对比(我们与东财划分方式相同):
50793432695191816.png

199257785337249882.png

get_price¶

Xm,Xd时 ,时间戳是时间段的结束

1,使用count:

get_price('000001.XSHE',end_date='2018-08-09',frequency='1d',count=10)

openclosehighlowvolumemoney
2018-07-279.309.259.369.18515126034.775274e+08
2018-07-309.329.399.499.26706385976.617675e+08
2018-07-319.379.429.499.25720150806.744847e+08
2018-08-019.429.159.509.11814081687.592822e+08
2018-08-029.138.949.158.88931401288.392723e+08
2018-08-038.938.919.108.91476546624.286415e+08
2018-08-068.948.949.118.89554010084.979067e+08
2018-08-078.969.179.178.88690423196.243597e+08
2018-08-089.169.059.169.04578953165.275270e+08
2018-08-099.049.299.359.02806783777.464698e+08
get_price('000001.XSHE',end_date='2018-08-09',frequency='5d',count=2)

openclosehighlowvolumemoney
2018-08-029.308.949.508.883687145763.412334e+09
2018-08-098.939.299.358.883106716822.824905e+09

分钟数据同:

get_price('000001.XSHE',end_date='2018-08-09',frequency='1m',count=8)

openclosehighlowvolumemoney
2018-08-08 14:53:009.059.049.069.043682003331141
2018-08-08 14:54:009.049.059.059.045361004847985
2018-08-08 14:55:009.059.049.059.045678005134531
2018-08-08 14:56:009.049.049.059.043429003100816
2018-08-08 14:57:009.049.069.069.049964009014143
2018-08-08 14:58:009.059.059.059.055141004652605
2018-08-08 14:59:009.059.059.059.0500
2018-08-08 15:00:009.059.059.059.058996008141380
get_price('000001.XSHE',end_date='2018-08-09',frequency='4m',count=2)

openclosehighlowvolumemoney
2018-08-08 14:56:009.059.049.069.04181500016414473
2018-08-08 15:00:009.049.059.069.04241010021808128

2,使用start_date

get_price('000001.XSHE',end_date='2018-08-09',frequency='1d',start_date='2018-08-01')

openclosehighlowvolumemoney
2018-08-019.429.159.509.11814081687.592822e+08
2018-08-029.138.949.158.88931401288.392723e+08
2018-08-038.938.919.108.91476546624.286415e+08
2018-08-068.948.949.118.89554010084.979067e+08
2018-08-078.969.179.178.88690423196.243597e+08
2018-08-089.169.059.169.04578953165.275270e+08
2018-08-099.049.299.359.02806783777.464698e+08
get_price('000001.XSHE',end_date='2018-08-09',frequency='5d',start_date='2018-08-01')

openclosehighlowvolumemoney
2018-08-079.429.179.508.883466462853.149462e+09
2018-08-099.169.299.359.021385736931.273997e+09

3,取分钟数据

get_price('000001.XSHE',end_date='2018-08-09',frequency='1m',start_date='2018-08-09') #错误示例

openclosehighlowvolumemoney
get_price('000001.XSHE',end_date='2018-08-09 15:50:00',frequency='1m',start_date='2018-08-09') #正确操作

openclosehighlowvolumemoney
2018-08-09 09:31:009.049.049.059.025444004918138
2018-08-09 09:32:009.059.089.089.043703003352917
2018-08-09 09:33:009.069.079.089.062814002554388
2018-08-09 09:34:009.089.089.099.083989003622795
2018-08-09 09:35:009.089.099.099.083833003482474
2018-08-09 09:36:009.099.099.109.083258002962542
2018-08-09 09:37:009.099.099.109.092235002032036
2018-08-09 09:38:009.099.089.109.084250003863674
2018-08-09 09:39:009.089.089.099.071571001426819
2018-08-09 09:40:009.099.109.109.071208001097494
2018-08-09 09:41:009.099.129.129.093823003480097
2018-08-09 09:42:009.119.139.139.115445004966226
2018-08-09 09:43:009.129.119.139.113532003221340
2018-08-09 09:44:009.129.109.129.101708001556622
2018-08-09 09:45:009.119.139.139.112169001978240
2018-08-09 09:46:009.129.149.159.124720004312525
2018-08-09 09:47:009.149.159.169.137825007155887
2018-08-09 09:48:009.149.159.169.144814004403817
2018-08-09 09:49:009.159.149.159.133001002742220
2018-08-09 09:50:009.139.149.159.132930002677115
2018-08-09 09:51:009.149.149.159.141466001340444
2018-08-09 09:52:009.149.139.149.131634001492424
2018-08-09 09:53:009.139.139.149.121598001458874
2018-08-09 09:54:009.139.139.139.121424001299122
2018-08-09 09:55:009.129.139.139.111364001243937
2018-08-09 09:56:009.129.129.139.1151800472458
2018-08-09 09:57:009.129.139.139.121131001032550
2018-08-09 09:58:009.139.139.149.1262700572473
2018-08-09 09:59:009.139.149.149.121136001037930
2018-08-09 10:00:009.149.139.149.131720001571570
.....................
2018-08-09 14:31:009.329.319.329.311111001035175
2018-08-09 14:32:009.329.329.329.315113004764838
2018-08-09 14:33:009.329.339.339.326030005624954
2018-08-09 14:34:009.329.339.339.322320002164080
2018-08-09 14:35:009.339.329.339.324987004652469
2018-08-09 14:36:009.329.329.339.314118003838263
2018-08-09 14:37:009.329.329.339.311312001223351
2018-08-09 14:38:009.329.339.339.321274001187768
2018-08-09 14:39:009.329.339.349.326359005933610
2018-08-09 14:40:009.349.339.349.334130003853985
2018-08-09 14:41:009.339.329.339.321907001778913
2018-08-09 14:42:009.329.339.339.322421002257976
2018-08-09 14:43:009.339.339.339.322916002719906
2018-08-09 14:44:009.329.339.339.324619004307772
2018-08-09 14:45:009.329.329.339.322925002727594
2018-08-09 14:46:009.329.319.329.317126006640199
2018-08-09 14:47:009.329.319.329.316984006503113
2018-08-09 14:48:009.319.319.329.317942007394674
2018-08-09 14:49:009.319.299.319.293886003614258
2018-08-09 14:50:009.299.309.309.292784002587128
2018-08-09 14:51:009.309.309.309.298324007738493
2018-08-09 14:52:009.299.309.309.286503006041464
2018-08-09 14:53:009.299.299.309.291717001595413
2018-08-09 14:54:009.299.309.309.293626003370446
2018-08-09 14:55:009.299.309.309.291418001317743
2018-08-09 14:56:009.309.299.309.293561003309432
2018-08-09 14:57:009.309.299.309.294283003981381
2018-08-09 14:58:009.309.309.309.3031600293862
2018-08-09 14:59:009.309.309.309.3000
2018-08-09 15:00:009.309.299.309.297556007019524

240 rows × 6 columns

attribute_history / history¶

和get_price的count方法一致

get_bars¶

1,取数逻辑和get_price的start_date逻辑类似,是以从前往后数的方式进行的;   比如股票在9:36分,count =2,unit=’5m’的情况下,:   ①include_now为True:         9:30:00至9:35:00为一个bar, 9:35:00 到 9:36:00为一个bar   ②Include_now为False:         昨日 14:55:00至15:00:00 为一个bar , 9:30:00至9:35:00为一个bar, 35:00至36:00的数据不包括 2,时间戳为时间段的结束,注意inclode_now的影响而导致最后一行的时间段的改变。 3,注意get_bars的划分时间都是固定的,如果行情数据的bar不足 count个,返回的长度则小于count个数。         划分方式(以股票为例): unit='1m', '5m', '15m', '30m', '60m', '120m',时, 相当于设get_price的start_date=’aY-bM-cd 09:30:00’ unit = ‘1W’,’1M’时,开始统计时间(start_date)都为每周/月的第一个交易日 4,注意inclode_now为False和为True的区别(默认为False,当为False时获取的数据比history等晚一个时间段,尤其开盘时需要注意,前unit 分钟取到的是昨日的最后一个bar)

 

全部回复

0/140

达人推荐

量化课程

    移动端课程