自建量化交易软件(一):基础环境安装

1
回复
8300
查看
[复制链接]

70

主题

2

回帖

252

积分

超级版主

积分
252
来源: 2019-8-4 17:07:49 显示全部楼层 |阅读模式
一、安装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


  1. #操作系统类型

  2. def UseOS( ):
  3.     import platform
  4.     sysstr = platform.system()
  5.     if(sysstr =="Windows" or sysstr =="windows"):
  6.         return 1
  7.     elif(sysstr == "Linux"):
  8.         return 2
  9.     else:
  10.         return 3
复制代码


二、获取python版本号
我们只关注大版本号是什么,保存到变量G_pyver中,供以后使用。
G_pyver=2 #是2=python2, 3=python3


  1. import platform
  2.     G_pyver=int(platform.python_version()[0:1])
复制代码


三、python2和python3的版本差异
python3 和 python2 是不兼容的,而且差异比较大。好在python2.7以上版本,支持python3以上的部分语法,但又不是全部支持

和兼容。因此我们尽量使用同时支持python2.7和python3.6的语法命令。
实在没法同时兼容的语法命令,我们就用参考如下方法来做兼容功能函数。


  1. #通用平均线计算        
  2. def G_MA(Series,n):
  3.     G_pyver=int(platform.python_version()[0:1])
  4.     G_ma=None
  5.     if G_pyver==2:
  6.         G_MAstr='pd.rolling_mean(Series,n)'
  7.         G_ma=eval(G_MAstr)
  8.     else :
  9.         G_MAstr='Series.rolling(window=n,center=False).mean()'
  10.         G_ma=eval(G_MAstr)
  11.     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()来做兼容性设置,其他兼容性命令,我们都只需在这里来设置解决。



  1. def HP_init():
  2.     #软件名称
  3.     G_tk='import tkinter as tk'
  4.     G_tk1='from tkinter import *'
  5.     G_tk2='from tkinter import ttk'
  6.     G_pyver=int(platform.python_version()[0:1])
  7.     G_os=UseOS( )
  8.     if G_pyver==3:这里写代码片
  9.         G_tk='import tkinter as tk'
  10.         G_tk1='from tkinter import *'
  11.         G_tk2='from tkinter import ttk'
  12.     else:
  13.         G_tk='import Tkinter as tk'
  14.         G_tk1='from Tkinter import *'
  15.         G_tk2='from Tkinter import ttk'
复制代码


五、在程序使用兼容性方法
我们以tkinter绘图为例,量化软件需要绘制各种图形,我们只需在 def init(self, master=None): 方法中做必要初始化

就可以了。tkinter打多数绘图命令在python2和python3上没有区别。即使使用到有区别的命令,我们也可以按类似方式来解决。
初始化代码如下:


  1.     def __init__(self, master=None):  
  2.         HP_init()
  3.         exec(G_tk)
  4.         exec(G_tk1)
  5.         self.w = 300
  6.         self.h = 180
  7.         self.root = master #定义内部变量root  
  8.         self.staIco = G_ico
  9.         self.root.geometry('%dx%d' % (self.w, self.h )) #设置窗口大小  
  10.         self.username = StringVar()  
  11.         self.password = StringVar()  
  12.         self.createPage()  
  13.         self.loop()
复制代码

数据.jpg


回复

使用道具 举报

19

主题

36

回帖

201

积分

中级会员

积分
201
2019-8-5 08:11:07 来自手机 显示全部楼层
挺好的内容、继续
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 免费注册
关注微信