Example #1
0
    def _log(self, id_Target, lon, lat, height, Q, deltaXY, deltaX, deltaY):
        if (self.hasLog == False): return

        #保存数据
        strDir, strName = myIO.getPath_ByFile(__file__)
        strPath = strDir + "/static/Log"

        headStr = ""
        if (os.path.exists(strPath) == False):
            myIO.mkdir(strPath)
        strPath = strPath + "/" + myData_Trans.Tran_ToDatetime_str(
            None, "%Y-%m-%d") + ".csv"
        if (os.path.exists(strPath) == False):
            headStr = "id_Target, concentration, height, tag, longitude_Leak, latitude_Leak, height_Leak, massrate_Leak, speed, direction, windH, temperature, cloudy_is, chimney_diameter, chimney_temperature_outlet, chimney_temperature_outlet, chimney_wind_speed_outlet, dtTimestr, lon, lat, deltaXY, deltaX, deltaY"

        #文件追加数据内容
        with open(strPath, 'a+') as f:
            if (headStr != ""):
                f.write(headStr)

            dtTimestr = myData_Trans.Tran_ToDatetime_str(self.dtLeak)
            if (self.hasChimney):
                infoChimney = F'{self.chimney_diameter},{self.chimney_temperature_outlet},{self.chimney_temperature_outlet},{self.chimney_wind_speed_outlet}'
            else:
                infoChimney = F',,,'
            strLine = F'{id_Target},{Q},{height},{self.tag},{self.longitude_Leak},{self.latitude_Leak},{self.height_Leak},{self.massrate_Leak},{self.wind.wind_Speed},{self.wind.wind_Direction_Alias},{self.wind.wind_Height},{self.air.temperature},{self.sun.numCloud},{infoChimney},{dtTimestr},{lon},{lat},{deltaXY},{deltaX},{deltaY}'
            f.write("\n" + strLine)
        return True
Example #2
0
 def ToString(self,
              nSpace=0,
              isSimple=False,
              usrBillType="",
              tradeTarget="",
              tradeType="",
              tradeTypeTarget=""):
     if (isSimple == False):
         strSpace = " " * nSpace
         strBill = strSpace + "编号: " + str(self.tradeID) + "\n"
         strBill += strSpace + "账单人: " + self.usrID + "\n"
         strBill += strSpace + "账单类型: " + self.usrBillType + "\n"
         strBill += strSpace + "交易方: " + self.tradeParty + "\n"
         strBill += strSpace + "交易金额: " + str(round(self.tradeMoney,
                                                    2)) + "元 \n"
         strBill += strSpace + "交易物: " + self.tradeTarget + "\n"
         if (self.tradeType != ""):
             strBill += strSpace + "交易分类: " + self.tradeType + "\n"
         if (self.tradeTypeTarget != ""):
             strBill += strSpace + "交易子类: " + self.tradeTypeTarget + "\n"
         strBill += strSpace + "账单时间: " + myData_Trans.Tran_ToDatetime_str(
             self.tradeTime, "%Y-%m-%d") + "\n"
         strBill += strSpace + "备注: " + self.remark
     else:
         strBill = self.tradeParty
         strBill += "," + str(round(self.tradeMoney, 2)) + "元"
         if (usrBillType == ""): strBill += "," + self.usrBillType
         if (tradeTarget == ""): strBill += "," + self.tradeTarget
         if (tradeType == ""): strBill += "," + self.tradeType
         if (tradeTypeTarget == ""): strBill += "," + self.tradeTypeTarget
         strBill += "," + str(self.tradeID)
         strBill += "," + myData_Trans.Tran_ToDatetime_str(
             self.tradeTime, "%Y-%m-%d")
     return strBill
