Exemplo n.º 1
0
    def orderAdd_Updata(form, orderType):
        #记录账单
        pManager = gol._Get_Setting('manageBills', None)
        pBills = pManager[orderType]

        billInfo = pBills.OnCreat_BillInfo()
        billInfo['usrID'] = form.orderUsrName.data
        billInfo['usrBillType'] = "卖出"
        billInfo['recordTime'] = datetime.datetime.now()
        billInfo['recorder'] = form.recorderName.data
        billInfo['tradeID'] = ""
        billInfo['tradeID_Relation'] = ""
        billInfo['tradeParty'] = form.orderUsrName.data
        billInfo['tradeType'] = orderType
        billInfo['tradeTypeTarget'] = form.orderTargetType.data
        billInfo['tradeTarget'] = form.orderTarget.data
        billInfo['tradePrice'] = myData_Trans.To_Float(
            form.orderPrice.data.split(' ')[0].replace('¥', ''))
        billInfo['tradeNum'] = myData_Trans.To_Float(
            form.orderNum.data.split(' ')[0])
        billInfo['tradeMoney'] = myData_Trans.To_Float(
            form.orderMoney.data.replace('¥', ''))
        billInfo['tradePoundage'] = 0
        billInfo['tradeProfit'] = billInfo['tradeMoney']
        billInfo['tradeTime'] = datetime.datetime.now()
        billInfo['isDel'] = False
        billInfo['remark'] = form.orderRemark.data
        return pBills.Add_ByDict(billInfo)
Exemplo n.º 2
0
        def InitBystr(self, strSet, typeTime): 
            self.values = []
            self.typeTime = typeTime
            if(strSet == "*"): 
                self.allVlid = True
                return 

            #多个配置
            if(strSet.count(",") > 0): 
                values = strSet.split(',')
                for x in values:
                    pSet = myTimeSets.myTimeSet(x, typeTime)
                    self.setTimes.append(pSet)
                    #self.values.append(myData_Trans.To_Int(x))
                return

            #区间配置
            if(strSet.count("-") > 0): 
                temps = strSet.split('-')
                self.minTime = myData_Trans.To_Float(temps[0])
                self.maxTime = myData_Trans.To_Float(temps[1])
                #self.values = range(myData_Trans.To_Int(temps[0]), myData_Trans.To_Int(temps[1]))
                return
            else:
                if(strSet.count(".") > 0): 
                    self.values.append(myData_Trans.To_Float(strSet))
                else:
                    self.values.append(myData_Trans.To_Int(strSet))
Exemplo n.º 3
0
 def initWind(self, direction, speed, higth=0, startTime="", duration=-1):
     self.wind_Speed = myData_Trans.To_Float(str(speed))
     self.wind_Direction = self.initWind_Direction(direction)
     self.wind_Direction2 = 90 - self.wind_Direction
     if (self.wind_Direction2 < 0): self.wind_Direction2 += 360
     self.wind_Height = myData_Trans.To_Float(str(higth))
     self.wind_Tiem_start = startTime
     if (type(self.wind_Tiem_start) == str):
         self.wind_Tiem_start = myData_Trans.Tran_ToDatetime(startTime)
     self.wind_Tiem_duration = duration
Exemplo n.º 4
0
 def _Trans_Value(self, value, utype):  
     if(utype == "string"):
         return str(value)
     elif(utype == "float"):
         if(type(value) == float): return value
         if(type(value) == int): return value
         return myData_Trans.To_Float(value)
     elif(utype == "int"):
         if(type(value) == int): return value
         return myData_Trans.To_Int(value)
     elif(utype == "bool"):
         if(type(value) == bool): return value
         return myData_Trans.To_Bool(value)
     elif(utype == "datetime"):
         if(type(value) == datetime.datetime): return value
         return self._Trans_Value_Datetime(value)
     elif(utype == "list"):
         if(type(value) == list): return value
         if(value == None): return []
         if(value.count("~*^") > 0):
             data = list(json.loads(value.replace("~*^", ",")))
             return data
         else:
             return []
     return value
