|
一、安装pythonAnaconda包含有超过720个关于科学,数据,工程和数据分析的Python和R包,如果不想在电脑里安装过多的包,你可以使用miniconda,它包含了conda,它的依赖包以及Python包。
安装过程中,或许需要暂时关闭杀毒软件。 安装地址如下:
https://www.anaconda.com/download/
二、安装必要的免费数据源
1、聚宽数据JQData数据包
(1)JQData是聚宽数据团队专门为有志于从事量化投资的金融机构、研究人员以及个人量化爱好者提供的本地量化金融数据。用户只需在本地Python环境下安装JQData数据包,输入三行代码,即可调用由聚宽数据团队专业生产的全套量化金融数据,让你轻松告别平台限制,灵活安全地完成本地化的量化研究与投资决策。
(2)支持系统:Linux、Mac、Windows
(3)支持Python2和Python3
聚宽数据JQData数据包网站申请用户,免费使用数据一年,经测试,数据源比较稳定。
JQData安装教程https://www.joinquant.com/post/12479
自动安装
(1)进入python所在目录
(2)执行下面代码安装
pip install git+https://github.com/JoinQuant/jqdatasdk.git
或者下面的,速度能快点:
pip install -U git+https://github.com/JoinQuant/jqdatasdk.git -i https://mirrors.aliyun.com/pypi/simple/
用户申请网址https://www.joinquant.com/defaul ... me&m=banner
2、Tushare是一个免费、开源的python财经数据接口包。
[backcolor=rgba(0, 0, 0, 0.047)]安装命令pip install tushare
[backcolor=rgba(0, 0, 0, 0.047)]
3、OpenDataTools
[backcolor=rgba(0, 0, 0, 0.047)]只支持 python3,请安装python3.6以上版本。没有支持python2的计划。OpenDataTools网址 https://www.quantos.org/opendata/安装命令pip install opendatatools
[backcolor=rgba(0, 0, 0, 0.047)]
三、数据使用1、聚宽数据JQData
(1)导入JQData
from jqdatasdk import *
(2)用户认证
jqdatasdk.auth(“username”, “password”)
认证成功后,显示”auth success”,就可以开始使用数据了,如果没有出现,请先检查下是否已经申请并通过。
(3)获取数据
df=jqdatasdk.get_price("000001.XSHE")
print(df)
2、Tushare数据
[backcolor=rgba(0, 0, 0, 0.047)]
[backcolor=rgba(0, 0, 0, 0.047)]import tushare as tsdf = ts.get_k_data('600099',ktype='D')print(df)
[backcolor=rgba(0, 0, 0, 0.047)]
[backcolor=rgba(0, 0, 0, 0.047)]
3、OpenDataTools数据
from opendatatools import stock
df, msg = stock.get_quote('600000.SH,000002.SZ')
print(df)
df1, msg = stock.get_daily('600000.SH',start_date='1991-01-01',end_date='2018-08-17')
print(df1)
4、字王金融数据包
字王金融数据包数据至2016年,可以研究历史数据学习使用。
数据下载网址:
https://pan.baidu.com/s/1eW4WBroiSY-GI8cNPRJaBw
import datetime as dt
from datetime import datetime
import pandas as pd
from matplotlib import dates as mdates
import hplibx as mylib
path = 'D:\\zwDat\\cn\\Day\\' #存放目录
st = '000001' #平安银行
startdate='2016-01-01'
enddate='2017-12-31'
date_list = []
begin_date = datetime.strptime(startdate, "%Y-%m-%d")
end_date = datetime.strptime(enddate, "%Y-%m-%d")
while begin_date <= end_date:
date_str = begin_date.strftime("%Y-%m-%d")
date_list.append(date_str)
begin_date += dt.timedelta(days=1)
df2=pd.read_csv(path+st+'.csv' , encoding = 'utf-8') #读取股票数据
df3=df2[df2['date'].isin(date_list)]
print(df3)
四、Python通用版本设置
众所周知python的版本分为python2和python3,这两个版本有一些差异。另外他们的支持包也不同,因此用户要根据自己需求选择
合适的版本。
通通量化交易软件要适合python2和python3的平台运行,因此要做一些兼容性改变。
1、首先要能正确获取python所在的操作系统。
UseOS( )返回1=windows,2=Linux,3=MacOS
- #操作系统类型
- def UseOS( ):
- import platform
- sysstr = platform.system()
- if(sysstr =="Windows" or sysstr =="windows"):
- return 1
- elif(sysstr == "Linux"):
- return 2
- else:
- return 3
复制代码
二、获取python版本号
我们只关注大版本号是什么,保存到变量G_pyver中,供以后使用。
G_pyver=2 #是2=python2, 3=python3
- import platform
- G_pyver=int(platform.python_version()[0:1])
复制代码
三、python2和python3的版本差异
python3 和 python2 是不兼容的,而且差异比较大。好在python2.7以上版本,支持python3以上的部分语法,但又不是全部支持
和兼容。因此我们尽量使用同时支持python2.7和python3.6的语法命令。
实在没法同时兼容的语法命令,我们就用参考如下方法来做兼容功能函数。
- #通用平均线计算
- def G_MA(Series,n):
- G_pyver=int(platform.python_version()[0:1])
- G_ma=None
- if G_pyver==2:
- G_MAstr='pd.rolling_mean(Series,n)'
- G_ma=eval(G_MAstr)
- else :
- G_MAstr='Series.rolling(window=n,center=False).mean()'
- G_ma=eval(G_MAstr)
- return G_ma
复制代码
四、python2和python3的兼容性设计技巧
python是解释型语言,对于window和MacOS,Linux等系统的命令都不同,引用的包也是不同的。
1、在MacOS系统的python上引入window上面的包,以及使用命令都会出错。
2、在python2上使用了python3的包和命令,也会出现错误。
因此在python2中绝对不能出现python3的任何包引入和命令。
例如我们常用的tkinter,在python2上的包名为Tkinter,在python3的包名为tkinter。
为了解决兼容性命令,我们采用下面方法HP_init()来做兼容性设置,其他兼容性命令,我们都只需在这里来设置解决。
- def HP_init():
- #软件名称
- G_tk='import tkinter as tk'
- G_tk1='from tkinter import *'
- G_tk2='from tkinter import ttk'
- G_pyver=int(platform.python_version()[0:1])
- G_os=UseOS( )
- if G_pyver==3:这里写代码片
- G_tk='import tkinter as tk'
- G_tk1='from tkinter import *'
- G_tk2='from tkinter import ttk'
- else:
- G_tk='import Tkinter as tk'
- G_tk1='from Tkinter import *'
- G_tk2='from Tkinter import ttk'
复制代码
五、在程序使用兼容性方法
我们以tkinter绘图为例,量化软件需要绘制各种图形,我们只需在 def init(self, master=None): 方法中做必要初始化
就可以了。tkinter打多数绘图命令在python2和python3上没有区别。即使使用到有区别的命令,我们也可以按类似方式来解决。
初始化代码如下:
- def __init__(self, master=None):
- HP_init()
- exec(G_tk)
- exec(G_tk1)
- self.w = 300
- self.h = 180
- self.root = master #定义内部变量root
- self.staIco = G_ico
- self.root.geometry('%dx%d' % (self.w, self.h )) #设置窗口大小
- self.username = StringVar()
- self.password = StringVar()
- self.createPage()
- self.loop()
复制代码
|
|