Example #3
0
    def Trans_ToDict(self, dictSets=None, useTimestr=False):
        if (dictSets == None): dictSets = self.dictSets
        dictSets['ID'] = self.ID
        dictSets['用户名'] = self.usrID
        dictSets['用户标签'] = self.usrTag
        dictSets['标的编号'] = self.stockID
        dictSets['标的名称'] = self.stockName
        dictSets['标的类型'] = self.stockType
        dictSets['标的均价'] = round(self.stockAvg, 4)
        dictSets['标的数量'] = self.stockNum
        dictSets['标的仓位'] = round(self.stockPosition, 4)
        dictSets['手续费率'] = round(self.stockFee, 4)

        dictSets['定量监测'] = self.fixHit
        dictSets['边界限制'] = self.limitHit
        dictSets['监测间隔'] = self.deltaProfit
        dictSets['止盈线'] = self.stopProfit
        dictSets['止损线'] = self.stopLoss
        dictSets['动态止盈'] = self.stopProfit_Dynamic
        dictSets['动态止损'] = self.stopLoss_Dynamic
        dictSets['止盈回撤'] = self.stopProfit_Retreat
        dictSets['止损回撤'] = self.stopLoss_Retreat
        dictSets['止盈比例'] = self.stopProfit_Trade
        dictSets['止损比例'] = self.stopLoss_Trade

        dictSets['最高价格'] = round(self.priceMax, 4)
        dictSets['成本价格'] = round(self.priceCost, 4)
        dictSets['卖出均价'] = round(self.priceAvg_sell, 4)
        dictSets['当前价格'] = round(self.priceNow, 4)
        dictSets['阶段止盈'] = round(self.profitMax_Stage, 4)
        dictSets['阶段止损'] = round(self.profitMin_Stage, 4)
        dictSets['最高浮盈'] = round(self.profitMax, 4)
        dictSets['当前浮盈'] = round(self.profitNow, 4)
        dictSets['止盈状态'] = self.stopProfit_goon
        dictSets['止损状态'] = self.stopLoss_goon

        self.date = self.date.replace("'", "")
        dictSets['建仓日期'] = myData.iif(
            self.date != "", self.date,
            myData_Trans.Tran_ToDatetime_str(self.logDatetime, "%Y-%m-%d"))
        dictSets['isDel'] = not self.valid
        dictSets['备注'] = self.remark
        dictSets['操作日志'] = self.logOperates
        dictSets['操作统计数'] = self.sumOperates
        dictSets['操作时间'] = self.logDatetime

        if (useTimestr):
            if (type(dictSets['操作时间']) == datetime.datetime):
                dictSets['操作时间_str'] = myData_Trans.Tran_ToDatetime_str(
                    self.logDatetime, "%Y-%m-%d %H:%M:%S")
            else:
                dictSets['操作时间_str'] = dictSets['操作时间']
        return self.dictSets
Example #4
0
    def OnUpdataSet(self, quoteDatas):
        #设置有效检查
        if (self.IsEnable(quoteDatas) == False): return

        #买入交易记录
        lstBill = quoteDatas.queryTrade(self.usrName)

        #生成所有定点监测配置
        self._removeMonitor(quoteDatas.name)
        for x in lstBill:
            if (x.tradeNum_Stock < 100): continue  #忽略剩余量较少的

            tradePrice = x.tradePrice
            tradeNum = x.tradeNum_Stock  #交易数量
            tradeTime = x.tradeTime
            if (type(tradeTime) == datetime.datetime):
                tradeTime = myData_Trans.Tran_ToDatetime_str(
                    tradeTime, "%Y-%m-%d")

            #生成配置
            self._addMonitor(
                quoteDatas.name,
                myListener_Fixed(tradePrice, 0.04, tradeNum, tradeTime))
            self._addMonitor(
                quoteDatas.name,
                myListener_Fixed(tradePrice, -0.02, tradeNum, tradeTime))
        return True
Example #5
0
    def getOptInfo(self, optPrice=2500, dateTime="", month_Delta=0):
        # 同步参数
        if (dateTime == ""):
            dateTime = myData_Trans.Tran_ToDatetime_str(None, "%Y-%m-%d")
        dtFliter = myData_Trans.Tran_ToDatetime(dateTime, "%Y-%m-%d")
        strFliter = "50ETF" + myData.iif(
            optPrice > 0, "购",
            "沽") + str(dtFliter.month + month_Delta) + "月" + str(abs(optPrice))

        # 查询
        optInfos = opt.run_query(
            query(opt.OPT_DAILY_PREOPEN).filter(
                opt.OPT_DAILY_PREOPEN.date == dateTime,
                opt.OPT_DAILY_PREOPEN.name == strFliter).limit(10))
        if (optInfos.shape[0] != 1): return None

        # 查询最新的期权基本资料数据
        code = optInfos['code'][0]
        optInfo = query(
            opt.OPT_CONTRACT_INFO).filter(opt.OPT_CONTRACT_INFO.code == code)
        value = opt.run_query(optInfo)
        if (len(value) != 1): return None
        return {
            'id': value['id'][0],
            'code': value['code'][0],
            'trading_code': value['trading_code'][0],
            'name': value['name'][0]
        }
Example #6
0
def thrd_Moniter_API_Quote():
    time.sleep(10)  #延时等待
    pSource = init_Quote()
    while (pSource.isClosed == False):
        myDebug.Debug(myData_Trans.Tran_ToDatetime_str())
        time.sleep(120)  #延时等待
        myQuote_Source.mainStart()  #检查启动行情进程
Example #7
0
    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