Exemplo n.º 5
0
    def get(self):
        #提取股票信息
        pMsg = copy.deepcopy(gol._Get_Setting('Return_strFormat', {}))
        pRisks = gol._Get_Value('zxcRisk_Control', None)
        bResult = True

        # 组装参数并添加
        #dicParam = {"边界限制": True,"定量监测": False, "监测间隔": 0.01,"止盈线": 0.20, "止损线": -0.05, "动态止盈": True, "动态止损": True, "止盈回撤": 0.01, "止盈比例": 0.20, "止损回撤": 0.01, "止损比例": 0.20 }
        usrID = request.args.get('usrID', '')
        usrTag = request.args.get('usrTag', '')
        code_id = request.args.get('code_id', "")
        code_name = request.args.get('code_name', "")
        removeSet = myData_Trans.To_Bool(request.args.get('removeSet', False))
        paramInfo = myData_Trans.Tran_ToDict(request.args.get('setInfo', "{}"))
        paramInfo['removeSet'] = removeSet

        dtTrade = request.args.get('time', "")
        dateTag = request.args.get('dateTag', "")
        stockPrice = myData_Trans.To_Float(
            str(request.args.get('stockPrice', 0)))
        stockNum = myData_Trans.To_Int(str(request.args.get('stockNum', 0)))
        if (removeSet == False and (stockPrice == 0 or stockNum == 0)):
            bResult = False
            pMsg['text'] = "股价、数量不能为0."
        if (usrID == "" and usrTag == ""):
            bResult = False
            pMsg['text'] = "用户信息不能为空."
        if (bResult):
            strR = pRisks.addRiskSet(usrID, usrTag, code_id, code_name,
                                     stockPrice, stockNum, dtTrade, dateTag,
                                     paramInfo)

        #解析参数
        strTag = "风控设置:" + code_name + "\n"
        if (bResult):
            if (removeSet == False):
                if (stockPrice == 0 or stockNum == 0):
                    pMsg['text'] = strTag + " --已成功修改参数信息."
                else:
                    trade = myData.iif(stockNum > 0, "买入", "卖出")
                    if (stockNum % 100 == 0):
                        pMsg[
                            'text'] = strTag + F"新增{trade}:{str(abs(stockNum))} 股.\n{trade}均价:{stockPrice} 元/股)."
                    else:
                        pMsg[
                            'text'] = strTag + F"新增{trade}:{str(abs(stockNum))} 张.\n{trade}均价:{stockPrice} 元/张."
                bResult = True
            else:
                pMsg['text'] = strTag + " --设置已成功移除."
                bResult = True
        pMsg['result'] = bResult
        if (bResult == ""): pMsg['text'] = strTag + "操作失败!"
        return pMsg
Exemplo n.º 6
0
    def newData_ByInfo(self, dataInfo, checkTime=True):
        #解析所有返回数据
        if len(dataInfo) > 50:
            stkid = dataInfo[11:19]
            info = dataInfo[21:len(dataInfo) - 2]
            vargs = info.split(',')

            qd = self.newData()
            qd.id = stkid[2:]
            qd.idTag = stkid
            qd.rawline = info
            qd.name = vargs[0]
            qd.openPrice = vargs[1]
            qd.preClose = vargs[2]
            qd.lastPrice = vargs[3]
            qd.highPrice = vargs[4]
            qd.lowPrice = vargs[5]
            qd.buyPrice = vargs[6]
            qd.sellPrice = vargs[7]
            qd.tradeValume = vargs[8]
            qd.tradeTurnover = vargs[9]
            qd.buy1Volume = vargs[10]
            qd.buy1Price = vargs[11]
            qd.buy2Volume = vargs[12]
            qd.buy2Price = vargs[13]
            qd.buy3Volume = vargs[14]
            qd.buy3Price = vargs[15]
            qd.buy4Volume = vargs[16]
            qd.buy4Price = vargs[17]
            qd.buy5Volume = vargs[18]
            qd.buy5Price = vargs[19]
            qd.sell1Volume = vargs[20]
            qd.sell1Price = vargs[21]
            qd.sell2Volume = vargs[22]
            qd.sell2Price = vargs[23]
            qd.sell3Volume = vargs[24]
            qd.sell3Price = vargs[25]
            qd.sell4Volume = vargs[26]
            qd.sell4Price = vargs[27]
            qd.sell5Volume = vargs[28]
            qd.sell5Price = vargs[29]
            qd.date = vargs[30]
            qd.time = vargs[31]

            #时间检查(是否当天)
            if (checkTime):
                if (qd.checkTime() == False):
                    return None

            #设置数据
            qd.value = myData_Trans.To_Float(qd.lastPrice)
            return qd
        return None
