def bt_init(xlst, rdat, prjNam, money0=1000000): ''' qt_init(qx,xlst,rdat): 初始化zw量化参数,stk股票内存数据库等 【输入】: xlst (list): 股票代码列表,例如:xlst=['aeti','egan','glng','simo'],xlst=['002739','300239'] rdat (str): 股票数据目录,可直接使用 zwDat的中美股票数据:\\zwdat\\cn\\Day\\,\\zwdat\\us\\Day\\, prjNam (str): 项目名称 money0 (int): 启动资金,默认是:1000000(100w) 【输出】: qx (zwQuantx): 程序化全局变量qx ''' # qx=zw.zwQuantX('tur',1000000) #100w qx = zw.zwQuantX(prjNam, money0) # 100w # ------设置各种价格模式: # priceWrk,策略分析时,使用的股票价格,一般是:dprice,复权收盘价 # priceBuy,买入/卖出的股票价格,一般是:kprice,一般采用次日的复权开盘价 # priceCalc,最后结算使用的股票价格,一般是:adj close,复权收盘价 qx.priceCalc = 'close' # qx.priceCalc='adj close' qx.priceWrk = 'dprice' qx.priceBuy = 'kprice' # ----------设置绘图&数据输出格式 mpl.style.use('seaborn-whitegrid') pd.set_option('display.width', 450) # -----设置数据源目录等场所,读取股票数据,stkLib qx.rdat = rdat zwx.stkLibRd(xlst, rdat) # # 大盘指数.设置 # zw.stkInxLib=None #全局变量,大盘指数,内存股票数据库 qx.stkInxRDat = '\\zwdat\\cn\\xday\\' # 大盘指数数据源路径 qx.stkInxPriceName = 'close' # 大盘指数数据列名称,默认是:close # 大盘指数代码,名称拼音,中文名称 # qx.stkInxCode,qx.stkInxName,qx.stkInxCName='000001','sh001','上证指数' # 读取股票数据, xtim0 = parse('9999-01-01') xtim9 = parse('1000-01-01') zw.stkLibTim = {} # 记录每只股票的交易起点时间和终点时间,终点作为清仓判断标志。 for xcod in zw.stkLibCode: xt0, xt9 = zwx.stkLibGetTimX(xcod) xcod_tim0 = xt0.strftime('%Y-%m-%d') xcod_tim9 = xt9.strftime('%Y-%m-%d') zw.stkLibTim[xcod] = [xcod_tim0, xcod_tim9] if xtim0 > xt0: xtim0 = xt0 if xtim9 < xt9: xtim9 = xt9 xtim0 = xtim0.strftime('%Y-%m-%d') xtim9 = xtim9.strftime('%Y-%m-%d') qx.qxTimSet(xtim0, xtim9) if qx.debugMod > 0: print(xtim0, xtim9, '\nstkCode', zw.stkLibCode) # zwx.stkLibPr() return qx
def bt_init(xlst, rdat, prjNam, money0=1000000): ''' qt_init(qx,xlst,rdat): 初始化zw量化參數,stk股票記憶體中資料庫等 【輸入】: xlst (list): 股票代碼列表,例如:xlst=['aeti','egan','glng','simo'],xlst=['002739','300239'] rdat (str): 股票資料目錄,可直接使用 zwDat的中美股票資料:\\zwdat\\cn\\Day\\,\\zwdat\\us\\Day\\, prjNam (str): 項目名稱 money0 (int): 啟動資金,預設是:1000000(100w) 【輸出】: qx (zwQuantx): 程式化全域變數qx ''' # qx=zw.zwQuantX('tur',1000000) #100w qx = zw.zwQuantX(prjNam, money0) # 100w # ------設定各種價格模式: # priceWrk,策略分析時,使用的股票價格,一般是:dprice,複權收盤價 # priceBuy,買入/賣出的股票價格,一般是:kprice,一般採用次日的複權開盤價 # priceCalc,最後結算使用的股票價格,一般是:adj close,複權收盤價 qx.priceCalc = 'close' # qx.priceCalc='adj close' qx.priceWrk = 'dprice' qx.priceBuy = 'kprice' # ----------設定繪圖&資料輸出格式 mpl.style.use('seaborn-whitegrid') pd.set_option('display.width', 450) # -----設定資料原始目錄等場所,讀取股票資料,stkLib qx.rdat = rdat zwx.stkLibRd(xlst, rdat) # # 大盤指數.設定 # zw.stkInxLib=None #全域變數,大盤指數,記憶體股票資料庫 qx.stkInxRDat = '\\zwdat\\cn\\xday\\' # 大盤指數資料來源路徑 qx.stkInxPriceName = 'close' # 大盤指數資料列名稱,預設是:close # 大盤指數代碼,名稱拼音,中文名稱 # qx.stkInxCode,qx.stkInxName,qx.stkInxCName='000001','sh001','上證指數' # 讀取股票資料, xtim0 = parse('9999-01-01') xtim9 = parse('1000-01-01') zw.stkLibTim = {} # 記錄每檔股票的交易起點時間和終點時間,終點作為清倉判斷標誌。 for xcod in zw.stkLibCode: xt0, xt9 = zwx.stkLibGetTimX(xcod) xcod_tim0 = xt0.strftime('%Y-%m-%d') xcod_tim9 = xt9.strftime('%Y-%m-%d') zw.stkLibTim[xcod] = [xcod_tim0, xcod_tim9] if xtim0 > xt0: xtim0 = xt0 if xtim9 < xt9: xtim9 = xt9 xtim0 = xtim0.strftime('%Y-%m-%d') xtim9 = xtim9.strftime('%Y-%m-%d') qx.qxTimSet(xtim0, xtim9) if qx.debugMod > 0: print(xtim0, xtim9, '\nstkCode', zw.stkLibCode) # zwx.stkLibPr() return qx
# -*- coding: utf-8 -*- import numpy as np import pandas as pd 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())
# -*- coding: utf-8 -*- import numpy as np import pandas as pd 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=zw.stkLibCode[0] d2=zw.stkLib[xcod] print('\nd2',xcod) print(d2.head()) # print('') xlst=['@inx\\inx_code.csv'] zwx.stkLibRd(xlst,'\\zwDat\\cn\\xday\\'); print(zw.stkLibCode); xcod=zw.stkLibCode[0] d2=zw.stkLib[xcod] print('\nd2',xcod) print(d2.head())
注意, kmidlst 数据源为: stkLib[xcod],包含预处理扩充的数据列 midSgn0,中部绘图区图标前缀 其中,“<xcod>”为特殊符号,表示对应的股票代码 【输出】 无 # zwBackTest 回溯测试工具函数 def bt_init(xlst,rdat,prjNam,money0=1000000): return qx 设置回溯测试参数 'xlst 股票代码列表''rdat 股票数据目录''prjNam 项目名称''money0 启动资金' '初始化启动资金:qx=zw.zwQuantX(prjNam,money0);' '设置各种价格模式:qx.priceCalc, qx.priceWrk, qx.priceBuy' '设置绘图 和 数据输出格式' '设置数据源目录等场所,读取股票数据' qx.rdat=rdat zwx.stkLibRd(xlst,rdat) '设置大盘指数' '读取股票数据 qx.qxTimSet(xtim0,xtim9)' def zwBackTest100(qx):回溯测试只函数,单一股票,单一时间点的测试 #----运行策略函数,进行策略分析 qx.stkNum=qx.staFun(qx); if qx.stkNum!=0: #----检查,是不是有效交易 xfg,qx.xtrdChk=zwx.xtrdChkFlag(qx) if xfg: #----如果是有效交易,加入交易列表 zwx.xtrdLibAdd(qx) elif qx.trdNilFlag: zwx.xtrdLibNilAdd(qx) def zwBackTest(qx):回溯测试主程序