Пример #1
0
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
Пример #2
0
    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()
Пример #3
0
    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()
Пример #4
0
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()    
Пример #5
0
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)
Пример #6
0
 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",
     )
Пример #7
0
        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)
Пример #8
0
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)
Пример #9
0
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()