Exemplo n.º 7
0
    def fromValueList(self, lstValue):
        self.dataList = lstValue
        dtNow = lstValue[0]
        if(type(dtNow) == str): dtNow = myData_Trans.Tran_ToDatetime(dtNow)

        self.date = str(dtNow.year) + "-" + str(dtNow.month) + "-" + str(dtNow.day)
        self.time = str(dtNow.hour) + ":" + str(dtNow.minute) + ":" + str(dtNow.second)
        self.lastPrice = str(lstValue[1])
        self.highPrice = str(lstValue[2])
        self.lowPrice = str(lstValue[3])
        self.buyPrice = str(lstValue[4])
        self.sellPrice = str(lstValue[5])
        self.tradeValume = str(lstValue[6])
        self.tradeTurnover = str(lstValue[7])
         
        self.buy1Volume = str(lstValue[8])      #买1-5量
        self.buy2Volume = str(lstValue[9])
        self.buy3Volume = str(lstValue[10])
        self.buy4Volume = str(lstValue[11])
        self.buy5Volume = str(lstValue[12])
        self.buy1Price = str(lstValue[13])      #买1-5价格       
        self.buy2Price = str(lstValue[14])
        self.buy3Price = str(lstValue[15])
        self.buy4Price = str(lstValue[16])
        self.buy5Price = str(lstValue[17])
        
        self.sell1Volume = str(lstValue[18])    #卖1-5量
        self.sell2Volume = str(lstValue[19])
        self.sell3Volume = str(lstValue[20])
        self.sell4Volume = str(lstValue[21])
        self.sell5Volume = str(lstValue[22])
        self.sell1Price = str(lstValue[23])
        self.sell2Price = str(lstValue[24])
        self.sell3Price = str(lstValue[25])
        self.sell4Price = str(lstValue[26])
        self.sell5Price = str(lstValue[27])

        self.priceOpen = myData_Trans.To_Float(self.openPrice)  #开盘价格
        self.priceBase = myData_Trans.To_Float(self.preClose)   #前一收盘价格
        return True
Exemplo n.º 8
0
    def _getH_delta(self):
        if (self.hasChimney == False): return 0

        # 参数提取
        T0 = self.air.temperature
        T1 = myData_Trans.To_Float(str(self.chimney_temperature_outlet))
        Vs = myData_Trans.To_Float(str(self.chimney_smoke_speed_outlet))
        D = myData_Trans.To_Float(str(self.chimney_diameter))
        U = myData_Trans.To_Float(str(self.chimney_wind_speed_outlet))
        if (self.chimney_wind_speed_outlet == ""):
            U = self.wind.getWind_Speed(self.height_Leak, self.air)

        # 计算烟气热释放率,KJ/s
        Pa = 1010
        h = Vs * 1
        r = D / 2
        Qv = math.pi * r * r * h
        T_delta = T1 - T0
        Qh = 0.35 * Pa * Qv * T_delta / (T1 + 273.15)

        # 计算烟气抬升高度
        if (Qh > 2100 or T_delta > 35):
            Hs = myData.iif(self.height_Leak > 240, 240, self.height_Leak)
            if (Qh > 21000):
                H_delta = 1.303 * math.pow(Qh, 1 / 3) * math.pow(Hs, 2 / 3) / U
            else:
                H_delta = 0.292 * math.pow(Qh, 3 / 5) * math.pow(Hs, 2 / 5) / U
        elif (Qh < 2100 and Qh > 1700):
            Hs = myData.iif(self.height_Leak > 240, 240, self.height_Leak)
            H1_delta = 2 * (1.5 * Vs * D + 0.01 * Qh) / U - 0.048 * (Qh -
                                                                     1700) / U
            H2_delta = 0.292 * math.pow(Qh, 3 / 5) * math.pow(Hs, 2 / 5) / U
            H_delta = H1_delta + (H2_delta - H1_delta) * (Qh - 1700) / 400
        elif (Qh < 1700 or T_delta < 35):
            H_delta = 2 * (1.5 * Vs * D + 0.01 * Qh) / U
        return H_delta
