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)
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))
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
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
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
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
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
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
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
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
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
def toValueFloat(self, value): value = myData_Trans.To_Float(str(value)) return round(value, 6)
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
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
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