def get_random_price(price, code='rb1905', tradingDay='20181119', mu=0, sigma=0.2, theta=0.15, dt=1e-2, ifprint=False, weight=0.1, callback=None): ou_noise = OrnsteinUhlenbeckActionNoise(mu=np.array(mu)) data = [] tick_pickle = { 'InstrumentID': str(code), 'UpdateTime': '', 'UpdateMillisec': '', 'LastPrice': '', 'Volume': 0, 'TradingDay': tradingDay, 'ActionDay': QA_util_date_str2int( QA_util_get_last_day(QA_util_date_int2str(tradingDay))) } for item in time_index: x = str(item).split()[2] if '.' in x: tick_pickle['UpdateMillisec'] = 500 else: tick_pickle['UpdateMillisec'] = 0 tick_pickle['UpdateTime'] = x.split('.')[0] if item.seconds >= 75600: tick_pickle['ActionDay'] = QA_util_date_str2int( QA_util_get_last_day( QA_util_date_int2str(tick_pickle['TradingDay']))) else: tick_pickle['ActionDay'] = tick_pickle['TradingDay'] tick_pickle['Volume'] += random.randint(50, 5000) tick_pickle['LastPrice'] = (ou_noise() + 1) * \ weight * price + (1 - weight) * price data.append(copy.deepcopy(tick_pickle)) if ifprint: print(tick_pickle) if callback is not None: callback(tick_pickle) return pd.DataFrame(data)
def QA_fetch_get_sh_margin(date): """return shanghai margin data Arguments: date {str YYYY-MM-DD} -- date format 'code','name','leveraged_balance','leveraged_buyout','leveraged_payoff','margin_left','margin_sell','margin_repay', 标的证券代码 标的证券简称 本日融资余额(元) leveraged_balance 本日融资买入额(元)leveraged_buyout 本日融资偿还额(元) leveraged_payoff 本日融券余量margin_left 本日融券卖出量 margin_sell 本日融券偿还量 margin_repay Returns: pandas.DataFrame -- res for margin data """ if date in trade_date_sse: data = pd.read_excel(_sh_url.format(QA_util_date_str2int(date)), 1).assign(date=date).assign(sse='sh') data.columns = [ 'code', 'name', 'leveraged_balance', 'leveraged_buyout', 'leveraged_payoff', 'margin_left', 'margin_sell', 'margin_repay', 'date', 'sse' ] data.code = data.code.apply(lambda x: str(x)[0:6]) return data else: pass
def QA_fetch_get_sh_margin(date): """return shanghai margin data Arguments: date {str YYYY-MM-DD} -- date format Returns: pandas.DataFrame -- res for margin data """ if date in trade_date_sse: data= pd.read_excel(_sh_url.format(QA_util_date_str2int (date)), 1).assign(date=date).assign(sse='sh') data.columns=['code','name','leveraged_balance','leveraged_buyout','leveraged_payoff','margin_left','margin_sell','margin_repay','date','sse'] return data else: pass
def get_random_price(price, code='rb1905', tradingDay='20181119', mu=0, sigma=0.2, theta=0.15, dt=1e-2, ifprint=False, weight=0.1, market_type=None): ou_noise = OrnsteinUhlenbeckActionNoise(mu=np.array(mu)) data = [] tick_pickle = { 'InstrumentID': str(code), 'UpdateTime': '', 'UpdateMillisec': '', 'LastPrice': '', 'Volume': 0, 'TradingDay': tradingDay, 'ActionDay': QA_util_date_str2int( QA_util_get_last_day(QA_util_date_int2str(tradingDay))) } if market_type is None: market_type = MARKET_TYPE.FUTURE_CN if re.search( r'[a-zA-z]+', code) else MARKET_TYPE.STOCK_CN if market_type == MARKET_TYPE.FUTURE_CN: time_index = time_index_future else: time_index = time_index_stock for item in time_index: x = str(item).split()[2] if '.' in x: tick_pickle['UpdateMillisec'] = 500 else: tick_pickle['UpdateMillisec'] = 0 tick_pickle['UpdateTime'] = x.split('.')[0] if (item.seconds >= 75600) & (market_type == MARKET_TYPE.FUTURE_CN): tick_pickle['ActionDay'] = QA_util_date_str2int( QA_util_get_last_day( QA_util_date_int2str(tick_pickle['TradingDay']))) else: tick_pickle['ActionDay'] = tick_pickle['TradingDay'] tick_pickle['Volume'] += random.randint(50, 5000) tick_pickle['LastPrice'] = (ou_noise()+1) * \ weight*price + (1-weight)*price data.append(copy.deepcopy(tick_pickle)) if ifprint: print(tick_pickle) return pd.DataFrame(data)