Exemplo n.º 9
0
    def Trans_FromDict(self, dictSets, canLog = True):  
        #验证股票信息
        #pStocks = gol._Get_Value('setsStock', None)
        #lstStock = pStocks._Find(dictSets.get('标的编号',""), dictSets.get('标的名称',""), exType="")
        #if(len(lstStock) != 1): return{}
        #pStock = lstStock[0]
        #self.stockID = pStock.code_id
        #self.stockName = pStock.code_name
        

        #交易信息必须存在
        if(dictSets == None): return False
        index = -1
        strTime = dictSets.get('日期', "")
        if(type(strTime) != str): strTime = myData_Trans.Tran_ToDatetime_str(dictSets['日期'], "%Y-%m-%d %H:%M:%S")
        for x in self.logOperates:
            if(x['时间'] == strTime):
                index += 1
                break

        #解析信息
        self.ID = dictSets.get('ID',-1)
        self.usrID = dictSets['用户名']
        self.stockID = dictSets.get('标的编号',"")
        self.stockName = dictSets.get('标的名称',"")  

        stockNum_temp = myData_Trans.To_Float(str(dictSets.get("标的数量", 0)))
        stockAvg_temp = myData_Trans.To_Float(str(dictSets.get("标的均价", 0)))
        stockPosition_temp = myData_Trans.To_Float(str(dictSets.get("标的仓位", 1)))
        if(stockNum_temp == 0 or stockNum_temp == 0): return False

        self.datetime = dictSets.get("日期", self.datetime)
        self.remark = dictSets.get("备注", self.remark)
        self.isDel = not dictSets.get('isDel', not self.valid)  

        if(canLog):
            #提取时间
            strTime = self.datetime
            if(type(strTime) != str): strTime = myData_Trans.Tran_ToDatetime_str(strTime, "%Y-%m-%d %H:%M:%S")

            #存在则更新
            if(index == -1):
                self.logOperates.append({"股数": stockNum_temp,"股价":stockAvg_temp,"时间": strTime})    #仓位变化记录
            else:
                self.logOperates[index] = {"股数": stockNum_temp,"股价":stockAvg_temp,"时间": strTime}
        else:
            self.logOperates = dictSets.get('操作日志', self.logOperates)
        
        #计算仓位变化
        if(index == -1):
            stockNum = self.stockNum
            if(stockNum_temp > 0):
                #买入时更新成本 
                stockNum += abs(stockNum_temp) 
                stockMoney = self.stockAvg * self.stockNum + stockNum_temp * stockAvg_temp
                self.stockPosition = (stockNum_temp * stockPosition_temp + self.stockNum * self.stockPosition) / stockNum
                self.stockAvg = stockMoney / stockNum
                self.stockNum = int(stockNum) 
            else:
                #卖出更新仓位
                self.stockPosition = (stockNum_temp * stockPosition_temp + self.stockNum * self.stockPosition) / stockNum
                if(self.stockPosition <= 0):
                    self.stockPosition = 0
                    self.valid = False
        self.stockFee = dictSets.get("手续费率", self.stockFee)

        self.stopProfit = dictSets.get("止盈线", self.stopProfit)
        self.stopLoss = dictSets.get("止损线", self.stopLoss)
        self.stopProfit_Dynamic = dictSets.get("动态止盈", self.stopProfit_Dynamic)
        self.stopLoss_Dynamic = dictSets.get("动态止损", self.stopLoss_Dynamic)
        self.stopProfit_Retreat = dictSets.get("止盈回撤", self.stopProfit_Retreat)
        self.stopLoss_Retreat = dictSets.get("止损回撤", self.stopLoss_Retreat)
        self.stopProfit_Trade = dictSets.get("止盈比例", self.stopProfit_Trade)
        self.stopLoss_Trade = dictSets.get("止损比例", self.stopLoss_Trade)
        
        self.priceMax = dictSets.get("最高价格", self.priceMax)
        self.priceCost = dictSets.get("成本价格", self.stockAvg)
        self.priceAvg_sell = dictSets.get("卖出均价", stockAvg_temp)
        self.priceNow = dictSets.get("当前价格", stockAvg_temp)
        self.profitMax_Stage = dictSets.get("阶段浮盈", self.profitMax_Stage)
        self.profitNow = dictSets.get("当前浮盈", self.profitNow)
        self.stopProfit_goon = dictSets.get("止盈状态", self.stopProfit_goon)
        return True
Exemplo n.º 10
0
def transData(dataType):
    dir = "D:\\myDevEvn\\UCMLCoreYunUMS7.6.1.8\\Standard\\Html\\BPObject\\sln_12002\\BusinessUnit\\我的测试\\data\\"
    pTable = myIO_xlsx.DtTable()
    pTable.Load_csv(dir + "dcjd_2020_08_20_pm.csv")

    indFields = pTable.Get_Index_Fields(pTable.dataField)
    ind_data = indFields[dataType]
    ind_name = indFields['"时间"']
    ind_lng = indFields['"经度"']
    ind_lat = indFields['"纬度"']

    # 循环提取数据
    maxValue = -999999
    lstRows = []
    rows = pTable._Rows()
    for i in range(0, rows):
        row = pTable[i]
        value = myData_Trans.To_Float(row[ind_data].replace('"', ''))
        if (value > maxValue):
            maxValue = value

        name = row[ind_name].replace('"', '')
        name = ""
        lng = myData_Trans.To_Float(row[ind_lng].replace('"', ''))
        lat = myData_Trans.To_Float(row[ind_lat].replace('"', ''))
        jsonInfo = {"name": name, "value": [lng, lat, value]}
        lstRows.append(jsonInfo)

    # 插值加密
    dataAdds = []
    deltaDic = 1.0 / 111000 * 5
    for i in range(0, rows - 1):
        value0 = lstRows[i]['value']
        value1 = lstRows[i + 1]['value']
        name = lstRows[i]['name']
        _deltaDic, linePoints = myData_Geometry.breakLine(
            value0[0], value0[1], value1[0], value1[1], deltaDic)
        if (len(linePoints) > 0):
            #计算插值
            dicT = myData_Geometry.distance(value0[0], value0[1], value1[0],
                                            value1[1])
            valueT = (value1[2] - value0[2]) / 2
            x0 = value0[0]
            y0 = value0[1]

            numPoint = len(linePoints)
            for x in range(0, numPoint, 2):
                x1 = linePoints[x]
                y1 = linePoints[x + 1]
                dicTemp = myData_Geometry.distance(x0, y0, x1, y1)
                valueTemp = value0[2] + valueT * (dicTemp / dicT)
                jsonInfo = {"name": name, "value": [x1, y1, valueTemp]}
                dataAdds.append({"index": i, "jsonInfo": jsonInfo})

    # 添加插值
    for i in range(len(dataAdds) - 1, -1, -1):
        dataAdd = dataAdds[i]
        jsonInfo = dataAdd["jsonInfo"]
        ind = dataAdd["index"]
        lstRows.insert(ind, jsonInfo)
    dataInfo = [lstRows, maxValue]
    strData = str(dataInfo).replace("'", '"')

    path = dir + dataType.replace('"', '') + ".json"
    myIO.Save_File(path, strData, True, False)
    pass
