示例#1
0
    def create(self):
        CSV = csvFile(
            folder="/data/csv",
            filename="rate_%s_%s.csv" % ('SZ', '05'),
            headers=["code", "name", "count", "avg", "rate", 'firstday'])

        # 查询sql,获取code列表
        res = self.Sql.getCodes()
        i = 0
        for item in res:
            #if item[0] not in ["601601","002142","601238","601211","601818"]: continue
            # 计算波动率
            _f, _c, _m, _sd = self.calc(item[0])
            doc = {
                "code": str(item[0]),
                "name": item[1],
                "count": _c,
                "avg": _m,  # 均值
                "rate": _sd,  # 标准差
                "firstday": _f
            }
            #print(doc)
            #if i% 100==0: print(i, doc)
            CSV.writeLine(doc)
            i += 1

        CSV.close()
示例#2
0
    def getWave(self, market='HK', stock_type="STOCK", autype='qfq'):
        date = public.getDate(diff=0)
        CSV = csvFile(folder="/data/csv",
                      filename="rate_%s_%s_%s.csv" % (market, autype, date),
                      headers=["code", "name", "count", "avg", "rate"])

        df = self.getStockInfo(market, stock_type)
        i = 0
        for index, row in df.iterrows():
            _c, _m, _s = self.getHistory(row["code"], autype)
            doc = {
                "code": row["code"],
                "name": row["name"],
                "count": _c,
                "avg": _m,
                "rate": _s
            }
            #print(doc)
            #break
            if i % 100 == 0:
                print(i, doc)
            i += 1
            CSV.writeLine(doc)

        CSV.close()
示例#3
0
    def order(self, docs, type='stock_order', param=None):
        if docs is None: exit()
        # 策略名称
        stage = self.param_map["stage"]
        if param is not None:
            stage = param["stage"]

        maps = self.matic_csv_map[type]

        # 文件夹对应文件
        filename = maps["filename"] % (stage, self.getTime())
        CSV = csvFile(folder=self.iniKey("orders"),
                      filename=filename,
                      headers=[n[0] for n in maps["columns"]])

        # 生成csv文件
        No = self.getIndex()  # 日期内唯一序号
        for doc in docs:
            rec = self.parseDoc(doc, "stock_order", No)
            CSV.writeLine(rec)
            No += 1

        # 执行完回写index
        self.setIndex(No)
        CSV.close()
示例#4
0
    def order(self, docs, type='stock_order', callback=None):
        if not docs or len(docs) == 0: return None

        maps = self.matic_csv_map[type]

        # 文件夹对应文件
        filename = maps["filename"] % (
            self.stage, str(public.getDatetime(style=self.timeStyle))[:-3])
        CSV = csvFile(folder=self.Folder,
                      filename=filename,
                      headers=[n[0] for n in maps["columns"]])

        orders = []
        for doc in docs:
            order = copy.deepcopy(doc)
            c = doc['code']
            order.update({
                "code":
                c[:c.find('.')],
                "market":
                'SZ' if c.find('XSHE') > -1 else
                'SH' if c.find('XSHG') > -1 else '',
                'mode':
                doc['isBuy'],
                'type':
                "stock",
                'volume':
                doc['vol'],
                'createtime':
                public.getDatetime()
            })

            # 检查资金和持仓
            if not self.check(order): continue

            rec = self.parseDoc(order, "stock_order")
            CSV.writeLine(rec)

            doc.update({
                "orderID": rec["local_report_no"],
                "returnid": rec["local_report_no"],
            })
            orders.append(doc)

        CSV.close()
        # ftp 上传
        if self.ftpUsed:
            self.ftpUpload(filename)

        # 保存序号, 待bug修复后 改为uuid
        self.setIndex(self.recordIndex)

        # 检查操作结果,回写数据库

        return self.result(orders)
示例#5
0
 def getBase(self, code):
     df = self.getH(code)
     CSV = csvFile(folder="/data/csv",
                   filename="k_%s.csv" % (code),
                   headers=df.columns.tolist())
     for index, row in df.iterrows():
         doc = {}
         for key in df.columns.tolist():
             doc[key] = row[key]
         CSV.writeLine(doc)
     CSV.close()
示例#6
0
    def check(self):
        time0 = time.time()
        CSV = csvFile(folder="/data/csv",
                      filename="history.csv",
                      headers=[
                          "代码", "正股", "名称", "最低点时间", "最低点价格", "最高价时间", "最高点",
                          '行使价', '换股比率', '到期日', '初始日low', '初始日high', '购后最低价',
                          '购后最低价时间', '购后最高价', '购后最高价时间'
                      ])
        doc_list = []
        i = 0

        for code, owner, name, res in self.getK():
            if res:
                na = np.array((res))
                # 检查存在0.01的标的
                # n = np.where((na[1,:]<= 0.010) & (na[1,:]> 0.0))
                n = np.where(na[1, :] == 0.010)
                if n[0].size > 0:
                    nw = na[:, n[0][0]:]
                    imax = np.max(nw[2])  # 取最高价
                    if imax > 0.0:
                        # 查询最大值所在时间
                        nmax = np.where(nw[2, :] == imax)
                        doc = {
                            "代码": code,
                            "code": code,
                            "正股": owner,
                            "owner": owner,
                            "名称": name,
                            "最低点时间": na[0][n[0][0]],
                            "starttime": na[0][n[0][0]],
                            "最低点价格": na[1][n[0][0]],
                            "最高价时间": nw[0][nmax[0][0]],
                            "endtime": nw[0][nmax[0][0]],
                            "最高点": imax
                        }
                        doc_list.append(doc)
                        # 添加其他信息
                        #CSV.writeLine(doc)
                if i % 100 == 0:
                    print(i, code, time.time() - time0)
                i += 1
        # 添加其他信息
        doc_list = self.updateDoclist(doc_list)
        # 添加正股信息
        for doc in doc_list:
            for key in ['endtime', 'starttime', 'owner', 'code']:
                del doc[key]
            CSV.writeLine(doc)
        CSV.close()
示例#7
0
    def getWave(self, market='HK', autype='qfq'):
        CSV = csvFile(folder="/data/csv",
                      filename="rate_%s_%s.csv" % (market, autype),
                      headers=["code", "name", "rate"])

        df = self.getStockInfo(market)
        i = 0
        for index, row in df.iterrows():
            i += 1
            doc = {
                "code": row["code"],
                "name": row["name"],
                "rate": self.getHistory(row["code"], autype)
            }
            if i % 200 == 0:
                print(i, doc)

            if i > 2: return

            CSV.writeLine(doc)
        CSV.close()