def debug_sub(exchange, model, routing_key, user, password, host): if model == 'fanout': subscriber(host=host, user=user, password=password, exchange=exchange).start() elif model == 'direct': subscriber_routing(host=host, user=user, password=password, exchange=exchange, routing_key=routing_key).start()
def subscribe_data(self, code, frequence, data_host, data_port, data_user, data_password, model='py'): """[summary] Arguments: code {[type]} -- [description] frequence {[type]} -- [description] """ if frequence.endswith('min'): if model == 'py': self.sub = subscriber(exchange='realtime_{}_{}'.format( frequence, code), host=data_host, port=data_port, user=data_user, password=data_password) elif model == 'rust': self.sub = subscriber_routing(exchange='realtime_{}'.format( code), routing_key = frequence, host=data_host, port=data_port, user=data_user, password=data_password) self.sub.callback = self.callback elif frequence.endswith('s'): import re self._num_cached = 2*int(re.findall(r'\d+',self.frequence)[0]) self.sub = subscriber_routing(exchange='CTPX', routing_key=code, host=data_host, port=data_port, user=data_user, password=data_password) self.sub.callback = self.second_callback elif frequence.endswith('tick'): self._num_cached = 1 self.sub = subscriber_routing(exchange='CTPX', routing_key=code, host=data_host, port=data_port, user=data_user, password=data_password) self.sub.callback = self.tick_callback
def __init__(self, frequency='5min'): """ 暂时不支持单个股票重采样 :param frequency: """ super().__init__() if isinstance(frequency, float): self.frequency = int(frequency) elif isinstance(frequency, str): _frequency = frequency.replace('min', '') if str.isnumeric(_frequency): self.frequency = int(_frequency) else: print("unknown frequency: %s" % frequency) return elif isinstance(frequency, int): self.frequency = frequency else: print("unknown frequency: %s" % frequency) return self.market_data = None # 接收stock tick 数据 self.sub = subscriber( host=eventmq_ip, exchange='realtime_stock_min') self.sub.callback = self.stock_min_callback # 发送重采样的数据 self.pub = publisher( host=eventmq_ip, exchange='realtime_stock_{}_min'.format(self.frequency)) threading.Thread(target=self.sub.start).start() print("QA_REALTIME_COLLECTOR_STOCK_BAR_RESAMPLER INIT, frequency: %s" % self.frequency)
def __init__(self): super().__init__() self.ws = websocket.WebSocketApp( 'wss://openmd.shinnytech.com/t/md/front/mobile', on_pong=on_pong, on_message=self.on_message, on_error=on_error, on_close=on_close) def _onopen(ws): def run(): ws.send(peek()) threading.Thread(target=run, daemon=False).start() self.quoteclient = pymongo.MongoClient( host=mongo_ip).QAREALTIME.realtimeQuote self.ws.on_open = _onopen self.data = {} self.subscribe_list = ['SHFE.rb1910', 'DCE.j1909'] self.sub = subscriber(host=eventmq_ip, exchange='QAQuote') self.sub.callback = self.callback threading.Thread(target=self.ws.run_forever, name='market_websock', daemon=False).start() threading.Thread(target=self.sub.start, name='market_subscriber', daemon=True).start()
def __init__(self): super().__init__(name='qasubclient') self.req = publisher_routing(exchange='QARealtime_Market', routing_key='stock') self.last_ab = pd.DataFrame() self.sub = subscriber(exchange='stocktransaction') self.sub.callback = self.callback
def subscribe_data(self, code, frequence, data_host, data_port, data_user, data_password): """[summary] Arguments: code {[type]} -- [description] frequence {[type]} -- [description] """ self.sub = subscriber(exchange='realtime_{}_{}'.format( frequence, code), host=data_host, port=data_port, user=data_user, password=data_password) self.sub.callback = self.callback
def __init__(self, code='rb1910', freqence='60min', model='tb'): super().__init__() self.code = code self.freqence = freqence self.sub = subscriber(host=eventmq_ip, exchange='realtime_min_{}'.format(self.code)) self.pub = publisher(host=eventmq_ip, exchange='realtime_{}_{}'.format( self.freqence, self.code)) self.sub.callback = self.callback self.market_data = [] self.dt = None self.model = model
def __init__(self, frequency='5min', date: datetime.datetime = None, log_dir='./log'): """ 暂时不支持单个股票重采样 :param frequency: """ super().__init__() logger.info("QA实时股票Bar重采样,初始化...周期: %s" % frequency) if isinstance(frequency, float): self.frequency = int(frequency) elif isinstance(frequency, str): _frequency = frequency.replace('min', '') if str.isnumeric(_frequency): self.frequency = int(_frequency) else: logger.error("不支持的周期 unknownFrequency: %s" % frequency) return elif isinstance(frequency, int): self.frequency = frequency else: logger.error("不支持的周期 unknownFrequency: %s" % frequency) return self.market_data = None # 接收stock tick 数据 self.sub = subscriber(host=eventmq_ip, exchange='realtime_stock_min') self.sub.callback = self.on_message_callback self.stock_sub = subscriber_routing(host=eventmq_ip, exchange='QARealtime_Market', routing_key='stock') self.stock_sub.callback = self.on_stock_subscribe_message_callback # 发送重采样的数据 self.pub = publisher(host=eventmq_ip, exchange='realtime_stock_{}_min'.format( self.frequency)) self.count = 0 self.code_list = [] cur_time = datetime.datetime.now() if date is None else date self.cur_year = cur_time.year self.cur_month = cur_time.month self.cur_day = cur_time.day # 多进程计算 self.cpu_count = multiprocessing.cpu_count() - 1 self.log_dir = log_dir threading.Thread(target=self.sub.start, daemon=True).start() threading.Thread(target=self.stock_sub.start, daemon=True).start()
def debug_sub(exchange, model, routing_key, user, password, host, port, durable): if model == 'fanout': subscriber(host=host, port=port, user=user, password=password, exchange=exchange).start() elif model == 'direct': subscriber_routing(host=host, port=port, user=user, password=password, exchange=exchange, routing_key=routing_key, durable=durable).start() elif model == 'topic': subscriber_topic(host=host, port=port, user=user, password=password, exchange=exchange, routing_key=routing_key, durable=durable).start()
def __init__(self, code_list: list, frequency='60min', strategy="HS300Enhance", init_data=None): """ :param code_list: :param indicator_fun: :param frequency: :param strategy: """ super().__init__() if isinstance(frequency, float): self.frequency = int(frequency) elif isinstance(frequency, str): _frequency = frequency.replace('min', '') if str.isnumeric(_frequency): self.frequency = int(_frequency) else: print("unknown frequency: %s" % frequency) return elif isinstance(frequency, int): self.frequency = frequency else: print("unknown frequency: %s" % frequency) return self.market_data = init_data self.stock_code_list = code_list self.strategy = strategy # 接收stock 重采样的数据 self.sub = subscriber(host=eventmq_ip, exchange='realtime_stock_{}_min'.format( self.frequency)) self.sub.callback = self.stock_min_callback # 发送stock indicator result self.pub = publisher_topic( host=eventmq_ip, exchange='realtime_stock_calculator_{}_{}_min'.format( self.strategy, self.frequency)) threading.Thread(target=self.sub.start).start() print("REALTIME_STOCK_CACULATOR INIT, strategy: %s frequency: %s" % (self.strategy, self.frequency))
from QAPUBSUB.consumer import subscriber sub = subscriber(host='192.168.2.116',user='******', password='******' ,exchange= 'realtime_60min_rb1910') sub.start()
# zsorder.code = '000001' # zsorder.vol = 1000 # zsorder.price = 0.0 # zsorder.bsflg = 1 # zs=zsorder.SerializeToString() # print(zs) # odata2 = zsorder_pb2.zsorder # odata2.ParseFromString(zsorder) # print(odata2.code) def ucallback(a,b,c,data): odata = zsorder_pb2.zsorder() # print(a) # print(b) # print(data) # print(type(data)) try: odata.ParseFromString(data) # odata.ParseFromBytes(data) # print("ok") print(odata.code) except Exception as e: print("error") print(e) c = consumer.subscriber(exchange='zsorder') # c.callback = lambda a,b,c,data: print(data) c.callback = ucallback c.start()
from QAPUBSUB import consumer c = consumer.subscriber(exchange='ctp') c.callback = lambda x, y, body, z: print(z) c.start()