Exemplo n.º 11
0
    def toValueList(self):
        dtNow = self.getTime(False)
        if(len(self.dataList) > 1 and self.dataList[0] == dtNow and type(self.dataList[4]) != str):
           return self.dataList
        self.dataList = [] 
        self.dataList.append(dtNow)                                      #时间
        if(type(self.lastPrice) == str):
            self.dataList.append(myData_Trans.To_Float(self.lastPrice))      #最后价格
            self.dataList.append(myData_Trans.To_Float(self.highPrice))      #最高价格
            self.dataList.append(myData_Trans.To_Float(self.lowPrice))       #最低价格 
            self.dataList.append(myData_Trans.To_Float(self.buyPrice))       #买价
            self.dataList.append(myData_Trans.To_Float(self.sellPrice))      #卖价
            self.dataList.append(myData_Trans.To_Float(self.tradeValume))    #成交量
            self.dataList.append(myData_Trans.To_Float(self.tradeTurnover))  #成交额
        
            self.dataList.append(myData_Trans.To_Float(self.buy1Volume))     #买1-5量
            self.dataList.append(myData_Trans.To_Float(self.buy2Volume))   
            self.dataList.append(myData_Trans.To_Float(self.buy3Volume))   
            self.dataList.append(myData_Trans.To_Float(self.buy4Volume))   
            self.dataList.append(myData_Trans.To_Float(self.buy5Volume))  
            self.dataList.append(myData_Trans.To_Float(self.buy1Price))      #买1-5价格
            self.dataList.append(myData_Trans.To_Float(self.buy2Price))   
            self.dataList.append(myData_Trans.To_Float(self.buy3Price))   
            self.dataList.append(myData_Trans.To_Float(self.buy4Price))   
            self.dataList.append(myData_Trans.To_Float(self.buy5Price))   
        
            self.dataList.append(myData_Trans.To_Float(self.sell1Volume))    #卖1-5量
            self.dataList.append(myData_Trans.To_Float(self.sell2Volume))   
            self.dataList.append(myData_Trans.To_Float(self.sell3Volume))   
            self.dataList.append(myData_Trans.To_Float(self.sell4Volume))   
            self.dataList.append(myData_Trans.To_Float(self.sell5Volume))  
            self.dataList.append(myData_Trans.To_Float(self.sell1Price))     #卖1-5价格
            self.dataList.append(myData_Trans.To_Float(self.sell2Price))   
            self.dataList.append(myData_Trans.To_Float(self.sell3Price))   
            self.dataList.append(myData_Trans.To_Float(self.sell4Price))   
            self.dataList.append(myData_Trans.To_Float(self.sell5Price))   

            self.priceOpen = myData_Trans.To_Float(self.openPrice)           #开盘价格
            self.priceBase = myData_Trans.To_Float(self.preClose)            #前一收盘价格
        else:
            self.dataList.append((self.lastPrice))      #最后价格
            self.dataList.append((self.highPrice))      #最高价格
            self.dataList.append((self.lowPrice))       #最低价格 
            self.dataList.append((self.buyPrice))       #买价
            self.dataList.append((self.sellPrice))      #卖价
            self.dataList.append((self.tradeValume))    #成交量
            self.dataList.append((self.tradeTurnover))  #成交额
        
            self.dataList.append((self.buy1Volume))     #买1-5量
            self.dataList.append((self.buy2Volume))   
            self.dataList.append((self.buy3Volume))   
            self.dataList.append((self.buy4Volume))   
            self.dataList.append((self.buy5Volume))  
            self.dataList.append((self.buy1Price))      #买1-5价格
            self.dataList.append((self.buy2Price))   
            self.dataList.append((self.buy3Price))   
            self.dataList.append((self.buy4Price))   
            self.dataList.append((self.buy5Price))   
        
            self.dataList.append((self.sell1Volume))    #卖1-5量
            self.dataList.append((self.sell2Volume))   
            self.dataList.append((self.sell3Volume))   
            self.dataList.append((self.sell4Volume))   
            self.dataList.append((self.sell5Volume))  
            self.dataList.append((self.sell1Price))     #卖1-5价格
            self.dataList.append((self.sell2Price))   
            self.dataList.append((self.sell3Price))   
            self.dataList.append((self.sell4Price))   
            self.dataList.append((self.sell5Price))   

            self.priceOpen = self.openPrice           #开盘价格
            self.priceBase = self.preClose            #前一收盘价格
        self.priceRiseFall = self.dataList[1] / self.priceBase - 1       #涨跌幅 
        return self.dataList