Example #8
0
    def getPrice(self,
                 security,
                 start_date="",
                 end_date="",
                 frequency='daily',
                 fields=None,
                 skip_paused=True,
                 count=None):
        # 同步参数
        dateTime = myData_Trans.Tran_ToDatetime_str(None, "%Y-%m-%d")
        start_date = myData.iif(start_date == "", dateTime + " 09:00:00",
                                start_date)
        end_date = myData.iif(end_date == "", dateTime + " 13:00:00", end_date)

        # 查询数据
        host = "http://hq.sinajs.cn/list="
        url = host + security

        req = urllib.request.Request(url)
        res_data = urllib.request.urlopen(req)
        res = res_data.read().decode(encoding="gbk")

        values = res.split('=')
        stkid = values[0][11:]
        info = values[1][1:len(values[1]) - 4]
        vargs = info.split(',')

        # 区分股票与期权
        if (stkid.count('CON_OP') == 1):
            value = float(vargs[2])
        else:
            value = float(vargs[3])
        return value
Example #9
0
    def __init__(self, pData, interval = 1):
        self.name = pData.name
        self.interval_M = interval                      #分钟级间隔
        self.datas = {}                                 #原始数据 
        self.datasS = []                                #统计数据集--天
        self.datasS_M = None                            #统计数据对象--分钟级
        self.data = pData                               #当前数据对象

        self.setting = myQuote_Setting._Find(pData.name, pData.idTag)        #配置项,以标识为准,避免名称不统一
        self.autoSave = True 
        self.stoped = False 
        self.tagTime = datetime.datetime.now()
        self.manageTrades = gol._Get_Setting('manageBills_Stock', None)     #使用交易管理器
        gol._Set_Value('datas_Stics_D_' + pData.id, self.datasS)            #全局统计信息


        #保存基础数据
        strDir, strName = myIO.getPath_ByFile(__file__)
        Dir_Base = os.path.abspath(os.path.join(strDir, ".."))   

        self.dir = Dir_Base + "/Data/" + self.name + "/"
        self.fileName = myData_Trans.Tran_ToDatetime_str(pData.getTime(), "%Y-%m-%d")
        myIO.mkdir(self.dir) 
        if(self.loadData()):                            #加载已存数据
            self.setData(pData)
Example #10
0
    def OnRecvQuote(self, quoteDatas): 
        #设置有效检查
        if(self.IsEnable(quoteDatas)== False): return
        
        #提取值--时间
        strMsg = ""
        dtNow = quoteDatas.data.getTime()
        if(dtNow.minute == 0 or dtNow.minute == 30):
            #提取值
            dValue_N = quoteDatas.datasS_M.dataS_Min_Now.dataS.getRise_Fall(0)  #当前涨跌幅
            key = quoteDatas.name

            #判断是否已经记录
            lstValue = self.values.get(key, None) 
            if(lstValue == None):
                lstValue = {}
                self.values[key] = lstValue

            strTime = myData_Trans.Tran_ToDatetime_str(dtNow, "%H:%M") + ":00"
            if(lstValue.get(strTime, None) == None):
                lstValue[strTime] = dValue_N                    #记录值

                #组装返回结果
                strMsg = quoteDatas.data.getMsg_str(quoteDatas.setting)
                strMsg += "\n整点播报:" + strTime + "."
        #通知处理
        self.OnHandleMsg(quoteDatas, strMsg)
Example #11
0
 def _Trans_Time_moth(self, dtTime = '', nMonth = 1): 
     if(type(dtTime) != datetime.datetime): dtTime = datetime.datetime.now() 
     dtTime = dtTime - datetime.timedelta(days=(dtTime.day - 1))
     while(nMonth > 1):
         dtTime = self._Trans_Time_moth(dtTime - datetime.timedelta(days=1))
         nMonth -= 1
     strTime = myData_Trans.Tran_ToDatetime_str(dtTime, "%Y-%m-%d")
     return myData_Trans.Tran_ToDatetime(strTime, "%Y-%m-%d")
Example #12
0
 def _Trans_Value_str(self, value, bSave_AsStr = True):   
     #特殊类型转换
     type = bSave_AsStr
     strVaulue = str(value)
     if(type == 'datetime'):
         strVaulue = myData_Trans.Tran_ToDatetime_str(value)
     elif(type in ["char","varchar"]):
         strVaulue = "'" + strVaulue + "'"  
     return strVaulue
