自己做量化交易软件(2) 通通量化python跨版本环境设置和使用

通通量化 python跨版本环境设置和使用

众所周知python的版本分为python2和python3,这两个版本有一些差异。另外他们的支持包也不同,因此用户要根据自己需求选择

合适的版本。
通通量化交易软件要适合python2和python3的平台运行,因此要做一些兼容性改变。
一、首先要能正确获取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()

六、完整量化软件演示
我通过边学习边尝试,做出了简单的股票历史行情和指标的显示框架。后面的工作将从量化分析,操作策略,历史回测及图形显示等方面,逐步开设设计。

通通量化框架
完整代码下载,在我上传的资源中下载。
https://download.csdn.net/download/hepu8/10668509

猜你喜欢

转载自blog.csdn.net/hepu8/article/details/82712669
今日推荐