自己做量化交易软件(10)通通量化AI框架的数据获取与格式

自己做量化交易软件(10)通通量化AI框架的数据获取与格式
我与2018年07月08日开始学习python编程和设计通通量化AI框架,到昨天晚上2018年10月30日,基本框架已经完成.能够显示K线图形,能够使用仿通达信公式,能够用python编写策略,并显示出来.而且增加了股票投资类的AI知识库.
自己做量化交易软件(10)通通量化AI框架的数据获取与格式
(通通量化框架主画面)
自己做量化交易软件(10)通通量化AI框架的数据获取与格式
(通通量化框架回测界面)
自己做量化交易软件(10)通通量化AI框架的数据获取与格式
(通通量化框架信息输出和交互,集成有股票投资类的知识库.)

在这几个月的学习中,我得到了广大朋友,群友的大量帮助,也得到了度娘的帮助,大量代码都是复制粘贴修改所完成.难免让大家看我的程序似成相识.
我自己在这个几个月对python语言的理解也逐步蜕变升级.更多进步都是我不断试错代码,才取得的进步.无论怎么说,我还是坚持完全开源的思想,把我的通通量化AI框架全部代码,无保留奉献给有兴趣的朋友.
1.我们通通量化框架与其说是用于金融投资,例如股票,期货,虚拟币,**分析等等.更重要的是,通过我的努力学习,把互联网上碎片的python编写程序的知识,进行了汇总和合成.如果你理解了我的通通量化框架的总体设计思想.你完全可以给自己的裸奔算法,加上华丽的外衣(漂亮的客户端界面).
2.我的傻瓜型通通量化AI金融投资框架,针对于不懂电脑人来安装使用.这就是我对使用python编程的朋友第2个贡献.我们提供的64位python是绿色版本,只要解包安装,执行py36.bat. 要知道开始使用python对于我这个电脑玩家来说,安装python耗费了我不少时间.绿色py36压缩后1G左右,解包后3.2G,基本上你所需要的所有包已经集成好了,网上复制来的代码,能够直接在这个环境下运行.我已经集成了聚宽数据JQData数据包,Tushare数据接口包,OpenDataTools数据包.这些平台的股票数据获取,你可以随便使用.(聚宽数据需要网站申请免费使用帐户)
3.傻瓜型通通量化AI金融投资框架是全开放型的,用户可以看到全部代码,可以按照自己喜欢的样子,方式,习惯去修改.如果不想修改,也可以增加新的VIEW窗口画面,程序改变窗口状态和画面.这看起来一点不傻瓜,不是python高手,无法使用.但是,你能引用,复制,装载高手设计的新框架来使用.至于这些框架是如果编写设计的,你看不懂不要紧,能使用就可以了,你说"傻瓜不傻瓜".高手完全可以在程序运行过程中,增加自己喜欢的回测画面模板.
闲话说多了,跑题了.
通通量化早期设计是用的聚宽数据,因此内部核心数据格式是聚宽df格式,下面我们看看聚宽数据格式.

import pandas as pd  
import numpy  as np
import datetime as dt
import time
import jqdatasdk as jq

x=jq.auth('聚宽账户','密码')  #这里用户输入自己的账户和密码
security='000001.XSHE'
ds=time.strftime('%Y-%m-%d',time.localtime(time.time()))
de=time.strftime('%Y-%m-%d',time.localtime(time.time()))
df1=jq.get_price(security, start_date=None, end_date=de, frequency='daily', fields=None, skip_paused=False, fq='pre', count=None)
print(df1.head(5))
print(df1.dtypes)
print(df1.index)

上面代码运行结果如下图:
自己做量化交易软件(10)通通量化AI框架的数据获取与格式
我们能够看到,索引是DatetimeIndex格式.通通量化在K线图显示是用了聚宽格式数据,是我们通通量化的核心数据格式.但是通通量化保存数据的格式又是Tushare数据格式.使用期间要经常相互转化,后期我们评估后,再统一格式.
下面我们看看Tushare数据格式.

import tushare as ts
import pandas as pd

df1=ts.get_k_data('000001',ktype='D',start='2018-01-01',end='2018-10-15',index=False,autype='qfq')
print(df1.head(5))
print(df1.dtypes)
print(df1.index)

上面代码运行的结果如下图:
自己做量化交易软件(10)通通量化AI框架的数据获取与格式
我们能够看到,索引是Int64Index格式.无论什么格式数据,我们重点关注date,open,close,high,low,volume等列,这是股票核心数据.程序处理就以这几个数据为主.
下面我们再看看OpenDataTools数据格式:
from opendatatools import stock

df1, msg = stock.get_daily('600000.SH',start_date='1991-01-01',end_date='2018-08-17')
print(df1.head(5))
print(df1.dtypes)
print(df1.index)

上面代码运行的结果如下图:
自己做量化交易软件(10)通通量化AI框架的数据获取与格式
OpenDataTools数据格式的索引与Tushare数据格式一致,所以使用基本一样.但是OpenDataTools数据又多了很多内容,对我们程序没有影响,用户可以在自己策略中引用这些数据了,例如换手率change等等信息.
上面三种数据格式的股票代码不一样,大家使用中要注意.
本地数据格式,数据处理我放到HP_data.py文件中了.常用函数格式用法同Tushare数据函数格式.

import datetime as dt
from datetime import datetime
import pandas as pd
import HP_global as g 
import HP_set 
import HP_data as hp
import tushare as ts

df1=hp.get_k_data('000001',ktype='D',start='2018-01-01',end='2018-10-15',index=False,autype='qfq')
print('通通本地数据')
print(df1.head(5))
print(df1.dtypes)
print(df1.index)

df2=ts.get_k_data('000001',ktype='D',start='2018-01-01',end='2018-10-15',index=False,autype='qfq')
print('Tushare数据')
print(df2.head(5))
print(df2.dtypes)
print(df2.index)

上面代码运行的结果如下图:
自己做量化交易软件(10)通通量化AI框架的数据获取与格式
我们可以看到本地数据格式和Tushare数据格式除了code不同外,其他都一致.
朋友们明白了吗?把hp换为ts,就能直接在网上获取数据.
下面我给出HP_data.py中的数据转换函数,仅供参考,

#聚宽数据格式转为Tushare数据格式
def jqtots(df1):
    a=[x.strftime("%Y-%m-%d") for x in df1.index]
    df1.insert(0,'date',a)
    df1=df1.reset_index(level=None, drop=True ,col_level=0, col_fill='')  
    return df1

#Tushare数据格式转为聚宽数据格式
def tstojq(df1):
    a=[dt.datetime.strptime(x,'%Y-%m-%d') for x in df1['date']]
    df1.insert(0,'date2',a)
    df1=df1.reset_index(level=None, drop=True ,col_level=0, col_fill='')  
    df1.index=df1['date2']
    del df1['date2']
    del df1['date']
    return df1

朋友们明白了数据格式,就可以写自己的量化分析策略了.

为什么我有空写文章啦,今天没带移动硬盘,没法完善通通量化框架了.