Esempio n. 1
0
    def detect(self, df0, period=14, uid=''):
        docs = self.stageApply(df0, period=period, uid=uid)
        res = pd.DataFrame(docs)

        if len(res) > 0:
            if self.saveDetail:
                self.Train.insertAll(docs)

            diff = res[res['diff'] > 0]['diff'].mean()
            self.testDays = public.dayDiff(self.endDate, self.startDate)
            # 计算最大回测
            sum = res['income'].cumsum() + self.iniAmount
            inr = res['income'] / self.iniAmount
            # 计算夏普指数
            sha = (res['income'].sum() / self.iniAmount - 0.02 * self.testDays / 252) / inr.std()

            doc = {
                "count": int(len(docs) / 2),
                "amount": self.iniAmount,
                "price": res['price'].mean(),
                "income": res["income"].sum(),
                # "delta": res['delta'].mean(),
                "maxdown": ((sum.shift(1) - sum) / sum.shift(1)).max(),
                "sharprate": sha,
                "timediff": int(0 if np.isnan(diff) else diff)
            }

            #print(self.code, doc['count'], doc['income'])
            return doc
        else:
            return None
Esempio n. 2
0
    def record(self):
        # 510050 行情
        stock = self.Int.get510050()
        stock["datetime"] = public.getDatetime()
        self.Owner.insert(stock)

        # 期权行情
        etfs = self.Int.get_price()
        spys = []

        self.price_owner = float(stock["price"])

        for i in range(0, len(etfs), 2):
            # 计算剩余天数
            r = public.dayDiff(self.Int.expireMap[etfs[i]["code"]],
                               public.getDate())

            rec0 = self.calc(etfs[i], etfs[i + 1], r, mode=0)
            spys.append(rec0)

            rec1 = self.calc(etfs[i + 1], etfs[i], r, mode=1)
            spys.append(rec1)

        # inform 通知
        try:
            self.inform(spys)
        except:
            logger.error("ws disconnect")

        # 写入数据库
        self.sPrice.insertAll(etfs)

        self.Spy.insertAll(spys)
Esempio n. 3
0
def main():
    action = {
        "kline": 1,
        "area":0
    }

    if action["kline"] == 1:
        obj = train_future_jump_sg()
        obj.Pool()

    if action["area"] == 1:
        obj = train_future_jump_sg()
        Rice = interface_Rice()
        for t in [1, 2]:
            lists = obj.getList(t)
            df = pd.DataFrame(lists)
            if t==1:
                df['diff'] = df.apply(lambda r: public.timeDiff(r['enddate'], r['startdate'])//86400, axis=1)
            else:
                df['diff'] = df.apply(lambda r: public.dayDiff(r['enddate'], r['startdate']), axis=1)

            file = Rice.basePath + 'area_%s_sg.csv' % (t)
            df.to_csv(file, index=0, columns=['code', 'name', 'startdate', 'enddate', 'diff'])