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)
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)