Example #13
0
    def upload_company(companyID=""):
        form = myCompanyForm()  #生成form实例,给render_template渲染使用
        needRefresh = True
        editSucess = False
        if form.validate_on_submit(
        ):  #调用form实例里面的validate_on_submit()功能,验证数据是否安全,如是返回True,默认返回False
            if form.save.data:  # 保存按钮被单击
                # 组装row信息
                pValues = []
                if (True):
                    pValues.append("-1")
                    pValues.append(form.companyID.data)
                    pValues.append(form.companyName.data)
                    pValues.append(form.companyInStreet.data)
                    pValues.append(form.companyInVillage.data)
                    pValues.append(form.companyAdrr.data)
                    pValues.append(form.companyScale.data)
                    pValues.append(form.companyContacts.data)
                    pValues.append(form.companyPhone.data)

                    companyHasProcess = myData.iif(
                        form.companyHasProcess.data == "是", True, False)
                    pValues.append(companyHasProcess)
                    pValues.append(form.companyNumProcess.data)
                    pValues.append(form.companyRecycle.data)
                    pValues.append(form.companyVolumeTotal.data)

                    pValues.append(
                        myData_Trans.Tran_ToDatetime_str(
                            form.companyRedate.data))
                    pValues.append(form.companyRevolume.data)
                    pValues.append(form.companyTransferredvolume.data)
                    pValues.append(form.companyNoTransferredvolume.data)

                    pValues.append(form.imgName_1.data)
                    pValues.append(form.imgName_2.data)
                    pValues.append(form.imgName_3.data)
                    pValues.append(form.imgName_4.data)
                    pValues.append(form.imgName_5.data)
                    pValues.append(form.imgName_6.data)

                # 添加并保存信息
                rowInfo = myData_Trans.Tran_ToStr(pValues, ',')
                dbCompany = gol._Get_Value('dbCompany')
                if (dbCompany.Add_Row_BySimply(rowInfo, True, True) != ""):
                    editSucess = True
        else:
            # 保存时,验证失败,不需要刷新
            if form.save.data:
                needRefresh = False
        return render_template('company_active carbon.html',
                               title='company upload',
                               form=form,
                               companyID=companyID,
                               needRefresh=needRefresh,
                               editSucess=editSucess)
    def query(self, checkTime=True, nReturn=0, parms=None):
        #组装参数
        lstSets = self.paramsSet[self.type]
        time_s = int(myData_Trans.Tran_ToDatetime_str(None, "%S"))
        dtNow = myData_Trans.Tran_ToDatetime_str(None, "%Y-%m-%d %H:%M")
        #dtNow = "2020-06-29 14:00"

        #返回组
        nNum = nReturn
        nResult = 0
        lstReturn = []

        #聚宽Stock接口查询
        dtStart = dtNow + myData.iif(time_s < 10, F":0{time_s}", F":{time_s}")
        for x in lstSets:
            _values = self.pSource.getPrice(security=x.stockInfo.source_code,
                                            frequency='1m',
                                            start_date=dtStart,
                                            end_date=dtNow + ":59")
            if (len(_values) < 1): continue

            #转换数据
            dataInfo = {'setInfo': x, "values": _values, "time": dtStart}
            qd = self.newData_ByInfo(dataInfo, checkTime)
            if (qd == None):
                continue

            #数据处理
            try:
                if (nReturn <= 0):
                    pDatas = self.setData(qd)
                    if (pDatas != None): nResult += 1
                else:
                    if (nNum > 0):
                        lstReturn.append(qd)
                        nNum = nNum - 1
            except Exception as e:
                myDebug.Error(str(e))
                pass
        if (nReturn > 0): return lstReturn
        if (nResult > 0):
            print("")
            return True
Example #15
0
def run_WebAPI(isPrint=True):
    #strUrl = "http://127.0.0.1:8686/zxcAPI/Model/Leak"
    strUrl = "http://120.197.152.99:18686/zxcAPI/Model/Leak"
    strPath = '{"tag": "东莞铭晋家具有限公司", "infoLeak": {"longitude": 113.8, "latitude": 23.0478, "height_leak": 5, "massrate_leak": 4407.661085743278, "timestart_leak": "2020-08-04 16:05:57"}, "infoTarget": [{"id": "441900403", "longitude": 113.7819, "latitude": 23.0536, "height": 15}], "infoEnvironment": {"wind_speed": 1.1, "wind_direction": "ESE", "wind_height": 15, "temperature": 27.6, "cloudy_is": true}}'

    #设置查询接口执行
    pWeb = myWeb_urlLib.myWeb(strUrl, bPrint=False)
    strReturn = pWeb.Do_API_get(strPath, "zxcAPI-py")
    if (isPrint):
        print(myData_Trans.Tran_ToDatetime_str(), "查询结果:\n", strUrl, "--\n",
              strReturn, "\n")
