...
在运用人工智能或者说现在最盛行的深度学习和神经网络的时分,或许咱们都有一个一致,便是数据是最重要的。事实上,深度神经网络开展到现在,或者说人工智能开展到现在,数据并没有咱们幻想的那么重要。有些刚触摸人工智能和深度神经网络的同学们或许会说,没有数据,你拿什么来做练习呢?其实,咱们能够去经过各种办法生成咱们所需求的数据,尤其是咱们在数据缺乏的状况下。其完结在关于人工智能或者说深度学习模型来说,优质的数据太少太少了,以至于其实优质的数据和质量不行好的数据练习出来的模型的泛化精确率能够差到几个百分点。可是事实上,巨大的数据量靠人工去查看和更正是一个不或许完结的使命。回过头来评论咱们今日的论题,前面我说了,这个专题是《深度学习与金融市场》这个专题的连续,在上一个专题咱们现已评论过数据闭环的重要性。而这个专题咱们来评论详细的完结办法和逻辑。本文里咱们仅仅评论日线数据闭环,原因是由于篇幅不行,我会选用tushare的接口来完结部分的代码给咱们。事实上我自己是没有用tushare的接口,我运用的是彻底自己开发的数据接口,首要是由于更安稳,后期不必去为此修正代码!初期咱们能够运用tushare的开源接口,比及运用人工智能量化出资安稳盈余了,再开发自己的数据接口。或许有的同学会觉得tushare的数据接口现已很好用了,事实上咱们实战的时分其实就知道,这仅仅一个根底接口,而且实时数据的部分也是缺失的。而咱们即便是做日线,也是需求实时的数据的,比方我需求一个14:30的战略,那么其实tushare都是在15:00到16:00间更新日线数据的。可是,咱们用来做一些根底的研讨也牵强够用了。事实上我自己抓取的OHLCV是分钟数据,其他的我都没有去抓,由于其他的数据都能够由分钟数据计算出来。本文中,为咱们介绍抓取日线数据,由于tushare的分钟数据并不完善,咱们能够经过日线数据树立咱们的数据闭环。咱们来列出咱们的数据接口需求完结哪些功用。一、取得单只股票的前史OHLCV数据。二、取得指定多只股票的前史OHLCV数据。三、取得一切股票的前史OHLCV数据。四、取得单只股票的实时OHLCV数据。五、取得指定多只股票的实时OHLCV数据。六、取得一切股票的实时OHLCV数据。七、将一切股票的OHLCV数据更新到最新。接下来咱们逐个来完结这些功用,当然咱们会将这些数据依据需求写入到本地,防止重复低效劳作,咱们会将每只股票的数据按其代码作为文件名来存储为CSV文件。事实上,我自己在做的时分是存储为数据库的,本质上也没有太大的不同,首要由于我存储的是分钟线数据,相对来讲数据量较大。其间前史数据的部分,我会用tushare来完结一个给咱们,彻底是现写给咱们,由于我自己并不必这个接口。而实时数据的部分,咱们也说了tushare并不便利去获取。因而咱们本文中只完结取得前史数据的部分,其实关于咱们刚刚运用人工智能量化来说,前史数据也仅仅是没有当天的数据罢了,也是够用的。咱们本文只完结一、二、三、七四个功用。这四个功用咱们分两个办法来完结,我这儿的办法是指的类中的办法。咱们直接依据代码来讲吧!为了便利截图,我的代码中没有加注释,咱们在文章中来解说。首要咱们import一些咱们需求的包。然后咱们来界说一个名为OHLCV的类,咱们先来看看咱们的
init里边要做些什么事情?首要咱们界说一个途径,用来寄存咱们的数据,这是有必要的,咱们不或许每次都从网络上去抓取数据,所以树立本地数据库,并不断去同步到最新对错常有必要的。接下来咱们界说了token,这个是tushare的接口一切必要要的。这两个变量咱们在实例化目标的时分会指定。接下来咱们界说了一个countPerRead的变量,这是由于tushare一次只能读取0个数据。然后咱们实例化了一个tushare的pro的类,这样咱们在后边就不必再去实例化了。然后咱们来看一些在咱们首要的两个办法里会用到的一些根底办法。get_local_date这个办法用来取得本地的时刻,也便是说是你电脑的时刻,当然咱们也能够从网络上去取这个时刻,可是一般咱们的电脑时刻都是精确的。get_basic_info这个办法则是用来获取A股一切上市公司的基本信息,在这儿首要是为get_stock_list和get_IPO_date这两个办法所用,一个是用来取得一切上市公司的代码列表,一个是用来取得股票的上市时刻供咱们抓取前史数据的时分运用。接下来就进入到咱们重头戏了,get_one_history用来获取一只股票的前史数据。咱们先来介绍一下参数,股票代码是有必要的;然后是是否从网络更新数据到本地,这意味着你有或许只想从本地读取数据;然后便是开端和完毕日期了。首要,咱们读取本地的数据,假如本地数据存在,咱们将咱们从网络抓取数据的开始时刻设置为本地数据最终一条的时刻。假如本地数据不存在,咱们将开始时刻设置为股票的上市日期。而完毕时刻咱们一概设置为当天的时刻。然后咱们判别是否需求更新本地数据,一种状况是本地数据现已是最新,另一种状况是你只想读取本地数据,这两种状况下咱们都直接回来本地数据对应的日期段。其次,咱们就要经过tushare的接口来读取数据,由于tushare一次只能读取0条,那么咱们用一个循环来读取,而且咱们将循环读取的数据连接起来。当一次读取小于0条的时分,咱们以为读取完毕,跳出循环后,咱们将删去日期重复的行,为什么会用重复呢?由于咱们在每次循环里选取日期的时分,咱们运用的是上一次读取的数据里的最终一条日期。最终,删去重复数据之后,咱们再运用tushare的另一个接口读取一切的复权因子,没有复权因子的OHLCV是没有魂灵的。然后咱们将复权因子和前史OHLCV用concat做成一个Dataframe。现在咱们就有了一段OHLCV数据,然后咱们把它和咱们本地读取到的前史数据连接起来,这样就构成了咱们这只股票的一切的前史数据,而且这个前史数据是带复权因子的。咱们就能够回来咱们所需求前史数据段,而且将更新的数据写入到咱们本地,确保咱们本地数据是最新的。到这儿,get_one_history就讲完了。接下来咱们看看get_multi_history这个办法,其实就很简略了对吗,咱们针对每一只列表里的股票去做get_one_history就好了。咱们来看看,根底逻辑是这样,咱们判别有没有传codeList,假如没有,咱们就以为你需求的是一切的A股上市公司,假如有,那么codeList便是你指定的列表。然后咱们对每一只股票来做get_one_history。你只需求选定update为True,那么你的本地数据都会悉数被更新到最新。接下来咱们来看实践调用的比如,咱们分别来取得单只、多只和一切股票的数据。咱们来看看data1和data2的打印成果,data3由于过分巨大,咱们就不打印了,咱们能够自行试试。所以咱们其实能够看到,这样的数据才是咱们所需求的数据,为什么我说网上这些个数据接口都不有用,由于这些人并不是做人工智能量化的,所以在数据的安排和结构上并不能很好的习惯咱们的运用,实践上在咱们跟我后边的内容的时分就会发现,适宜的数据接口,能事半功倍。当然咱们这儿的数据接口还缺实时数据接口,假如做日线,咱们需求的实时性并不是特别高。本文代码,同学们能够向作者讨取。
本文地址:https://www.changhecl.com/432705.html