Exemple #1
0
    def fetch(market):
        bars = api.market_bars(market['MarketId'],
            interval=opts.interval.upper(),
            span=opts.span, bars=opts.bars)['PriceBars']

        if opts.raw:
            pad_count = 0
        else:
            orig = len(bars)
            bars = pad_bars(bars, interval=opts.span * 60)
            pad_count = len(bars) - orig
            if opts.chop:
                bars = bars[-opts.bars:]

        filename = base.filename_for(opts, market,
            kind='bars_%s%s' % (opts.span, opts.interval[0].upper()))

        with file(filename, 'w') as fp:
            writer = csv.writer(fp, quoting=csv.QUOTE_ALL)
            write = writer.writerow
            write(('UtcTime', 'Open', 'High', 'Low', 'Close'))
            for bar in bars:
                write((tsformat(bar),
                      bar['Open'], bar['High'], bar['Low'],
                      bar['Close']))

        print 'Wrote %d bars for %d/%s to %r (padded:%d, first:%r, last:%r)' %\
            (len(bars), market['MarketId'], market['Name'], filename,
             pad_count, bars and tsformat(bars[0]),
                        bars and tsformat(bars[-1]))
Exemple #2
0
def main(opts, args, api, streamer, searcher):
    if not args:
        print 'Need at least one symbol to lookup.'
        return

    for i in xrange(len(args)):
        args[i] += opts.suffix or ''

    stdout = make_writer(sys.stdout)
    stdout.writerow(HEADER)
    market_writer_map = {}

    def dump(price):
        if not price['MarketId']:
            return
        s, market = markets[price['MarketId']]
        row = price_to_row(market, price)
        stdout.writerow(row)
        market_writer_map[price['MarketId']].writerow(row)

    markets, unknown = base.threaded_lookup(searcher, args)
    if unknown:
        print '# Unknown:', ', '.join(unknown)

    for market_id, (ric, market) in markets.iteritems():
        fp = file(base.filename_for(opts, market, kind='ticks'), 'a', 1)
        writer = csv.writer(fp, quoting=csv.QUOTE_ALL)
        market_writer_map[market_id] = writer
        if os.path.getsize(fp.name) == 0:
            writer.writerow(HEADER)
        streamer.prices.listen(dump, market_id)

    raw_input()
    streamer.stop()