def test_realtime_get_bad_id(self): stock = realtime.get('9999') self.assertFalse(stock['success']) self.assertIn('rtmessage', stock) self.assertIn('rtcode', stock) stock = realtime.get(['9999', '8888']) self.assertFalse(stock['success']) self.assertIn('rtmessage', stock) self.assertIn('rtcode', stock)
def test_realtime_get_blank(self): realtime.proxies_list = [] stock = realtime.get('') self.assertFalse(stock['success']) self.assertIn('rtmessage', stock) self.assertIn('rtcode', stock)
def accu_capacity_multi(stock_nums): real_time_stocks = realtime.get(stock_nums) accu_capacitys = [ real_time_stocks[stock_num]['realtime']['accumulate_trade_volume'] for stock_num in stock_nums ] return accu_capacitys
def __init__(self, sid: str, ndays: int): Stock.__init__(self, sid) # Init data self.ndays = ndays self.realtime = realtime.get(self.sid) self.fetch_210() self.bias_ratio()
def test_mock_one_stock_id(self): s = realtime.get('2330') self.assertTrue(s['success']) self.assertEqual(s['info']['code'], '2330') self.assertEqual(s['realtime']['latest_trade_price'], '214.50') self.assertEqual(s['realtime']['best_bid_price'], ['214.00', '213.50', '213.00', '212.50', '212.00'])
def test_mock_multiple_stock_id(self): s = realtime.get(['2330', '2337']) self.assertTrue(s['success']) self.assertCountEqual(s.keys(), ['2330', '2337', 'success']) self.assertTrue(s['2330']['success']) self.assertEqual(s['2330']['info']['code'], '2330') self.assertEqual(s['2330']['realtime']['latest_trade_price'], '214.50') self.assertTrue(s['2337']['success'])
def _stock_anal(self, sid: str, real: bool = False): # read in data self.read_stock(sid) if real: data = realtime.get(sid) real_data = data['realtime'] real_info = data['info'] latest_trade_price = real_data['latest_trade_price'] accumulate_trade_volume = real_data['accumulate_trade_volume'] datalist = [ [ datetime.now(), int(accumulate_trade_volume) * 1000, None, None, None, None, latest_trade_price, None, None ], ] labelist = [ 'date', 'capacity', 'turnover', 'open', 'high', 'low', 'close', 'change', 'transaction' ] real_pd = pd.DataFrame(datalist, columns=labelist) self.stock_pd = self.stock_pd.append(real_pd, ignore_index=True) timestamp = real_info['time'] else: timestamp = '' self.stock_pd = self.stock_pd.set_index('date') if self.stock_pd.shape[0] == 0: raise DataEmptyError ma03 = self.stock_pd.rolling(3).mean() ma05 = self.stock_pd.rolling(5).mean() ma08 = self.stock_pd.rolling(8).mean() ma20 = self.stock_pd.rolling(20).mean() ma60 = self.stock_pd.rolling(60).mean() self.ma_pd = pd.concat([ ma03['close'], ma05['close'], ma08['close'], ma20['close'], ma60['close'] ], axis=1) self.ma_pd.columns = ['ma03', 'ma05', 'ma08', 'ma20', 'ma60'] self.ma_std = self.ma_pd.loc[:, ['ma03', 'ma05', 'ma08']].std(axis=1) self.ma_mean = self.ma_pd.loc[:, ['ma03', 'ma05', 'ma08']].mean(axis=1) self.norstd = self.ma_std.div(self.ma_mean) self.name = self.twse[sid].name self.id = int(sid) self.timestamp = timestamp self.stock_pd[['capacity']] = self.stock_pd[['capacity']] / 1000 #data['slop'] = 0.5*(stock_pd['close'].iloc[-1] - stock_pd['close'].iloc[-3]) #data['slop'] = 0.5*(stock_ma03['close'].iloc[-1] - stock_ma03['close'].iloc[-2]) #data['slop'] = 0.5*(stock_ma03['close'].iloc[-1] - stock_ma03['close'].iloc[-3]) self.slop = 0.5 * (self.ma_pd.ma05.iloc[-1] - self.ma_pd.ma05.iloc[-2]) self.nstdslop = 0.5 * (self.norstd.iloc[-1] - self.norstd.iloc[-2])
def test_raises_json_decode_error(self): realtime.proxies_list = [] responses.add(responses.GET, 'http://mis.twse.com.tw/stock/index.jsp', status=200) responses.add(responses.GET, self.FETCH_URL['2330'], body='{json:wrong', status=200) stock = realtime.get('2330')
def test_raises_timeout_error(self): realtime.proxies_list = [] responses.add(responses.GET, 'http://mis.twse.com.tw/stock/index.jsp', status=200) responses.add(responses.GET, self.FETCH_URL['2330'], body=TimeoutError('Unittest Mock TimeoutError!!'), status=200) stock = realtime.get('2330')
def get_data(self): self.real_data = realtime.get(self.sid) self.real = self.real_data['realtime'] self.info = self.real_data['info'] self.latest_trade_price = self.real['latest_trade_price'] self.accumulate_trade_volume = self.real['accumulate_trade_volume'] self.best_bid_price = self.real['best_bid_price'] self.best_ask_price = self.real['best_ask_price'] self.best_bid_volume = self.real['best_bid_volume'] self.best_ask_volume = self.real['best_ask_volume'] self.start = self.real['open'] self.high = self.real['high'] self.low = self.real['low']
def test_realtime_get_tpex_id(self): realtime.proxies_list = [] responses.add(responses.GET, 'http://mis.twse.com.tw/stock/index.jsp', status=200) responses.add(responses.GET, self.FETCH_URL['6223'], json=twstock.mock.get_stock_info('6223'), status=200) stock = realtime.get('6223') self.assertTrue(stock['success']) self.assertEqual(stock['info']['code'], '6223')
def test_proxy_raises_proxy_error(self): realtime.proxies_list = [ 'http://0.0.0.0:1234', 'http://0.0.0.0:3128', ] responses.add(responses.GET, 'http://mis.twse.com.tw/stock/index.jsp', status=200) responses.add(responses.GET, self.FETCH_URL['2330'], body=ProxyError('Unittest Mock ProxyError!!'), status=200) stock = realtime.get('2330')
def test_realtime_get_response_without_msg_array(self): realtime.proxies_list = [] responses.add(responses.GET, 'http://mis.twse.com.tw/stock/index.jsp', status=200) responses.add(responses.GET, self.FETCH_URL['2330'], json=twstock.mock.get_stock_info('without_msg_array'), status=200) stock = realtime.get('2330') self.assertFalse(stock['success']) self.assertIn('rtmessage', stock) self.assertIn('rtcode', stock)
def test_proxy(self): realtime.proxies_list = [ 'http://128.199.165.29:8888', 'http://128.199.195.200:8080', 'socks5://207.180.233.152:50775', ] responses.add(responses.GET, 'http://mis.twse.com.tw/stock/index.jsp', status=200) responses.add(responses.GET, self.FETCH_URL['2330'], json=twstock.mock.get_stock_info('2330'), status=200) stock = realtime.get('2330')
def stock(item: Item): return _format_stock_info(realtime.get(item.id_list))
def test_realtime_get_tpex_id(self): stock = realtime.get('6223') self.assertTrue(stock['success']) self.assertEqual(stock['info']['code'], '6223')
def real_time(stock_num): stock = realtime.get(stock_num) return stock
from twstock import realtime print('hello stock') print( realtime.get([ '2330', '2337', '2409', '2337', '2409', '2801', '2812', '2836', '2834', '2832', '2823', '2838', '2887', '6005', '5880' ])) print('hello stock2')