def zwBackTest(qx): ''' zwQuant,回溯测试主程序 【输入】 qx (zwQuantx): zwQuantx数据包 【输出】 无 ''' # 增加数据源波动率参数 zwx.stkLibSetDVix() # 计算回溯时间周期,也可以在此,根据nday调整回溯周期长度 # 或者在 qt_init数据初始化时,通过qx.qxTimSet(xtim0,xtim9),设置回溯周期长度 nday = qx.periodNDay if qx.debugMod > 0: xcod = zw.stkLibCode[0] print(zw.stkLib[xcod].tail()) print('nday', nday) # nday=3; fss = 'tmp\\' + qx.prjName + '_' + xcod + '.csv' zw.stkLib[xcod].to_csv(fss) # -------------- # 按时间循环,进行回溯测试 for tc in range(nday): tim5 = qx.DTxtim0 + dt.timedelta(days=tc) xtim = tim5.strftime('%Y-%m-%d') # print('tc',tc,xtim) # 每个测试时间点,开始时,清除qx相关参数 qx.qxTim0SetVar(xtim) # qx.prQxUsr();#qx.xtim=xtim; xpriceFlag = False # 有效交易标志Flag # 按设定的股票代码列表,循环进行回溯测试 for xcod in zw.stkLibCode: qx.stkCode = xcod # print('xcod',xcod) # xdatWrk是当前xcod,=stkLib[xcod] # xbarWrk是当前时间点的stkLib[xcod] # 注意,已经包括了,qt_init里面的扩充数据列 qx.xbarWrk, qx.xdatWrk = zwx.xbarGet8TimExt(xcod, qx.xtim) # print(xcod,'xbar\n',qx.xbarWrk) if not qx.xbarWrk[qx.priceWrk].empty: # -----dvix 波动率检查 dvix = zwx.stkGetVars(qx, 'dvix') # dvixFlag=False; dvixFlag = zwt.xinEQ(dvix, qx.dvix_k0, qx.dvix_k9) or (dvix == 0) or (np.isnan(dvix)) if dvixFlag: xpriceFlag = True # 调用回溯子程序,如果是有效交易,设置成功交易标志xtrdFlag zwBackTest100(qx) else: print('@dvix', xcod, xtim, dvix) pass # 如果所有股票代码列表循环完毕,成功交易标志为真 # 在当前测试时间点终止,设置有关交易参数 if xpriceFlag: qx.wrkNDay += 1 qx.qxTim9SetVar(qx.xtim)
def zwBackTest(qx): ''' zwQuant,回溯测试主程序 【输入】 qx (zwQuantx): zwQuantx数据包 【输出】 无 ''' # 增加数据源波动率参数 # 就是增加一列dvix数据 zwx.stkLibSetDVix() # 计算回溯时间周期,也可以在此,根据nday调整回溯周期长度 # 或者在 qt_init数据初始化时,通过qx.qxTimSet(xtim0,xtim9),设置回溯周期长度 nday = qx.periodNDay if qx.debugMod > 0: xcod = zw.stkLibCode[0] print(zw.stkLib[xcod].tail()) print('nday', nday) fss = 'tmp\\' + qx.prjName + '_' + xcod + '.csv' zw.stkLib[xcod].to_csv(fss) # -------------- # 按时间循环,进行回溯测试 for tc in range(nday): tim5 = qx.DTxtim0 + dt.timedelta(days=tc) if hasattr(qx,'timFun'): qx.timFun(qx,tim5) # 运行绑定的关于某个时间点的主函数 xtim = tim5.strftime('%Y-%m-%d') # print('tc',tc,xtim) # 每个测试时间点,开始时,清除qx相关参数 qx.qxTim0SetVar(xtim) # qx.prQxUsr() #qx.xtim=xtim xpriceFlag = False # 有效交易标志Flag # 按设定的股票代码列表,循环进行回溯测试 for xcod in zw.stkLibCode: qx.stkCode = xcod # print('xcod',xcod) # xdatWrk是当前xcod,=stkLib[xcod] # xbarWrk是当前时间点的stkLib[xcod] # 注意,已经包括了,qt_init里面的扩充数据列 qx.xbarWrk, qx.xdatWrk = zwx.xbarGet8TimExt(xcod, qx.xtim) # print(xcod,'xbar\n',qx.xbarWrk) if not qx.xbarWrk[qx.priceWrk].empty: # -----dvix 波动率检查 dvix = zwx.stkGetVars(qx, 'dvix') # dvixFlag=False dvixFlag = zwt.xinEQ(dvix, qx.dvix_k0, qx.dvix_k9) or (dvix == 0) or (np.isnan(dvix)) if dvixFlag: xpriceFlag = True # 调用回溯子程序,如果是有效交易,设置成功交易标志xtrdFlag zwBackTest100(qx) else: print('@dvix', xcod, xtim, dvix) pass # 如果所有股票代码列表循环完毕,成功交易标志为真 # 在当前测试时间点终止,设置有关交易参数 if xpriceFlag: qx.wrkNDay += 1 qx.qxTim9SetVar(qx.xtim) # print('') qx.update_usr_qxLib(qx,qx.qxLib)
def zwBackTest(qx): ''' zwQuant,回溯測試主程式 【輸入】 qx (zwQuantx): zwQuantx封包 【輸出】 無 ''' # 增加資料來源波動率參數 # 就是增加一列dvix資料 zwx.stkLibSetDVix() # 計算回溯時間週期,也可以在此,根據nday調整回溯週期長度 # 或者在 qt_init資料初始化時,通過qx.qxTimSet(xtim0,xtim9),設定回溯週期長度 nday = qx.periodNDay if qx.debugMod > 0: xcod = zw.stkLibCode[0] print(zw.stkLib[xcod].tail()) print('nday', nday) fss = 'tmp\\' + qx.prjName + '_' + xcod + '.csv' zw.stkLib[xcod].to_csv(fss) # -------------- # 按時間迴圈,進行回溯測試 for tc in range(nday): tim5 = qx.DTxtim0 + dt.timedelta(days=tc) if hasattr(qx,'timFun'): qx.timFun(qx,tim5) # 運行綁定的關於某個時間點的主函數 xtim = tim5.strftime('%Y-%m-%d') # print('tc',tc,xtim) # 每個測試時間點,開始時,清除qx相關參數 qx.qxTim0SetVar(xtim) # qx.prQxUsr() #qx.xtim=xtim xpriceFlag = False # 有效交易標誌Flag # 按設定的股票代碼列表,迴圈進行回溯測試 for xcod in zw.stkLibCode: qx.stkCode = xcod # print('xcod',xcod) # xdatWrk是當前xcod,=stkLib[xcod] # xbarWrk是當前時間點的stkLib[xcod] # 注意,已經包括了,qt_init裡面的擴充資料列 qx.xbarWrk, qx.xdatWrk = zwx.xbarGet8TimExt(xcod, qx.xtim) # print(xcod,'xbar\n',qx.xbarWrk) if not qx.xbarWrk[qx.priceWrk].empty: # -----dvix 波動率檢查 dvix = zwx.stkGetVars(qx, 'dvix') # dvixFlag=False dvixFlag = zwt.xinEQ(dvix, qx.dvix_k0, qx.dvix_k9) or (dvix == 0) or (np.isnan(dvix)) if dvixFlag: xpriceFlag = True # 調用回溯副程式,如果是有效交易,設定成功交易標誌xtrdFlag zwBackTest100(qx) else: print('@dvix', xcod, xtim, dvix) pass # 如果所有股票代碼清單迴圈完畢,成功交易標誌為真 # 在當前測試時間點終止,設定有關交易參數 if xpriceFlag: qx.wrkNDay += 1 qx.qxTim9SetVar(qx.xtim) # print('') qx.update_usr_qxLib(qx,qx.qxLib)
import zwSys as zw #zw.zwQuant from .from .import zwTools as zwt import zwQTBox as zwx #====================== xlst=['aeti','egan','glng','simo'] zwx.stkLibRd(xlst,'dat\\'); print(zw.stkLibCode) xcod='aeti';xtim='2011-01-03' x1=zwx.xbarGet8Tim(xcod,xtim); print('x1\n',x1) xcod='aeti';xtim='2012-01-03' x2=zwx.xbarGet8Tim(xcod,xtim); print('x2\n',x2) #def xbarGet8Tim(xcod,xtim): #def xbarGet8TimExt(xcod,xtim): x2,df2=zwx.xbarGet8TimExt(xcod,xtim); print('x2\n',x2) print('df') print(df2.head()) print(df2.tail())