Example #16
0
 def ToString2(self, nSpace=0):
     strSpace = " " * nSpace
     strBill = strSpace + "编号: " + str(self.tradeID) + "\n"
     strBill += strSpace + "红包归属: " + self.usrID + "\n"
     strBill += strSpace + "红包金额: " + str(self.tradeMoney) + "元 \n"
     strBill += strSpace + "红包来源: " + self.tradeParty + "\n"
     strBill += strSpace + "红包事由: " + self.usrBillType + "\n"
     strBill += strSpace + "红包时间: " + myData_Trans.Tran_ToDatetime_str(
         self.tradeTime, "%Y-%m-%d") + "\n"
     strBill += strSpace + "备注: " + self.remark
     return strBill
Example #17
0
    def Trans_Value_str(self, value, bSave_AsStr=True):
        if (bSave_AsStr):
            strVaulue = str(value)
        else:
            strVaulue = value

        #特殊类型转换
        if (type(value) == bool):
            strVaulue = myData.iif(value, "TRUE", "FALSE")
        elif (type(value) == datetime.datetime):
            strVaulue = myData_Trans.Tran_ToDatetime_str(value)
        return strVaulue
Example #18
0
    def _Add(self, rowInfo={}, tableName=""):
        # 提取组装字段及数据
        fields = ""
        values = ""
        hasDel = False
        hasDate = False

        # 默认字段修正
        keys = rowInfo.keys()
        # keys = [item.lower() for item in keys]
        if ('isDel' not in keys): rowInfo['isDel'] = False
        if ('editTime' not in keys):
            rowInfo['editTime'] = myData_Trans.Tran_ToDatetime_str()

        # 提取组装字段及数据
        keys = rowInfo.keys()
        for x in keys:
            if (x.lower() == 'id'): x = 'ID'
            fields += "," + x

            if (type(rowInfo[x]) == str):
                values += ",'" + rowInfo[x] + "'"
            elif (type(rowInfo[x]) == datetime.datetime):
                values += ",'" + myData_Trans.Tran_ToDatetime_str(
                    rowInfo[x]) + "'"
            else:
                values += "," + str(rowInfo[x])

            if (x == 'isDel'): hasDel = True
            if (x == 'editTime'): hasDate = True

        # 调用插入数据
        fields = myData.iif(len(fields) > 1, fields[1:], fields)
        values = myData.iif(len(values) > 1, values[1:], values)
        rs = self.execute(
            self._dbName,
            f"INSERT INTO {tableName}({fields}) VALUES ({values});")
        return not rs == None
Example #19
0
    def output(self, lstReturn):
        pMsg = copy.deepcopy(gol._Get_Setting('Return_strFormat', {}))
        if (lstReturn != None and len(lstReturn) > 1):
            datas = []
            for x in lstReturn:
                datas.append(x.toDict())
            pMsg['datas'] = datas
            pMsg['result'] = True

            strJson = myData_Json.Trans_ToJson_str(pMsg)
            path = self.Dir_Swaps + "/Quote_" + myData_Trans.Tran_ToDatetime_str(
                None, "%Y-%m-%d-%H-%M-%S") + ".json"
            myIO.Save_File(path, strJson, isUtf=True, isNoBoom=True)
            return True
        return False
Example #20
0
 def toCSVString(self):
     return '\n' + myData_Trans.Tran_ToDatetime_str(self.dtTime) \
         + ',' + str(self.seconds)  \
         + ',' + str(self.base)  \
         + ',' + str(self.start)  \
         + ',' + str(self.last)  \
         + ',' + str(self.high)  \
         + ',' + str(self.low)  \
         + ',' + str(self.average)  \
         + ',' + str(self.tradeVolume)  \
         + ',' + str(self.tradeTurnover) \
         + ',' + str(self.tradeVolume_Start)  \
         + ',' + str(self.tradeVolume_End)  \
         + ',' + str(self.tradeTurnover_Start)  \
         + ',' + str(self.tradeTurnover_End)   
