Beispiel #1
0
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
Beispiel #2
0
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
Beispiel #3
0
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
Beispiel #4
0
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
Beispiel #5
0
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
Beispiel #6
0
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
Beispiel #7
0
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