def update_realtime(self, fakeNow = None): if not trading_date_time.isRealtimeDataAvailableChina(fakeNow): print("Not requesting realtime data because trade has closed.") return data = price_data_loader_china.get().get_realtime_quotes(self.code).iloc[0] print(data) price = float(data["price"]) time_str = "%s %s" % (data["date"], data["time"]) for interval in PriceData.INTERVALS: self.__update_realtime_at_interval(interval, price, time_str)
def get_tencent_hist_data_by_interval(self, interval): data = price_data_loader_china.get().get_k_data(code = self.code, ktype = PriceData.INTERVAL_TO_REQUEST_MAP[interval]) if interval.endswith("min"): # Fix date format for minute intervals. size = len(data.index) for i in range(size): data.at[i, "date"] = "%s:00" % data.at[i, "date"] # Remove irregular data. Tecent data gives one more minute record for current minute interval when trading! i = size - 1 last_datetime = datetime.datetime.strptime(data.at[i, "date"], TradingDateTime.DATETIME_STRFTIME) close_datetime = trading_date_time.closeTimeOfCurrentMinuteIntervalChina(int(interval[:-3]), last_datetime) if last_datetime != close_datetime: print(last_datetime, close_datetime) data.drop(i, inplace = True) data = data.set_index("date").sort_index() return data
def get_ifeng_hist_data_by_interval(self, interval): return price_data_loader_china.get().get_hist_data(code = self.code, ktype = PriceData.INTERVAL_TO_REQUEST_MAP[interval])
def __load_data_frame_from_csv(self, csv_path): if os.path.exists(csv_path): return price_data_loader_china.get().read_csv(csv_path, index_col = 0) else: print("File not found: %s. Will do fresh download instead." % csv_path) return None
def __save_data_frame_to_csv(self, df, csv_path): price_data_loader_china.get().save_csv(df, csv_path)
def nowChina(self): return price_data_loader_china.get().now()