Example #21
0
 def ToTitlestr(self,
                nSpace=0,
                isSimple=False,
                usrOrderType="",
                tradeTarget="",
                tradeType="",
                tradeTypeTarget=""):
     if (isSimple == False):
         strSpace = " " * nSpace
         strTrade = strSpace + "编号:" + str(self.infoID) + "\n"
         strTrade += strSpace + "用户名:" + self.usrID + "\n"
         strTrade += strSpace + "交易类型:" + self.usrOrderType + "\n"
         strTrade += strSpace + "标的信息:" + self.targetID + "  " + self.targetName + "\n"
         if (self.usrOrderType not in myTradeAppetite):
             strTrade += strSpace + "交易金额:" + str(round(self.tradeMoney,
                                                        2)) + "元 \n"
             strTrade += strSpace + "交易价格:" + str(round(
                 self.targetPrice, 2)) + "元 \n"
         else:
             strTrade += strSpace + "预期价格:" + str(round(
                 self.targetPrice, 2)) + "元 \n"
         strTrade += strSpace + "账单时间:" + myData_Trans.Tran_ToDatetime_str(
             self.tradeTime, "%Y-%m-%d") + "\n"
         strTrade += strSpace + "备注:" + self.remark
     else:
         strTrade = self.tradeParty
         if (trade.usrOrderType not in myTradeAppetite):
             strTrade += "," + str(round(self.tradeMoney, 2)) + "元"
         if (usrTradeType == ""): strTrade += "," + self.usrTradeType
         if (tradeTarget == ""): strTrade += "," + self.tradeTarget
         if (tradeType == ""): strTrade += "," + self.tradeType
         if (tradeTypeTarget == ""): strTrade += "," + self.tradeTypeTarget
         strTrade += "," + str(self.infoID)
         strTrade += "," + myData_Trans.Tran_ToDatetime_str(
             self.tradeTime, "%Y-%m-%d")
     return strTrade
Example #22
0
    def SwapData_OutFile(self, tagName="", dirDest=""):
        dataOut = copy.copy(self.dataOut)
        self.dataOut = []
        if (len(dataOut) < 1): return False
        jsonData = myData_Json.Json_Object(dataOut)

        dirOut = myData.iif(dirDest != "", dirDest, self.dirSwap_out) + "/"
        if (tagName == ""): tagName = self.tagName
        if (tagName == "" and dirOut == ""): return False

        fileName = tagName + myData_Trans.Tran_ToDatetime_str(
            None, "_%Y_%m_%d_%H_%M_%S") + ".json"
        content = jsonData.ToString(autoFormat=False).replace("\\", "/")
        myIO.Save_File(dirOut + fileName, content, True, False)
        #myDebug.Print("DataSwap Out IOFiles::" + dirOut + fileName)
        myDebug.Print("DataSwap Out IOFiles::" + fileName)
        return True
Example #23
0
    def addRiskSet(self, usrID, stockID, stockName, stockPrice, stockNum, time = "", dictSet = {}):  
        dictSet['用户名'] = usrID
        
        #解析正确股票信息
        if(True):
            stocks = self.stockSet._Find(stockID, stockName, "****")
            if(len(stocks) == 1):
                pStock = stocks[0]
                stockID = pStock.code_id + "." + pStock.extype2
                stockName = pStock.code_name

        dictSet['标的编号'] = stockID
        dictSet['标的名称'] = stockName
        dictSet['标的均价'] = stockPrice
        dictSet['标的数量'] = stockNum
        dictSet['日期'] = myData.iif(time != "", time, myData_Trans.Tran_ToDatetime_str(None, "%Y-%m-%d %H:%M:%S"))

        #添加
        strR = self.riskDB.Add_Row(dictSet, True)
        myDebug.Debug(strR)
Example #24
0
    def companyQuery():
        #载入配置
        company_id = request.args.get('company_id', "")
        company_name = request.args.get('company_name', "")
        print(company_id, company_name)

        dbCompany = gol._Get_Value('dbCompany')
        pCompany = dbCompany.getCompany(company_id, company_name).copy()
        if (pCompany == None):
            pCompany = dbCompany.OnCreat_RowInfo()
            pCompany['companyID'] = company_id
            pCompany['companyName'] = company_name

        #修正部分信息
        pCompany['companyHasProcess'] = myData.iif(
            pCompany['companyHasProcess'], "是", "否")
        if (type(pCompany['companyRedate']) == datetime.datetime):
            pCompany['companyRedate'] = myData_Trans.Tran_ToDatetime_str(
                pCompany['companyRedate'], "%Y-%m-%d")
        jsonCompany = myData_Json.Json_Object(pCompany)
        return jsonCompany.ToString()
Example #25
0
    def getPrice(self,
                 security,
                 start_date="",
                 end_date="",
                 frequency='daily',
                 fields=None,
                 skip_paused=True,
                 count=None):
        # 同步参数
        dateTime = myData_Trans.Tran_ToDatetime_str(None, "%Y-%m-%d")
        start_date = myData.iif(start_date == "", dateTime + " 09:00:00",
                                start_date)
        end_date = myData.iif(end_date == "", dateTime + " 13:00:00", end_date)

        # 查询数据
        values = jqdatasdk.get_price(security=security,
                                     frequency=frequency,
                                     start_date=start_date,
                                     end_date=end_date,
                                     skip_paused=skip_paused)
        return values