Exemplo n.º 12
0
 def toValueFloat(self, value):
     value = myData_Trans.To_Float(str(value))
     return round(value, 6)
Exemplo n.º 13
0
    def Trans_FromDict(self, dictSets, canLog=True):
        #验证股票信息
        #pStocks = gol._Get_Value('setsStock', None)
        #lstStock = pStocks._Find(dictSets.get('标的编号',""), dictSets.get('标的名称',""), exType="")
        #if(len(lstStock) != 1): return{}
        #pStock = lstStock[0]
        #self.stockID = pStock.code_id
        #self.stockName = pStock.code_name

        #交易信息必须存在
        if (dictSets == None): return False
        bExsit = False
        index = -1
        strTime = dictSets.get('操作时间', "")
        if (type(strTime) != str):
            strTime = myData_Trans.Tran_ToDatetime_str(dictSets['操作时间'],
                                                       "%Y-%m-%d %H:%M:%S")
        for x in self.logOperates:
            index += 1
            if (x['时间'] == strTime):
                bExsit = True
                break

        #解析信息
        self.ID = dictSets.get('ID', self.ID)
        self.usrID = dictSets.get('用户名', self.usrID)
        self.usrTag = dictSets.get('用户标签', self.usrTag)
        self.stockID = dictSets.get('标的编号', self.stockID)
        self.stockName = dictSets.get('标的名称', self.stockName)
        self.stockType = dictSets.get('标的类型', self.stockType)

        stockNum_temp = myData_Trans.To_Float(str(dictSets.get("标的数量", 0)))
        stockAvg_temp = myData_Trans.To_Float(str(dictSets.get("标的均价", 0)))
        stockPosition_temp = myData_Trans.To_Float(str(dictSets.get("标的仓位",
                                                                    1)))
        if (stockNum_temp == 0 or stockNum_temp == 0): return False

        self.logDatetime = dictSets.get("操作时间", self.logDatetime)
        if (type(self.logDatetime) == str):
            self.logDatetime = myData_Trans.Tran_ToDatetime(
                self.logDatetime, "%Y-%m-%d %H:%M:%S")

        self.remark = dictSets.get("备注", self.remark)
        self.isDel = dictSets.get('isDel', not self.valid)

        if (canLog):
            #提取时间
            strTime = self.logDatetime
            if (type(strTime) != str):
                strTime = myData_Trans.Tran_ToDatetime_str(
                    strTime, "%Y-%m-%d %H:%M:%S")

            #存在则更新
            if (bExsit == False):
                self.logOperates.append({
                    "股数": stockNum_temp,
                    "股价": stockAvg_temp,
                    "时间": strTime
                })  #仓位变化记录
            else:
                self.logOperates[index] = {
                    "股数": stockNum_temp,
                    "股价": stockAvg_temp,
                    "时间": strTime
                }
        else:
            self.logOperates = dictSets.get('操作日志', self.logOperates)
        self.sumOperates = dictSets.get('操作统计数', 0)

        #计算仓位变化
        if (bExsit == False):
            stockNum = self.stockNum
            if (stockNum_temp > 0):
                #买入时更新成本
                stockNum += abs(stockNum_temp)
                stockMoney = self.stockAvg * self.stockNum + stockNum_temp * stockAvg_temp
                self.stockPosition = (
                    stockNum_temp * stockPosition_temp +
                    self.stockNum * self.stockPosition) / stockNum
                self.stockAvg = stockMoney / stockNum
                self.stockNum = int(stockNum)
            else:
                #卖出更新仓位
                if (stockNum == 0):
                    stockNum = stockNum_temp
                    self.stockNum = int(stockNum)
                    self.stockAvg = stockAvg_temp
                self.stockPosition = (
                    stockNum_temp * stockPosition_temp +
                    self.stockNum * self.stockPosition) / stockNum
                if (self.stockPosition <= 0):
                    self.stockPosition = 0
                    self.valid = False

        self.stockFee = dictSets.get("手续费率", self.stockFee)
        self.limitHit = dictSets.get("边界限制", self.limitHit)
        self.fixHit = dictSets.get("定量监测", self.fixHit)
        self.deltaProfit = dictSets.get("监测间隔", self.deltaProfit)

        self.stopProfit = dictSets.get("止盈线", self.stopProfit)
        self.stopLoss = dictSets.get("止损线", self.stopLoss)
        self.stopProfit_Dynamic = dictSets.get("动态止盈", self.stopProfit_Dynamic)
        self.stopLoss_Dynamic = dictSets.get("动态止损", self.stopLoss_Dynamic)
        self.stopProfit_Retreat = dictSets.get("止盈回撤", self.stopProfit_Retreat)
        self.stopLoss_Retreat = dictSets.get("止损回撤", self.stopLoss_Retreat)
        self.stopProfit_Trade = dictSets.get("止盈比例", self.stopProfit_Trade)
        self.stopLoss_Trade = dictSets.get("止损比例", self.stopLoss_Trade)

        self.priceMax = dictSets.get("最高价格", self.priceMax)
        self.priceCost = dictSets.get("成本价格", self.stockAvg)
        self.priceAvg_sell = dictSets.get("卖出均价", stockAvg_temp)
        self.priceNow = dictSets.get("当前价格", stockAvg_temp)
        self.profitMax_Stage = dictSets.get("阶段止盈", self.profitMax_Stage)
        self.profitMin_Stage = dictSets.get("阶段止损", self.profitMin_Stage)
        self.profitNow = dictSets.get("当前浮盈", self.profitNow)
        self.stopProfit_goon = dictSets.get("止盈状态", self.stopProfit_goon)
        self.stopLoss_goon = dictSets.get("止损状态", self.stopLoss_goon)

        self.date = dictSets.get("建仓日期", self.date).replace("'", "")
        if (self.date == ""):
            self.date = myData_Trans.Tran_ToDatetime_str(
                self.logDatetime, "%Y-%m-%d")

        #操盘记录数不一致,更新统计判断
        if (self.sumOperates != len(self.logOperates)):
            self.Static_Profit(self.priceNow)
        return True
