1. 程式人生 > >自己做量化交易軟體(2) python跨版本環境設定和使用

自己做量化交易軟體(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()

六、完整量化軟體演示 我通過邊學習邊嘗試,做出了簡單的股票歷史行情和指標的顯示框架。後面的工作將從量化分析,操作策略,歷史回測及圖形顯示等方面,逐步開設設計。

通通量化框架 完整程式碼下載,在我上傳的資源中下載。