Example #26
0
    def _Update(self, id, rowInfo={}, tableName="", idField='id'):
        # 提取组装字段及数据
        editInfo = ""
        keys = rowInfo.keys()
        for x in keys:
            if (x.lower() == 'id'): continue

            if (type(rowInfo[x]) == str):
                editInfo += f",{x}='{rowInfo[x]}'"
            elif (type(rowInfo[x]) == datetime.datetime):
                values += ",'" + myData_Trans.Tran_ToDatetime_str(
                    rowInfo[x]) + "'"
            else:
                editInfo += f",{x}={rowInfo[x]}"

        # 调用修改数据
        editInfo = myData.iif(len(editInfo) > 1, editInfo[1:], editInfo)
        idInfo = myData.iif(type(id) == str, f"'{id}'", str(id))
        rs = self.execute(
            self._dbName,
            f"UPDATE {tableName} SET {editInfo} WHERE {idField} = {idInfo};")
        return not rs == None
Example #27
0
    def Trans_FromDict(self, dictSets, canLog = True):  
        #交易信息必须存在
        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")

        #解析信息
        self.ID = dictSets.get('ID',-1)
        self.usrID = dictSets['用户名']
        self.usrTag = dictSets.get('用户标签',"")
        self.stockID = dictSets.get('标的编号',"")
        self.formName = dictSets.get('窗体名称',"")
        self.formType = dictSets.get('窗体类型',"")
        self.formRange = dictSets.get('窗体区域',[])
        self.formPos = dictSets.get('窗体位置',[])
        self.formRePos = dictSets.get('自动复位',False)

        self.datetime = dictSets.get("日期", self.datetime)
        self.remark = dictSets.get("备注", self.remark)
        self.isDel = dictSets.get('isDel', not self.valid)  
        return True
Example #28
0
    def addRiskSet(self, usrID, usrTag, stockID, stockName, stockPrice, stockNum, time = "", dictSet = {}):  
        dictSet['用户名'] = usrID  
        dictSet['用户标签'] = usrTag
        
        #解析正确股票信息
        if(True):
            stocks = self.stockSet._Find(stockID, stockName, "****")
            if(len(stocks) == 1):
                pStock = stocks[0]
                stockID = pStock.code_id + "." + pStock.extype2
                stockName = pStock.code_name

        dictSet['标的编号'] = stockID
        dictSet['标的名称'] = stockName
        dictSet['标的均价'] = stockPrice
        dictSet['标的数量'] = stockNum
        dictSet['日期'] = myData.iif(time != "", time, myData_Trans.Tran_ToDatetime_str(None, "%Y-%m-%d %H:%M:%S"))

        #添加-区分买入卖出
        pRisk = self.getRisk(usrID, usrTag, stockID, stockName, False)
        if(stockNum > 0):
            strR = self.riskDB.Add_Row(dictSet, True)
            myDebug.Debug(strR)
            if(pRisk == None):
                #添加记录信息
                pRisk = self.initRiskSet(dictSet['用户名'], dictSet['用户标签'], dictSet['标的编号'], dictSet['标的名称'], False)
                
                #缓存
                dictRisk = self.dictRisk.get(dictSet['标的编号'], {})
                dictRisk[dictSet['用户名'] + "_" + dictSet['用户标签']] = pRisk
                if(len(dictRisk) == 1):
                    self.dictRisk[dictSet['标的编号']] = dictRisk
            else:
                setRisk = self.riskDB.getSet(usrID, usrTag, stockID, isDel = False, setDB = pRisk.setDB)
                pSet = mySet_StockRisk(dictSet)
                pRisk.initSet(pSet, pRisk.setDB)
        elif(stockNum < 0):
            if(pRisk != None):
                pRisk.updataTrade(stockPrice, stockNum, dictSet['日期'])
