def xtick_down8tim_codes(qx): ''' 下載指定日期,stkCodeLib包含的所有代碼的tick歷史分筆資料 並轉換成對應的分時資料:5/15/30/60 分鐘 資料檔案保存在:對應的資料目錄 \zwdat\tick\yyyy-mm\ 目錄下,yyyy,是年份;mm,是月份 運行時,會根據日期,股票代碼,生成資料檔案名:ftg [輸入] qx.xtimSgn,當前日期的字串 qx.stkCodeLib,包含所有股票代碼的pd資料表格 ''' # qx.xday0ChkFlag=False self.codeInx0k=-1 # inx0,qx.codeNum=qx.codeInx,len(dinx['code']) numNil = 0 for i, xc in enumerate(qx.stkCodeLib['code']): code = "%06d" % xc # print("\n",i,"/",qx.codeNum,"code,",code) qx.code, qx.codeCnt = code, i # --- ftg = '%s%s_%s.csv' % (qx.rtickTimMon, code, qx.xtimSgn) xfg = os.path.exists(ftg) if xfg: numNil = 0 else: if numNil < 90: datFlag, dfNum = xtick_down100(qx, ftg) numNil = zwt.iff2(datFlag, 0, numNil + 1) if dfNum == 3: numNil += 10 # print(xfg, datFlag, qx.codeCnt, "/", qx.codeNum, ftg, numNil) # if numNil > 90: break
def xtick_down8tim_codes(qx): ''' 下载指定日期,stkCodeLib包含的所有代码的tick历史分笔数据 并转换成对应的分时数据:5/15/30/60 分钟 数据文件保存在:对应的数据目录 \zwdat\tick\yyyy-mm\ 目录下,yyyy,是年份;mm,是月份 运行时,会根据日期,股票代码,生成数据文件名:ftg [输入] qx.xtimSgn,当前日期的字符串 qx.stkCodeLib,包含所有股票代码的pd数据表格 ''' #qx.xday0ChkFlag=False self.codeInx0k=-1 #inx0,qx.codeNum=qx.codeInx,len(dinx['code']); numNil = 0 for i, xc in enumerate(qx.stkCodeLib['code']): code = "%06d" % xc #print("\n",i,"/",qx.codeNum,"code,",code) qx.code, qx.codeCnt = code, i #--- ftg = '%s%s_%s.csv' % (qx.rtickTimMon, code, qx.xtimSgn) xfg = os.path.exists(ftg) if xfg: numNil = 0 else: if numNil < 90: datFlag, dfNum = xtick_down100(qx, ftg) numNil = zwt.iff2(datFlag, 0, numNil + 1) if dfNum == 3: numNil += 10 # print(xfg, datFlag, qx.codeCnt, "/", qx.codeNum, ftg, numNil) # if numNil > 90: break
def xtick_down8tim_codes(qx): ''' 下载指定日期,stkCodeLib包含的所有代码的tick历史分笔数据 并转换成对应的分时数据:5/15/30/60 分钟 数据文件保存在:对应的数据目录 \zwdat\tick\yyyy-mm\ 目录下,yyyy,是年份;mm,是月份 运行时,会根据日期,股票代码,生成数据文件名:ftg [输入] qx.xtimSgn,当前日期的字符串 qx.stkCodeLib,包含所有股票代码的pd数据表格 ''' # qx.xday0ChkFlag=False self.codeInx0k=-1 # inx0,qx.codeNum=qx.codeInx,len(dinx['code']) numNil = 0 for i, xc in enumerate(qx.stkCodeLib['code']): code = "%06d" % xc # print("\n",i,"/",qx.codeNum,"code,",code) qx.code, qx.codeCnt = code, i # --- ftg = '%s%s_%s.csv' % (qx.rtickTimMon, code, qx.xtimSgn) xfg = os.path.exists(ftg) if xfg: numNil = 0 else: if numNil < 90: datFlag, dfNum = xtick_down100(qx, ftg) numNil = zwt.iff2(datFlag, 0, numNil + 1) if dfNum == 3: numNil += 10 # print(xfg, datFlag, qx.codeCnt, "/", qx.codeNum, ftg, numNil) # if numNil > 90: break
def xtrdChkFlag(account): ''' 检查是不是有效交易 Args: account: zwQuantX数据包 #account.stkNum,>0,买入股票;<0,卖出股票;-1;卖出全部股票 #预设参数:account.qxUsr Return: xfg,True,有效交易;False,无效交易 b2:有效交易的数据包 Bar :ivar xnum (int): 用户持有资产总数 ''' kfg = False b2 = None account.trdNilFlag = False dcash9 = account.qxUsr['cash'] dnum = account.stkNum dnum5 = abs(dnum) numFg = zwt.xinEQ(dnum5, account.stkNum0, account.stkNum9) if dnum > 0: kprice = stkGetVars(account, account.priceBuy) dsum = kprice * (dnum - divmod(dnum, 100)[1]) #股票买入股票总数,必须在限额内:100-2w手,总值不能超过现金数,买空需修改此处 if numFg: if dsum < dcash9: account.stkNum = int(dnum - divmod(dnum, 100)[1]) kfg = True elif (dsum - kprice * 100) < dcash9: account.stkNum = int(dnum - divmod(dnum, 100)[1] - 100) dsum = dsum - kprice * 100 kfg = True else: account.trdNilFlag = True else: if account.stkCode in account.qxUsrStk: xnum = account.qxUsrStk[account.stkCode] if dnum == -1: account.stkNum = -xnum kfg = True else: kfg = zwt.iff2(dnum5 <= xnum, True, False) # account.trdNilFlag = not kfg elif dnum != -1: account.trdNilFlag = True # if kfg or account.trdNilFlag: b2 = xtrdObjSet(account) #设置交易节点 else: account.stkNum = 0 return kfg, b2
def xtrdChkFlag(qx): ''' 检查是不是有效交易 Args: qx (zwQuantX): zwQuantX数据包 #qx.stkNum,>0,买入股票;<0,卖出股票;-1;卖出全部股票 #预设参数:qx.qxUsr Return: xfg,True,有效交易;False,无效交易 b2:有效交易的数据包 Bar :ivar xnum (int): 用户持有资产总数 ''' kfg = False b2 = None qx.trdNilFlag = False dcash9 = qx.qxUsr['cash'] dnum = qx.stkNum dnum5 = abs(dnum) numFg = zwt.xinEQ(dnum5, qx.stkNum0, qx.stkNum9) # -------- # b2=xtrdObjSet(qx); #print('::b2\n',b2) if dnum > 0: # dsum=b2['sum']; kprice = stkGetVars(qx, qx.priceBuy) dsum = kprice * dnum # 股票买入股票总数,必须在限额内:100-2w手,总值不能超过现金数,买空需修改此处 if numFg: if dsum < dcash9: kfg = True else: qx.trdNilFlag = True else: if qx.stkCode in qx.qxUsrStk: # print('@',qx.stkCode,dnum) xnum = qx.qxUsrStk[qx.stkCode] if dnum == -1: qx.stkNum = -xnum kfg = True else: kfg = zwt.iff2(dnum5 <= xnum, True, False) # qx.trdNilFlag = not kfg elif dnum != -1: qx.trdNilFlag = True # if kfg or qx.trdNilFlag: b2 = xtrdObjSet(qx) # 设置交易节点 else: qx.stkNum = 0 return kfg, b2
def xtrdChkFlag(qx): ''' 檢查是不是有效交易 Args: qx (zwQuantX): zwQuantX數據包 #qx.stkNum,>0,買入股票;<0,賣出股票;-1;賣出全部股票 #預設參數:qx.qxUsr Return: xfg,True,有效交易;False,無效交易 b2:有效交易的資料包 Bar :ivar xnum (int): 用戶持有資產總數 ''' kfg = False b2 = None qx.trdNilFlag = False dcash9 = qx.qxUsr['cash'] dnum = qx.stkNum dnum5 = abs(dnum) numFg = zwt.xinEQ(dnum5, qx.stkNum0, qx.stkNum9) # -------- # b2=xtrdObjSet(qx) #print('::b2\n',b2) if dnum > 0: # dsum=b2['sum'] kprice = stkGetVars(qx, qx.priceBuy) dsum = kprice * dnum # 股票買入股票總數,必須在限額內:100-2w手,總值不能超過現金數,買空需修改此處 if numFg: if dsum < dcash9: kfg = True else: qx.trdNilFlag = True else: if qx.stkCode in qx.qxUsrStk: # print('@',qx.stkCode,dnum) xnum = qx.qxUsrStk[qx.stkCode] if dnum == -1: qx.stkNum = -xnum kfg = True else: kfg = zwt.iff2(dnum5 <= xnum, True, False) # qx.trdNilFlag = not kfg elif dnum != -1: qx.trdNilFlag = True # if kfg or qx.trdNilFlag: b2 = xtrdObjSet(qx) # 設定交易節點 else: qx.stkNum = 0 return kfg, b2
def xtrdChkFlag(qx): ''' 检查是不是有效交易 Args: qx (zwQuantX): zwQuantX数据包 #qx.stkNum,>0,买入股票;<0,卖出股票;-1;卖出全部股票 #预设参数:qx.qxUsr Return: xfg,True,有效交易;False,无效交易 b2:有效交易的数据包 Bar :ivar xnum (int): 用户持有资产总数 ''' kfg = False b2 = None qx.trdNilFlag = False dcash9 = qx.qxUsr['cash'] dnum = qx.stkNum dnum5 = abs(dnum) numFg = zwt.xinEQ(dnum5, qx.stkNum0, qx.stkNum9) # -------- # b2=xtrdObjSet(qx) #print('::b2\n',b2) if dnum > 0: # dsum=b2['sum'] kprice = stkGetVars(qx, qx.priceBuy) dsum = kprice * dnum # 股票买入股票总数,必须在限额内:100-2w手,总值不能超过现金数,买空需修改此处 if numFg: if dsum < dcash9: kfg = True else: qx.trdNilFlag = True else: if qx.stkCode in qx.qxUsrStk: # print('@',qx.stkCode,dnum) xnum = qx.qxUsrStk[qx.stkCode] if dnum == -1: qx.stkNum = -xnum kfg = True else: kfg = zwt.iff2(dnum5 <= xnum, True, False) # qx.trdNilFlag = not kfg elif dnum != -1: qx.trdNilFlag = True # if kfg or qx.trdNilFlag: b2 = xtrdObjSet(qx) # 设置交易节点 else: qx.stkNum = 0 return kfg, b2