Exemplo n.º 14
0
    def newData_ByInfo(self, dataInfo, checkTime=True):
        #解析所有返回数据
        if len(dataInfo) > 50:
            values = dataInfo.split('=')
            stkid = values[0][11:]
            info = values[1][1:len(values[1]) - 4]
            vargs = info.split(',')

            # 区分股票与期权
            qd = self.newData()
            if (stkid.count('CON_OP') == 1):
                #var hq_str_CON_OP_代码=“买量(0),买价,最新价,卖价,卖量,持仓量,涨幅,行权价,昨收价,开盘价,涨停价,跌停价(11),
                #                    申卖 价五,申卖量五,申卖价四,申卖量四,申卖价三,申卖量三,申卖价二,申卖量二,申卖价一,申卖量一,申买价一,
                #                    申买量一 ,申买价二,申买量二,申买价三,申买量三,申买价四,申买量四,申买价五,申买量五,行情时间,主力合约标识,状态码,
                #                    标的证券类型,标的股票,期权合约简称,振幅(38),最高价,最低价,成交量,成交额,分红调整标志,昨结算价,认购认沽标志,
                #                    到期日,剩余天数,虚实值标志,内在价值,时间价值
                qd.id = stkid[7:]
                qd.idTag = "sh." + qd.id
                qd.rawline = info
                qd.buyPrice = vargs[1]
                qd.lastPrice = vargs[2]
                qd.sellPrice = vargs[3]

                qd.preClose = vargs[8]
                qd.openPrice = vargs[9]

                qd.sell5Price = vargs[12]
                qd.sell5Volume = vargs[13]
                qd.sell4Price = vargs[14]
                qd.sell4Volume = vargs[15]
                qd.sell3Price = vargs[16]
                qd.sell3Volume = vargs[17]
                qd.sell2Price = vargs[18]
                qd.sell2Volume = vargs[19]
                qd.sell1Price = vargs[20]
                qd.sell1Volume = vargs[21]
                qd.buy1Price = vargs[22]
                qd.buy1Volume = vargs[23]
                qd.buy2Price = vargs[24]
                qd.buy2Volume = vargs[25]
                qd.buy3Price = vargs[26]
                qd.buy3Volume = vargs[27]
                qd.buy4Price = vargs[28]
                qd.buy4Volume = vargs[29]
                qd.buy5Price = vargs[30]
                qd.buy5Volume = vargs[31]
                qd.date = vargs[32].split(' ')[0]
                qd.time = vargs[32].split(' ')[1]

                qd.name = vargs[37]
                qd.highPrice = vargs[39]
                qd.lowPrice = vargs[40]
                qd.tradeValume = vargs[41]
                qd.tradeTurnover = vargs[42]
            else:
                #var hq_str_sh510050=证券简称,今日开盘价,昨日收盘价,最近成交价,最高成交价,最低成交价,买入价,
                #                    卖出价,成交数量,成交金额,买数量一,买价位一,买数量二,买价位二,买数量三 ,买价位三,买数量四,
                #                    买价位四,买数量五,买价位五,卖数量一,卖价位一,卖数量二,卖价位二,卖数量三,卖价位三,卖数量四,
                #                    卖价位四,卖数量五,卖价位五,行情日期,行情时间,停牌状态
                qd.id = stkid[2:]
                qd.idTag = "sh." + qd.id
                qd.rawline = info
                qd.name = vargs[0]
                qd.openPrice = vargs[1]
                qd.preClose = vargs[2]
                qd.lastPrice = vargs[3]
                qd.highPrice = vargs[4]
                qd.lowPrice = vargs[5]
                qd.buyPrice = vargs[6]
                qd.sellPrice = vargs[7]
                qd.tradeValume = vargs[8]
                qd.tradeTurnover = vargs[9]
                qd.buy1Volume = vargs[10]
                qd.buy1Price = vargs[11]
                qd.buy2Volume = vargs[12]
                qd.buy2Price = vargs[13]
                qd.buy3Volume = vargs[14]
                qd.buy3Price = vargs[15]
                qd.buy4Volume = vargs[16]
                qd.buy4Price = vargs[17]
                qd.buy5Volume = vargs[18]
                qd.buy5Price = vargs[19]
                qd.sell1Volume = vargs[20]
                qd.sell1Price = vargs[21]
                qd.sell2Volume = vargs[22]
                qd.sell2Price = vargs[23]
                qd.sell3Volume = vargs[24]
                qd.sell3Price = vargs[25]
                qd.sell4Volume = vargs[26]
                qd.sell4Price = vargs[27]
                qd.sell5Volume = vargs[28]
                qd.sell5Price = vargs[29]
                qd.date = vargs[30]
                qd.time = vargs[31]

            #时间检查(是否当天)
            if (checkTime):
                if (qd.checkTime() == False):
                    return None

            #设置数据
            qd.value = myData_Trans.To_Float(qd.lastPrice)
            return qd
        return None