Example #29
0
    def _Done_Image(self, Text, msgID="", usrInfo={}):
        #图片判别,只处理手机截图(图片行列比)

        #提取图片内容,ORC通用识别
        #Text = "E:\\myCode\\zxcProj\\src\\Zxc.Python\\zxcPy.All.Base\\Temps\\Images\\Test.png"
        txtInfo = myAI_Baidu.ORC(Text, "", out_debug=False)
        myDebug.Debug(str(txtInfo))

        #按文字内容组合定义图片类型
        dictInfos = {'收益率': "", '日期': ""}
        num = txtInfo['wordText'].count('资产分析')
        if (num >= 1):
            # 使用文字匹配方式解析
            year = myData_Trans.Tran_ToTime_str(None, "%Y")
            if (txtInfo['wordText'].count('同花顺-资产分析') == 1):  #同花顺截图
                #'u中国联通令\n下午3:10\n64%\n同花顺-资产分析\n2019-01-01~2019-08-27\n分享\n本月\n近三月\n近半年\n今年\n近两年\n30.0%\n10.0%\n0.0%\n-10.0%\n01-01\n04-01\n07-01\n我上证○深证○创业板○上证50\nC沪深30中证500收益走势\n今年跑嬴上证指数\n23.03%\n我\n3940%\n上证\n16.37%\n深证\n30.43%\n创业板\n30.19%'
                ind = txtInfo['words'].index('我')
                if (ind > 0):
                    txt = txtInfo['words'][ind + 1]
                    dictInfos['收益率'] = float(txt.replace('%', "")) / 100
                    if (txt.count('.') == 0):
                        dictInfos['收益率'] = dictInfos['收益率'] / 100  #小数点未正确识别修正

                    # 提取日期
                    lst = [n for n in txtInfo['words'] if n.count(year) == 2]
                    if (len(lst) == 1):
                        times = lst[0].split('~')
                        if (times[0][0:10] == year + "-01-01"):  #日期校检,必须当年开始
                            dictInfos['日期'] = myData_Trans.Tran_ToDatetime(
                                times[1], '%Y-%m-%d')
                pass
            else:  #君弘截图
                #'10:09:1l\n(80\n资产分析\n20190101~20190828\n今年收益率17.48%\n今日本月近三个月近半年今年2018\n30%\n20%\n2019.01.31\n我:-0.11\n10%\n上证:3.64%\n10%\n01.31\n03.29\n05.31\n07.31\n●我○上证深证○创业\n1.46%\n跑赢上证\n1.46%\n跑输深证\n-12.56%\n跑输创业\n-12.47%\n资产分析\n证券分析\n月度分析\n账单'
                # 提取今年收益率
                lst = [n for n in txtInfo['words'] if n.count('今年收益率') == 1]
                if (len(lst) == 1):
                    txt = lst[0]
                    dictInfos['收益率'] = float(
                        txt.replace('今年收益率', "").replace('%', "")) / 100
                    if (txt.count('.') == 0):
                        dictInfos['收益率'] = dictInfos['收益率'] / 100  #小数点未正确识别修正

                    # 提取日期
                    lst = [n for n in txtInfo['words'] if n.count(year) == 2]
                    if (len(lst) == 1):
                        times = lst[0].split('~')
                        if (times[0][0:8] == year + "0101"):  #日期校检,必须当年开始
                            dictInfos['日期'] = myData_Trans.Tran_ToDatetime(
                                times[1], '%Y%m%d')
                pass
            if (dictInfos['收益率'] == 0): return ""

            # 修正日期为字符串、收益率格式等
            usrName = usrInfo.get('usrNameNick', "")
            usrProfit = dictInfos['收益率']
            if (dictInfos.get('日期', "") != ""):
                dictInfos['日期-前'] = myData_Trans.Tran_ToDatetime_str(
                    dictInfos['日期'] + datetime.timedelta(days=1), '%Y-%m-%d')
                dictInfos['日期'] = myData_Trans.Tran_ToDatetime_str(
                    dictInfos['日期'], '%Y-%m-%d')
            if (dictInfos.get('收益率', "") != ""):
                dictInfos['收益率'] = str(
                    Decimal((usrProfit * 100)).quantize(Decimal('0.00'))) + "%"

            #记录信息
            pDB = gol._Get_Setting('zxcdbStockReturns')
            lstQuery = pDB.Query("isDel==False && 日期>=" + dictInfos['日期-前'],
                                 "日期", True)
            if (len(lstQuery) > 0): return ""  #必须比已有日期大
            myDebug.Debug(
                pDB.Add_Row(
                    {
                        '用户名': usrName,
                        '收益': usrProfit,
                        '日期': dictInfos['日期']
                    }, True))

            #组装返回
            lstR = pDB.Get_Ranks(usrName, True)
            if (len(lstR) < 1):
                return "@" + usrName + " 收益信息记录失败!当前收益率:" + dictInfos[
                    '收益率'] + "."
            dicRand = lstR[0]
            strRank = " 您的收益排名:第 " + dicRand['ranking'] + ", 收益率:" + dicRand[
                'profit'] + " "
            return "@" + usrName + " " + strRank
        return ""
Example #30
0
 def toCSVString(self):
     strCSV = "\n" + myData_Trans.Tran_ToDatetime_str(self.msgTime)
     strCSV += "," + self.usrFrom
     strCSV += "," + self.msg
     strCSV += "," + self.msgType
     return strCSV