Beispiel #1
0
def 连续N次股东户数减少(arr, count=1):
    currentDateTag = CONVERT.GetCurrentDateTag()
    arr = sorted(arr, key=lambda k: k["股东户数统计截止日Tag"], reverse=True)
    size = len(arr)
    count = count if count < size else size
    subArr = arr[:count]
    subArr = list(
        filter(lambda k: k["股东户数统计截止日Tag"] >= currentDateTag - 100,
               subArr))  #时间段要改进
    if 0 == len(subArr):
        return False

    subArr股东户数增减比例 = list(map(lambda x: x["股东户数增减比例"], subArr))
    subArr股东户数增减比例中位数 = median(subArr股东户数增减比例)
    find = True and 0 < len(subArr)
    for item in subArr:
        #print("%s %s %s"%(arr[0]["Code"],arr[0]["Name"],item["股东户数增减比例"]))
        if item["股东户数增减比例"] > 0:
            find = find and False
            break
        elif item["股东户数增减比例"] == 0:
            find = find and False
            break
        elif item["股东户数增减比例"] < 0 and subArr股东户数增减比例中位数 < 0:
            find = find and True
    return find
    pass
Beispiel #2
0
def 最新盈利能力指标(arr, count=3):
    arr = list(filter(lambda k: "每股指标Tag" in k, arr))  #

    currentDateTag = CONVERT.GetCurrentDateTag()
    arr = sorted(arr, key=lambda k: k["每股指标Tag"], reverse=True)
    size = len(arr)
    count = count if count < size else size
    subArr = arr[:count]
    subArr = list(filter(lambda k: k["每股指标Tag"] >= 20190331, subArr))  #时间段要改进
    if 0 == len(subArr):
        return False

    subArr加权净资产收益率 = list(map(lambda x: x["加权净资产收益率(%)"], subArr))
    subArr加权净资产收益率中位数 = median(subArr加权净资产收益率)
    find = True and 0 < len(subArr)
    for item in subArr:
        #print("%s %s %s"%(arr[0]["Code"],arr[0]["Name"],item["股东户数增减比例"]))
        if 6 < item["加权净资产收益率(%)"] and 0.5 <= item["每股经营现金流(元)"] and item[
                "资产负债率(%)"] <= 50:
            find = find and True
        elif item["加权净资产收益率(%)"] == 0:
            find = find and False
            break
        elif item["加权净资产收益率(%)"] < 0:
            find = find and False
            break
        else:
            return False
    return find
    pass
Beispiel #3
0
def 最新N月内机构调研(arr,count=3):
    arr = list(filter(lambda k:"接待日期Tag" in k,arr)) #

    currentDateTag = CONVERT.GetCurrentDateTag()
    arr = sorted(arr,  key  = lambda  k:k["接待日期Tag"],reverse=True)
    size = len(arr)
    count = count if count<size else size
    subArr = arr[:count]
    subArr = list(filter(lambda k:k["接待日期Tag"]>=	20191101,subArr)) #时间段要改进
    if 0== len(subArr):
        return False

    subArr接待机构数量=list(map(lambda x:x["接待机构数量"],subArr))
    subArr接待机构数量中位数 = median(subArr接待机构数量)
    find=True and 0<len(subArr)
    for item in subArr:
        #print("%s %s %s"%(arr[0]["Code"],arr[0]["Name"],item["股东户数增减比例"]))
        if 8<=item["接待机构数量"] and 8<=subArr接待机构数量中位数: 
            find=find and True
        elif  item["接待机构数量"]==0: 
            find=find and False
            break
        elif  item["接待机构数量"]<0: 
            find=find and False
            break
        else:
            return False
    return find
    pass
Beispiel #4
0
def 最新盈利能力指标(arr, count=8):
    currentDateTag = CONVERT.GetCurrentDateTag()
    arr = sorted(arr, key=lambda k: k["盈利能力指标ag"], reverse=True)
    size = len(arr)
    count = count if count < size else size
    subArr = arr[:count]
    subArr = list(filter(lambda k: k["盈利能力指标Tag"] >= 20190930,
                         subArr))  #时间段要改进
    if 0 == len(subArr):
        return False

    subArr加权净资产收益率 = list(map(lambda x: x["加权净资产收益率(%)"], subArr))
    subArr主力净流入净占比中位数 = median(subArr主力净流入净占比)
    find = True and 0 < len(subArr)
    for item in subArr:
        #print("%s %s %s"%(arr[0]["Code"],arr[0]["Name"],item["股东户数增减比例"]))
        if item["加权净资产收益率(%)"] > 0:
            find = find and False
            break
        elif item["主力净流入净占比"] == 0:
            find = find and False
            break
        elif item["主力净流入净占比"] < 0 and subArr主力净流入净占比中位数 < 0:
            find = find and True
    return find
    pass
Beispiel #5
0
def 涨跌幅P1大于一半(arr, count=20):
    currentDateTag = CONVERT.GetCurrentDateTag()
    arr = sorted(arr, key=lambda k: k["日期Tag"], reverse=True)
    size = len(arr)
    count = count if count < size else size
    subArr = arr[:count]
    subArr = list(filter(lambda k: k["日期Tag"] >= 20191215, subArr))  #时间段要改进
    if 0 == len(subArr):
        return False

    subArr涨跌幅 = list(map(lambda x: x["涨跌幅"], subArr))
    subArr涨幅绝对值大于P1小于P4 = list(
        filter(lambda x: abs(x["涨跌幅"]) > 1.0 and abs(x["涨跌幅"]) <= 4.0, subArr))
    subArr涨幅绝对值大于P1小于P4中位数 = median(
        list(map(lambda x: x["涨跌幅"], subArr涨幅绝对值大于P1小于P4)))
    if 0.7 <= (
            len(subArr涨幅绝对值大于P1小于P4) / len(subArr涨跌幅)
    ) and 0 < subArr涨幅绝对值大于P1小于P4中位数 and subArr涨幅绝对值大于P1小于P4中位数 < 0.2:
        return True
    return False

    pass
Beispiel #6
0
def callback(qName,input):
    #print(input)
    data=json.loads(input)
    code = data["Code"].strip()
    name = data["Name"].strip()
    tables = data["Tables"]
    if 3!=len(tables):
        return None

    table=data["Tables"][2]
    rows=table["body"]
    for row in rows:
        if  8== len(row):
            序号 =CONVERT.StrToInt (row[0])
            机构名称 = row[1]
            日期Tag = CONVERT.GetCurrentDateTag() 
            机构属性 = row[3]
            持股总数 =CONVERT.StrToFloat(row[4])
            持股市值 = CONVERT.StrToFloat(row[5])
            占总股本比例 =  CONVERT.StrToFloat( row[6])
            占流通股本比例=  CONVERT.StrToFloat(row[7])  
            item={
                       "Code":code
                      ,"Name":name
                      ,"序号":序号
                      ,"日期Tag":日期Tag
                      ,"机构属性":机构属性
                      ,"持股总数":持股总数
                      ,"持股市值":持股市值
                      ,"占总股本比例":占总股本比例
                      ,"占流通股本比例":占流通股本比例
                  } 
            dictName="PreData:股票:%s:主力持仓"%code
            r.SortDictSave(dictName,json.dumps(item,ensure_ascii=False),日期Tag)
            print(item)
    pass