Exemplo n.º 15
0
    def runModel(self):
        if (self.modeRunning): return False
        self.modeRunning = True
        try:
            self.modeState = 1
            self._Create_Result()
            self.modelResult['data']['tag'] = self.tag
            self.modelResult['data']['concentration_unit'] = "mg/m3"
            self.modelResult['data']['results'] = []

            # 参数提取
            Q = self.massrate_Leak
            u = self.wind.getWind_Speed(self.height_Leak, self.air)
            H = self.height_Leak
            H_delta = self._getH_delta()
            H += H_delta

            # 循环计算所有目标点
            for x in self.infoTargets:
                id = x[0]
                longitude_Target = myData_Trans.To_Float(str(x[1]))
                latitude_Target = myData_Trans.To_Float(str(x[2]))
                z = myData_Trans.To_Float(str(x[3]))

                # 坐标系调整
                deltaX = (longitude_Target -
                          self.longitude_Leak) * 111000 * math.cos(
                              math.radians(self.latitude_Leak))
                deltaY = (latitude_Target - self.latitude_Leak) * 111000

                angle_Target = math.atan2(deltaY,
                                          deltaX) / (2 * math.acos(-1)) * 360
                angle_wind = self.wind.wind_Direction2 + 180
                if (angle_wind > 360): angle_wind -= 360

                angle = angle_Target - angle_wind
                deltaXY = math.sqrt(deltaX * deltaX + deltaY * deltaY)
                deltaY = math.sin(math.radians(angle)) * deltaXY
                deltaX = math.cos(math.radians(angle)) * deltaXY

                if (deltaX < 0):
                    Cxyz = 0
                else:
                    # 高斯方程扩散公式实现
                    self.air.initAir_Ratio(deltaX)
                    theta_y = self.air.ratio_y
                    theta_z = self.air.ratio_z
                    if (z > 50):
                        Cxyz = Q / (2 * math.pi * u * theta_y * theta_z
                                    ) * math.exp(-deltaY * deltaY /
                                                 (2 * theta_y * theta_y) +
                                                 math.pow(z - H, 2) /
                                                 (2 * theta_z * theta_z))
                    else:
                        #Cxyz = Q / (math.pi * u * theta_y * theta_z) * math.exp(- math.pow(z - H, 2) / (2 * theta_z * theta_z))
                        Cxyz = Q / (2 * math.pi * u * theta_y *
                                    theta_z) * math.exp(
                                        -deltaY * deltaY /
                                        (2 * theta_y * theta_y)) * (
                                            math.exp(-math.pow(z - H, 2) /
                                                     (2 * theta_z * theta_z)) +
                                            math.exp(-math.pow(z + H, 2) /
                                                     (2 * theta_z * theta_z)))

                # 组装返回结果
                res = {"id": id, "concentration": Cxyz}
                self.modelResult['data']['results'].append(res)

            self.modeState = 2
        except Exception as err:
            self.modeState = -2
            self.modelResult['err'] = err
        finally:
            self.modeRunning = False
            self.modelResult['success'] = myData.iif(self.modeState == 2, 1, 0)
            return self.modeState == 2