def down_minute_data(self, count=400, freq=None): if pd.isnull(freq): self.data = get_k_data_jq(self.stk_code, count=count, end_date=get_current_datetime_str(), freq=self.freq) else: self.data = get_k_data_jq(self.stk_code, count=count, end_date=get_current_datetime_str(), freq=freq)
def init_today_minute_data(self, count=200, debug_datetime=None): """ 为了避免重复下载数据,有时需要维护最近一段时间的分钟数据 :return: """ try: datetime_now = { True: get_current_datetime_str(), False: fgv.debug_datetime }.get(isinstance(fgv.debug_datetime, type(None))) self.rt_minute_data = get_k_data_jq(stk=self.stk_code, freq=self.freq, count=count, end_date=datetime_now) self.rt_minute_data.loc[:, 'datetime'] = self.rt_minute_data.index self.rt_minute_data.loc[:, 'num'] = range(len(self.rt_minute_data)) self.rt_minute_data = self.rt_minute_data.set_index('num') self.rt_minute_update_minute = self.get_minute_from_datetime( self.rt_minute_data.tail(1)['datetime'].values[0]) return True except Exception as e_: logger_eml.exception('初始下载“rt minute数据”时出错!具体为:%s' % str(e_)) return False
def save_hist_data(self): """ 在内存测试时,应该先运行此函数,此函数会向类的成员变量self.data中注入数据! 将历史bias数据保存到本地 :return: """ df = get_k_data_jq(stk=self.stk_code, freq=self.freq, count=self.hist_count) self.data = self.add_bias_rank_public(df, self.span_q, self.span_s) self.bias_history_data = self.data[self.bias_col].values self.save_bias_to_json()
def get_today_df(self, debug_date=None): df_ = get_k_data_jq(stk=self.stk_code, count=50, end_date={ True: get_current_datetime_str(), False: debug_date }.get(isinstance(debug_date, type(None)))) # 调整df,增加date列,增加正数index列 df_['datetime'] = df_.index df_['datetime_str'] = df_.apply(lambda x: str(x['datetime']), axis=1) # 重置索引 df_ = df_.reset_index(drop=True) return df_
def get_single_trade_time_span(f_code): df = get_k_data_jq(stk=f_code, count=60 * 20, freq='1m') l_group = list(df.groupby(by='date')) l_group.sort(key=lambda x: len(x[1]), reverse=True) df = l_group[0][1] # 获取该天数据 df.loc[:, 'datetime_dt'] = df.apply( lambda x: convert_np_datetime64_to_datetime(x['datetime']), axis=1) df.loc[:, 'num'] = range(0, len(df)) df.set_index('num') df.loc[:, 'dt_next'] = df['datetime_dt'].shift(-1) time_span = [] t_s: datetime.datetime = None t_e: datetime.datetime = None for idx in df.index: t_now: datetime.datetime = df.loc[idx, 'datetime_dt'] t_next: datetime.datetime = df.loc[idx, 'dt_next'] if isinstance(t_s, type(None)): t_s = t_now if t_s.minute % 5 != 0: t_s = t_now - datetime.timedelta(minutes=t_now.minute % 5) if pd.isnull(t_next): t_e = t_now elif t_next.hour * 60 + t_next.minute - (t_now.hour * 60 + t_now.minute) > 1: t_e = t_now if not isinstance(t_e, type(None)): time_span.append((t_s, t_e)) t_s = None t_e = None return list(set(time_span))
# encoding=utf-8
def down_day_data(self, count=150, start_date=None, end_date=None): self.data = get_k_data_jq(self.stk_code, count=count, start_date=start_date, end_date=end_date, freq=self.freq)