def queryState(ID): res = {"success": 1, "data": 0, "msg": ""} typeDone = gol._Get_Value('chargingDone', '启动') state = gol._Get_Value('chargingState', 0) times = gol._Get_Value('chargingTimes', 0) # 模拟状态调整 time.sleep(1) if (times < 5): times += 1 gol._Set_Value('chargingTimes', times, True) if (typeDone == "启动"): res['msg'] = "充电启动中" elif (typeDone == "停止"): res['msg'] = "充电停止中" else: gol._Set_Value('chargingTimes', 0, True) if (typeDone == "启动"): gol._Set_Value('chargingState', 11, True) res['success'] = 1 res['data'] = 11 res['msg'] = "充电已启动" elif (typeDone == "停止"): gol._Set_Value('chargingState', -1, True) res['success'] = 1 res['data'] = -1 res['msg'] = "充电已停止" return myData_Json.Trans_ToJson_str(res)
def mainStart(): #线程执行 pQuote = gol._Get_Value('quoteSource') if (pQuote == None): pQuote = mainSource() thrdQuote = gol._Get_Value('quoteSourceThread', None) if (pQuote != None and (thrdQuote == None or thrdQuote.threadRunning == False)): myDebug.Print("Quote thread start...") thrdQuote = Quote_Thread(pQuote) thrdQuote.setDaemon(True) thrdQuote.start() gol._Set_Value('quoteSourceThread', thrdQuote)
def chargingStop(): # 模拟停 res = {"success": 1, "data": "", "msg": ""} state = gol._Get_Value('chargingState', 0) typeDone = gol._Get_Value('chargingDone', '') if (typeDone == '启动'): res['success'] = 0 res['msg'] = "充电停止中" elif (state > 0): res['msg'] = "尝试停止充电" gol._Set_Value('chargingDone', '停止', True) else: res['success'] = 0 res['msg'] = "错误" return myData_Json.Trans_ToJson_str(res)
def getCompanys(self, param="", isDel=False, page=1, per_page=10, dataDB=None): # 组装查询条件 strFilter = F"isDel=={str(isDel)}" if (param != ""): strFilter += F" && {param}" # 查询数据 if (dataDB == None): dataDB = gol._Get_Value('dbCompany') dictData = dataDB.Query(strFilter, "", True) lstData = list(dictData.values()) # 提取及返回 numData = len(lstData) start = page * per_page - per_page end = page * per_page end = myData.iif(end < numData, end, numData) values = [] if (numData > start): for x in range(start, end): values.append(lstData[x]) return len(lstData), values
def Init_CheckInfo(self, usrOrderType, tradeType="", tradeType_sub=""): # 基础信息修正 self.usrOrderType = myData.iif( usrOrderType == "" or usrOrderType.count("买") == 1, myOrderType.买入, usrOrderType) self.usrOrderType = myData.iif( usrOrderType == "" or usrOrderType.count("卖") == 1, myOrderType.卖出, usrOrderType) self.tradeType = myData.iif( tradeType == "" or tradeType in myTradeType_投资, "投资", tradeType) self.tradeType_sub = myData.iif(tradeType_sub == "", "股票", tradeType_sub) self.tradeTime = myData.iif(self.tradeTime == None, datetime.datetime.now(), self.tradeTime) # 股票信息补全 targets = myData.iif( self.targetID.count('.') == 0, ("." + self.targetID).split('.'), self.targetID.split('.')) pStocks = gol._Get_Value('setsStock', None) stocks = pStocks._Find(targets[1], exType=targets[0]) if (len(stocks) != 1): stocks = pStocks._Find(self.targetName) if (len(stocks) != 1): return False pStock = stocks[0] self.tradeType_sub = myQuote.stockTypes.get(pStock.type.lower(), '股票') self.targetID = pStock.code_id self.targetName = pStock.code_name self.targetMarket = pStock.exName self.targetMarketBoard = pStock.getMarketBoard() self.targetIndustries = pStock.getIndustries() self.targetConcepts = pStock.getConcepts() return True
def get(self): pMsg = copy.deepcopy(gol._Get_Setting('Return_strFormat', {})) usrID = request.args.get('usrID', '') usrTag = request.args.get('usrTag', '') code_id = request.args.get('code_id', "") code_name = request.args.get('code_name', "") #初始返回组 lstDate_Tag = [] lstInfos = {} #查询及组装 pRisks = gol._Get_Value('zxcRisk_Control', None) dictRisks = pRisks.getRisks(usrID, usrTag, code_id, code_name, bCheck=True) if (dictRisks != None): for x in dictRisks: pRisk = dictRisks[x] if (pRisk.setRisk.valid): lstDate_Tag.append(x) dictSet = pRisk.setRisk.Trans_ToDict().copy() dictSet['操作时间'] = myData_Trans.Tran_ToDatetime_str( dictSet['操作时间'], "%Y-%m-%d %H:%M:%S") lstInfos[x] = dictSet jsonSetinfo = {} jsonSetinfo["dataTags"] = lstDate_Tag jsonSetinfo["setInfos"] = lstInfos pMsg['result'] = len(lstDate_Tag) > 0 pMsg['text'] = jsonSetinfo return pMsg
def get(self): usrID = request.args.get('usrID', "") pMsg = copy.deepcopy(gol._Get_Setting('Return_strFormat', {})) #初始返回组 lstExtypes = [] lstCode_id = [] lstCode_Name = [] lstCode_NameEN = [] #查询及组装 pSets = gol._Get_Value('setsQuote', None) if (pSets != None and usrID != ""): lstStock = pSets._Find_Sets(usrID) for x in lstStock: lstExtypes.append(x.extype) lstCode_id.append(x.code_id) lstCode_Name.append(x.code_name) lstCode_NameEN.append(x.code_name_En) jsonStocks = {} jsonStocks["extypes"] = lstExtypes jsonStocks["code_ids"] = lstCode_id jsonStocks["code_names"] = lstCode_Name jsonStocks["code_namesEN"] = lstCode_NameEN pMsg['result'] = len(lstExtypes) > 0 pMsg['text'] = jsonStocks return pMsg
def _Find(setName, bCreatAuto = False): pSets = gol._Get_Value('setsSpider') if(pSets != None): pSet = pSets._Find(setName) if(pSet == None and bCreatAuto): pSet = mySpider_Setting(setName, "", "", "") return pSet return None
def __init__(self, params=""): myQuote_Source.Quote_Source.__init__(self, params, 'JqDataAPI') #设置类型 self.pSource = gol._Get_Value('quoteSource_API_JqData', None) self.setsStock = gol._Get_Value('setsStock', myQuote.myStocks()) #标的信息 self.quoteTimes = { "1m": "m1", "5m": "m5", "15m": "m15", "30m": "m30", "60m": "m60", "120m": "m120", "1d": "day", "1w": "week", "1M": "month", "1Y": "year" } pass
def _Find(setName, setTag='', bCreatAuto=False): pSets = gol._Get_Value('setsQuote') if (pSets != None): pSet = pSets._Find(setName, setTag) if (pSet == None and bCreatAuto): pSet = myQuote_Setting(setTag, setName) return pSet return None
def get(self): #提取股票信息 extype = request.args.get('extype', "") code_id = request.args.get('code_id', "") code_name = request.args.get('code_name', "") removeSet = myData_Trans.To_Bool(request.args.get('removeSet', '')) pMsg = copy.deepcopy(gol._Get_Setting('Return_strFormat', {})) pStocks = gol._Get_Value('setsStock', None) lstStock = pStocks._Find(code_id, "", exType=extype) if (len(lstStock) != 1): pMsg['text'] = "股票代码或名称错误!" return pMsg pStock = lstStock[0] strTag = "股票设置:" + pStock.code_name + "\n " #解析参数 bResult = False if (bResult == False): #提取行情对象 pSource = gol._Get_Value('quoteSource', None) pSets = gol._Get_Value('setsQuote', None) if (pSource != None and pSets != None): if (removeSet == False): editInfo = myData_Trans.Tran_ToDict( request.args.get('editInfo', "{}")) if (pSets._Edit(pStock.extype, pStock.code_id, pStock.code_name, editInfo)): pSource.params = pSource._getDefault_Param() pMsg['text'] = strTag + " --设置已成功修改。" bResult = True print(pSource.params) else: usrID = request.args.get('usrID', '') usrPlat = request.args.get('usrPlat', 'wx') if (pSets._Remove(pStock.extype, pStock.code_id, pStock.code_name, usrID)): pSource.params = pSource._getDefault_Param() pMsg['text'] = strTag + " --设置已成功移除。" bResult = True print(pSource.params) pMsg['result'] = bResult if (bResult == ""): pMsg['text'] = strTag + "操作失败!" return pMsg
def initSource(addListener=True): #初始全局行情对象 pQuoteSrc = gol._Get_Value('quoteSource', None) if (pQuoteSrc == None): pQuoteSrc = Source_Control() gol._Set_Value('quoteSource', pQuoteSrc) #实例 行情对象 #添加监听对象 if (addListener): import myListener_Printer pQuoteSrc.addListener(myListener_Printer.Quote_Listener_Printer()) return pQuoteSrc
def quoteStart(): global quoteSource if (quoteSource == None): quoteSource = initSource() thrdQuote = gol._Get_Value('quoteSourceThread', None) if (quoteSource != None and (thrdQuote == None or thrdQuote.threadRunning == False)): thrdQuote = Quote_Thread(quoteSource) thrdQuote.setDaemon(True) thrdQuote.start() gol._Set_Value('quoteSourceThread', thrdQuote)
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 _Find(self, usrID, usrName, usrName_Nick, usrID_sys="", usrType="", bCreate_Auto=False, bUpdataSys=True, bUpdata=False): pUser = None #按名称查找 if (pUser == None): pUser = self._Find_ByName(usrName.lower()) if (pUser == None): pUser = self._Find_ByName_Nick(usrName_Nick.lower()) #按ID查找 if (pUser == None): pUser = self._Find_ByID(usrID.lower()) if (pUser == None): pUser = self._Find_ByID_sys(usrID_sys.lower()) #同步信息 if (bUpdata == True and pUser != None): pUser.usrID = usrID pUser.usrName = usrName pUser.usrName_Nick = usrName_Nick # 不存在 pUser_sys = None if (bCreate_Auto and pUser == None): #查找默认用户库 if (bUpdataSys == True): usrInfos_sys = gol._Get_Value('rootRobot_usrInfos_sys') if (usrInfos_sys != None): pUser_sys = usrInfos_sys._Find(usrID, usrName, usrName_Nick, "", usrType, False, False) #实力新用户信息 if (pUser_sys != None): pUser = copy.deepcopy(pUser_sys) pUser.usrID = usrID pUser.usrName = usrName pUser.usrName_Nick = usrName_Nick else: pUser = myRoot_Usr(usrID, usrName, usrName_Nick, usrType) self._Index(pUser) # 信息更新, 并返回 self._Refresh(pUser) return pUser
def Init_Swap(self, bStart=False): #初始消息接收-Swap self.swapName = 'zxcSwap_wx' if (self.swapRecv == None): self.swapRecv = gol._Get_Value('dataSwap_msgWx') self.swapOut = gol._Get_Value('dataSwap_msgWx_out') @self.swapRecv.changeDataSwap() def Reply(lstData): for x in lstData: if (self.Done_Swap(x)): self.swapRecv.ackDataSwap(x) pass myDebug.Print("消息Swap(" + self.swapName + ")创建成功...") #接收消息 if (bStart): self.swapOut.startSwap() self.swapRecv.startSwap() self.mqTimeNow = myData_Trans.Tran_ToTime_int() #接收开始时间
def getCompany(self, idCompany, nameCompany, isDel=False, dataDB=None): # 组装查询条件 strFilter = F"isDel=={str(isDel)} && companyID=={idCompany} && companyName=={nameCompany}" # 查询数据 if (dataDB == None): dataDB = gol._Get_Value('dbCompany') dictData = dataDB.Query(strFilter, "", True) # 提取及返回 lstData = list(dictData.values()) if (len(lstData) == 1): return lstData[0] return None
def _Init(self): #初始用户全局功能权限对象 self.root = gol._Get_Value('rootRobot') #权限信息 if (self.root != None): self.usrName = self.root.usrName self.usrNameNick = self.root.usrNameNick self.usrTag = self.root.usrID self.usrReplys = myRoot_Usr.myRoot_Usrs("", "") #消息用户集 #初始根目录信息 strDir, strName = myIO.getPath_ByFile(__file__) self.Dir_Base = os.path.abspath(os.path.join(strDir, "../..")) self.Dir_LogMsg = self.Dir_Base + "/Log/Msgs/" self.usrMMsg.Init_LogDir(self.Dir_LogMsg) #初始日志路径
def CheckDays_MaxMin(self, dValue, key, bMax=True): pDatas_S = gol._Get_Value('datas_Stics_D_' + key, None) #全局统计信息 if (pDatas_S == None): return "" nDay = 0 if (bMax): for x in range(1, len(pDatas_S)): if (dValue < pDatas_S[x].high): nDay = x break else: for x in range(1, len(pDatas_S)): if (dValue > pDatas_S[x].low): nDay = x break if (nDay == 0): return "" return "(" + str(nDay) + "天)"
def Init_MQ(self, bStart=False): if (gol._Get_Value("msgSet_usrMQ", False) == False): self.Init_Swap(bStart) return #初始消息接收队列 self.mqName = 'zxcMQ_wx' if (self.mqRecv == None): self.mqRecv = myMQ_Rabbit.myMQ_Rabbit(False) self.mqRecv.Init_Queue(self.mqName, True) self.mqRecv.Init_callback_RecvMsg(self.callback_RecvMsg) #消息接收回调 myDebug.Print("消息队列(" + self.mqName + ")创建成功...") #接收消息 if (bStart): self.mqRecv.Start() self.mqTimeNow = myData_Trans.Tran_ToTime_int() #接收开始时间
def get(self, usrName, usrID, PlatName): pMsg = copy.deepcopy(gol._Get_Setting('Return_strFormat', {})) if (PlatName == ""): return pMsg #提取平台集 pRoot = gol._Get_Value('rootRobot') pPlats = pRoot.usrPlats pPlat = pPlats.Find(PlatName) if (pPlat == None): pPlat = pPlats.Regist(usrName, usrID, PlatName) pMsg['result'] = True pMsg['toke'] = pPlat.usrToken #初始消息处理对象 init_Reply()._Init() return pMsg
def getCompany(self, idCompany, nameCompany, isDel = False, dataDB = None): # 组装查询条件 strFilter = F"isDel=={str(isDel)}" if(idCompany != ""): strFilter += F" && companyID=='{idCompany}'" if(nameCompany != ""): strFilter += F" && companyName=='{nameCompany}'" # 查询数据 if(dataDB == None): dataDB = gol._Get_Value('dbCompany_fb') lstData = dataDB.Query(strFilter, "", True, "Task_OrderCompany") #dictData = dataDB.Query(strFilter, "", True, "Task_OrderCompany") # 提取及返回 #lstData = list(dictData.values()) if(len(lstData) == 1): return lstData[0] return None
def mainSource(): #初始全局行情对象 import mySource_Control from myGlobal import gol pQuote = gol._Get_Value('quoteSource', None) if (pQuote != None): #添加监听对象 import myListener_Printer, myListener_Rise_Fall_asInt, myListener_Hourly, myListener_FixedMonitor, myListener_Risk_Control pQuote.addListener(myListener_Printer.Quote_Listener_Printer()) pQuote.addListener(myListener_Hourly.Quote_Listener_Hourly()) pQuote.addListener( myListener_Rise_Fall_asInt.Quote_Listener_Rise_Fall_asInt()) pQuote.addListener( myListener_Risk_Control.Quote_Listener_Risk_Control()) #for x in pSets.setUsers: # pQuote.addListener(myListener_FixedMonitor.Quote_Listener_FixedMonitor(x)) gol._Set_Value('quoteSource', pQuote) #实例 行情对象 return pQuote
def _Init(self): self.isEnable = True #是否可用 self.isRootUse = False #是否为系统级使用(系统内置功能) self.isSingleUse = True #是否为单例使用(非单例时每个用户专属) self.isBackUse = False #是否为后台使用(后台可运行多个,一般为系统级功能,如日志) self.isNoOwner = False #是否为所有者除外不回复 self.Init() #初始时间信息 # 基础信息--必须设置,自动提取作为配置信息 self.prjName = "消息处理功能" #功能名 self.fileName = "myRobot" #文件名 self.className = "myRobot" #类名 self.isNoReply = True #是否无回复操作--功能自带 self.enableGroups = {} #可用群组 # 初始返回消息 self.usrMMsg = gol._Get_Setting('manageMsgs') #消息管理器 self.usrInfos = gol._Get_Value('rootRobot_usrInfos', None) #用户信息集 self.msg = {} self.maxTime = 60 * 6 #有效时常