示例#1
0
    def OnTick(self, response):
        # # 继承基类
        DataRecorder.OnTick(self, response)

        # print response

        dt_now = dt.datetime.strptime(
            response.actionDate + " " + response.tickTime,
            "%Y%m%d %H:%M:%S.%f")
        # print dt_now
        # # 当前bar时间戳
        dt_bar = {}
        dt_bar['M01'] = dt.datetime(dt_now.year, dt_now.month, dt_now.day,
                                    dt_now.hour, dt_now.minute, 0)
        dt_bar['M03'] = dt.datetime(dt_now.year, dt_now.month, dt_now.day,
                                    dt_now.hour, dt_now.minute / 3 * 3, 0)
        dt_bar['M05'] = dt.datetime(dt_now.year, dt_now.month, dt_now.day,
                                    dt_now.hour, dt_now.minute / 5 * 5, 0)
        dt_bar['M10'] = dt.datetime(dt_now.year, dt_now.month, dt_now.day,
                                    dt_now.hour, dt_now.minute / 10 * 10, 0)
        dt_bar['M15'] = dt.datetime(dt_now.year, dt_now.month, dt_now.day,
                                    dt_now.hour, dt_now.minute / 15 * 15, 0)
        dt_bar['M30'] = dt.datetime(dt_now.year, dt_now.month, dt_now.day,
                                    dt_now.hour, dt_now.minute / 30 * 30, 0)
        dt_bar['H01'] = dt.datetime(dt_now.year, dt_now.month, dt_now.day,
                                    dt_now.hour, 0, 0)
        dt_now_shift4 = dt_now + dt.timedelta(hours=4)
        dt_bar['D01'] = dt.datetime(dt_now_shift4.year, dt_now_shift4.month,
                                    dt_now_shift4.day, 0, 0, 0)
        dt_bar['W01'] = dt_bar['D01'] - dt.timedelta(
            days=dt_bar['D01'].weekday())

        symN = re.findall(r'[a-zA-Z]+', response.symbol)[0]
        if dt_now not in self.lastPrice_df[symN].index:
            self.lastPrice_df[symN] = self.lastPrice_df[symN].append(
                pd.DataFrame(index=[dt_now]))
            self.openInterest_df[symN] = self.openInterest_df[symN].append(
                pd.DataFrame(index=[dt_now]))
            self.volume_df[symN] = self.volume_df[symN].append(
                pd.DataFrame(index=[dt_now]))

        self.lastPrice_df[symN].ix[dt_now,
                                   response.symbol] = response.lastPrice
        self.openInterest_df[symN].ix[dt_now,
                                      response.symbol] = response.openInterest
        self.volume_df[symN].ix[dt_now, response.symbol] = response.volume

        if dt_bar['M01'] != self.last_dt_bar[symN]['M01']:
            self.Tick_To_M01(symN, dt_bar, response)
示例#2
0
    def OnTick(self, response):
        # # 继承基类
        DataRecorder.OnTick(self, response)

        # # --------------------------------------------------
        # # 第一次订阅
        # if response.symbol not in self.last_dt_bar.keys():
        #     self.last_dt_bar[response.symbol] = {}
        #     self.CntBar[response.symbol] = {}
        #     self.last_bar[response.symbol] = {}
        #     dt_now = dt.datetime.now()
        #     for k in self.period_key_list:
        #         self.last_dt_bar[response.symbol][k] = dt.datetime(dt_now.year, dt_now.month, dt_now.day, dt_now.hour,
        #                                           dt_now.minute / int(k[1:]) * int(k[1:]), 0)
        #         self.CntBar[response.symbol][k] = BfBarData()
        #         self.last_bar[response.symbol][k] = BfBarData()

        # # 当前时刻

        dt_now = dt.datetime.strptime(
            response.actionDate + " " + response.tickTime,
            "%Y%m%d %H:%M:%S.%f")
        # print dt_now
        # # 当前bar时间戳
        dt_bar = {}
        dt_bar['M01'] = dt.datetime(dt_now.year, dt_now.month, dt_now.day,
                                    dt_now.hour, dt_now.minute, 0)
        dt_bar['M03'] = dt.datetime(dt_now.year, dt_now.month, dt_now.day,
                                    dt_now.hour, dt_now.minute / 3 * 3, 0)
        dt_bar['M05'] = dt.datetime(dt_now.year, dt_now.month, dt_now.day,
                                    dt_now.hour, dt_now.minute / 5 * 5, 0)
        dt_bar['M10'] = dt.datetime(dt_now.year, dt_now.month, dt_now.day,
                                    dt_now.hour, dt_now.minute / 10 * 10, 0)
        dt_bar['M15'] = dt.datetime(dt_now.year, dt_now.month, dt_now.day,
                                    dt_now.hour, dt_now.minute / 15 * 15, 0)
        dt_bar['M30'] = dt.datetime(dt_now.year, dt_now.month, dt_now.day,
                                    dt_now.hour, dt_now.minute / 30 * 30, 0)
        dt_bar['H01'] = dt.datetime(dt_now.year, dt_now.month, dt_now.day,
                                    dt_now.hour, 0, 0)
        dt_now_shift4 = dt_now + dt.timedelta(hours=4)
        dt_bar['D01'] = dt.datetime(dt_now_shift4.year, dt_now_shift4.month,
                                    dt_now_shift4.day, 0, 0, 0)
        dt_bar['W01'] = dt_bar['D01'] - dt.timedelta(
            days=dt_bar['D01'].weekday())

        # print '*'*60

        self.Tick_To_M01(dt_bar, response, PERIOD_M01)