def spawn(dllroot,outdir,intrvl,val_type,*symbols): if val_type not in ['OHLCV','OHLC','CV','C']: raise ValueError("invalid val_type (OHLCV,OHLC,CV or C)") exec( "from tosdb.intervalize import " + CLS_BASE + val_type + " as _Goti", globals() ) tosdb.init( root=dllroot ) # create block blk = tosdb.TOSDB_DataBlock( BLOCK_SIZE, date_time=True) blk.add_items( *(symbols) ) blk.add_topics( 'last' ) if 'V' in val_type: blk.add_topics( 'volume' ) # generate filename dprfx = _strftime("%Y%m%d", _localtime()) isec = int(intrvl * 60) iobjs = list() for s in symbols: # # create GetOnTimeInterval object for each symbol # p = _path(outdir) + '/' + dprfx + '_' + \ s.replace('/','-S-').replace('$','-D-').replace('.','-P-') + \ '_' + val_type + '_' + str(intrvl) + 'min.tosdb' iobj = _Goti.send_to_file( blk, s, p, getattr(_TI,_TI.val_dict[ isec ]), isec/10) print( repr(iobj) ) iobjs.append( iobj ) return iobjs
def __call__(self, pipe): print('starting plotter...') tosdb.init( dllpath= "C:/TOSDataBridge-master/bin/Release/Win32/tos-databridge-0.9-x86.dll" ) b1 = tosdb.TOSDB_DataBlock(50, False) b1.add_topics('Volume') b1.add_topics('Last') b1.add_topics('LAST_SIZE') b1.add_items('SPY') self.b1 = b1 for item in b1.items(): self.volumeData2[item] = [[], [], []] self.priceData[item] = [[], [], []] self.colors[item] = [[], [], []] self.pipe = pipe self.fig, self.ax = plt.subplots(1, sharex=False) self.fig.set_size_inches((4, 2.5)) self.fig.tight_layout() self.fig.subplots_adjust(top=.95) timer = self.fig.canvas.new_timer(interval=refreshInterval * 1000) timer.add_callback(self.call_back) timer.start() #self.socketIO = sio('localhost', 5001, wait_for_connection=False) print('...done') plt.show()
def __call__(self, pipe): tosdb.init( dllpath= "C:/TOSDataBridge-master/bin/Release/Win32/tos-databridge-0.9-x86.dll" ) b1 = tosdb.TOSDB_DataBlock(50, True) b1.add_topics('CUSTOM19') b1.add_topics('Last') b1.add_topics('ASK') b1.add_topics('BID') b1.add_items('SPY') self.b1 = b1 for item in b1.items(): self.priceData[item] = [[], [], []] self.pipe = pipe self.fig, self.ax = plt.subplots(1, 1, sharex=False) self.fig.set_size_inches((1, 1)) self.fig.tight_layout() timer = self.fig.canvas.new_timer(interval=refreshInterval) timer.add_callback(self.call_back) timer.start() plt.show()
def test_marker_func(fname, *args): block = tosdb.TOSDB_DataBlock(N,True) block.add_items(*ITEMS) block.add_topics(*TOPICS) topics = list(TOPICS) _shuffle(topics) for topic in topics: item = _choice(ITEMS) date_time = _choice([True,False]) passes = _randint(3,10) wait = int(MAX_SEC_PER_TEST/passes) print("+ TEST", fname, str((item,topic,date_time,passes,wait))) test(fname, block, (item, topic, date_time) + args, passes, wait) block.close()
def test(n, pause): is_conn = tosdb.connected() if not is_conn: print("*** COULD NOT CONNECT... exiting ***\n") exit(1) print("-- CREATE BLOCK --\n") b1 = tosdb.TOSDB_DataBlock(BSIZE, True, BTIMEOUT) for _ in range(n): nt = _randint(1, MAX_ADD) ni = _randint(1, MAX_ADD) topics = choice_without_replace(T_TOPICS, nt) items = choice_without_replace(T_ITEMS, ni) print('ADD ITEMS: ', str(items)) b1.add_items(*items) print('ADD TOPICS: ', str(topics)) b1.add_topics(*topics) _sleep(pause) print() print(b1) _sleep(pause) items = b1.items() ni = len(items) if ni > 1: ni = _randint(1, ni - 1) items = choice_without_replace(items, ni) print('REMOVE ITEMS: ', str(items)) b1.remove_items(*items) topics = b1.topics() nt = len(topics) if nt > 1: nt = _randint(1, nt - 1) topics = choice_without_replace(topics, nt) print('REMOVE TOPICS: ', str(topics)) b1.remove_topics(*topics) _sleep(pause) print() print(b1) _sleep(pause)
def __init__(self, ticker, test): self.ticker = ticker self.block = tosdb.TOSDB_DataBlock(100000, True) self.ohlcblock = ohlc.tosdb.TOSDB_ThreadSafeDataBlock(100000) self.block.add_items(ticker) self.block.add_topics( "OPEN", "HIGH", "LOW", "bid", "ask", "volume", "LAST", "LASTX", "BIDX", "ASKX", "LAST_SIZE", "CUSTOM5", "CUSTOM9", )
help='test virtual interface via "address port [timeout]"') parser.add_argument('--root', help='root directory to search for the library') parser.add_argument('--path', help='the exact path of the library') parser.add_argument('--auth', help='password to use for authentication') args = parser.parse_args() if init(): test_admin() if args.virtual: print() print("-- CREATE (VIRTUAL) BLOCK --") b1 = tosdb.VTOSDB_DataBlock(vaddr, args.auth, bsize, True, 2000) test_block(b1) print() print("-- CREATE (VIRTUAL, THREAD SAFE) BLOCK --") b2 = tosdb.VTOSDB_ThreadSafeDataBlock(vaddr, args.auth, bsize, True, 2000) test_block(b2) else: print() print("-- CREATE BLOCK --") b1 = tosdb.TOSDB_DataBlock(bsize, True, 2000) test_block(b1) print() print("-- CREATE (THREAD SAFE) BLOCK --") b2 = tosdb.TOSDB_ThreadSafeDataBlock(bsize, True, 2000) test_block(b2) else: exit(1)
import tosdb import time import csv import numpy as np import pandas as pd from datetime import datetime from tosdb.intervalize import ohlc from timeit import default_timer tosdb.init( dllpath=r"C:\TOSDataBridge\bin\Release\x64\tos-databridge-0.9-x64.dll") block = tosdb.TOSDB_DataBlock(100000, True) ohlcblock = ohlc.tosdb.TOSDB_ThreadSafeDataBlock(100000) block.add_items("/MES:XCME", "/MYM:XCBT") block.add_topics( "OPEN", "HIGH", "LOW", "bid", "ask", "volume", "LAST", "LASTX", "BIDX", "ASKX", "LAST_SIZE", "CUSTOM5", "CUSTOM9", ) time.sleep(2)
def test(): global bsize _ladj = lambda s: s.ljust(20) print(_ladj("CONNECTED:"), tosdb.connected()) blim = tosdb.get_block_limit() print(_ladj("GET BLOCK LIMIT:"), blim) print(_ladj("HALVE BLOCK LIMIT:")) tosdb.set_block_limit(int(blim / 2)) print(_ladj("GET BLOCK LIMIT:"), tosdb.get_block_limit()) print("\n", _ladj("TOPIC BITS/STRINGS:")) for t in T_TOPICS: print(_ladj(t), str(tosdb.type_bits(t)).ljust(4), _ladj(tosdb.type_string(t))) print("\nCREATE BLOCK:") b1 = tosdb.TOSDB_DataBlock(bsize, True, 2000) for i, v in b1.info().items(): print(_ladj(i), v) bsize = b1.get_block_size() print("\n", _ladj("GET BLOCK SIZE"), bsize) bsize *= 2 print(_ladj("DOUBLE BLOCK SIZE")) b1.set_block_size(bsize) print(_ladj("GET BLOCK SIZE"), b1.get_block_size()) print('\n', _ladj("ADD ITEMS & TOPICS:")) b1.add_items(*T_ITEMS) b1.add_topics(*T_TOPICS) print(_ladj("ITEMS:"), b1.items()) print(_ladj("TOPICS:"), b1.topics()) if sorted(b1.items()) != sorted(T_ITEMS): print("--- ITEMS DON'T MATCH ---", file=_stderr) if sorted(b1.topics()) != sorted(T_TOPICS): print("--- TOPICS DON'T MATCH ---", file=_stderr) rt = T_TOPICS.pop() print(_ladj(("REMOVE TOPIC " + rt))) b1.remove_topics(rt) if sorted(b1.topics()) != sorted(T_TOPICS): print("--- TOPICS DON'T MATCH ---", file=_stderr) else: print(_ladj("TOPICS:"), b1.topics()) ri = T_ITEMS.pop() print(_ladj(("REMOVE ITEM " + ri))) b1.remove_items(ri) if sorted(b1.items()) != sorted(T_ITEMS): print("--- ITEMS DON'T MATCH ---", file=_stderr) else: print(_ladj("ITEMS:"), b1.items()) print("\nSLEEP FOR 5 SECONDS TO GET SOME DATA") _sleep(5) print("\nGET (RANDOM):") for i in range(0, 10, 2): ii = _rchoice(T_ITEMS) tt = _rchoice(T_TOPICS) dd = _rchoice([1, 0]) print(_ladj(ii), _ladj(tt), _ladj(str(dd)), end=' ') try: v = b1.get(ii, tt, dd, i) print(str(v)) except tosdb._common.TOSDB_DataError: print("no data yet") ii = _rchoice(T_ITEMS) tt = "LAST" print("\nSTREAM SNAPSHOT:", ii, tt, 'date_time=True', 'end=3') vdt = b1.stream_snapshot(ii, tt, True, 3) for k in vdt: print(str(k[1]), str(k[0])) print("\nSTREAM SNAPSHOT:", ii, tt, 'date_time=False', 'end=10') vdt = b1.stream_snapshot(ii, tt, False, 10) print(str(vdt)) print("\nSTREAM SNAPSHOT FROM MARKER:", ii, tt, 'date_time=True', 'beg = 0') for i in range(3): print(str(i + 1), "(sleep 2 second(s))") _sleep(2) ssfm = b1.stream_snapshot_from_marker(ii, tt, True, 0) if (ssfm): for k in ssfm: print(str(k[1]), str(k[0])) print("\nITEM FRAME:", tt, 'date_time=False') print(b1.item_frame(tt)) print("\nTOPIC FRAME:", ii, 'date_time=False') print(b1.topic_frame(ii)) print("\nTOTAL FRAME:", ii, 'date_time=False') print(b1.total_frame()) print()