def main(): f = FeedHandler() # Deribit can't handle 400+ simultaneous requests, so if all # instruments are needed they should be fed in the different calls sub = { TRADES: ["BTC-PERPETUAL"], TICKER: ['ETH-PERPETUAL'], FUNDING: ['ETH-PERPETUAL'], OPEN_INTEREST: ['ETH-PERPETUAL'] } f.add_feed( Deribit(subscription=sub, callbacks={ OPEN_INTEREST: oi, FUNDING: funding, TICKER: TickerCallback(ticker), TRADES: TradeCallback(trade) })) f.add_feed( Deribit(symbols=['BTC-PERPETUAL'], channels=[L2_BOOK], callbacks={L2_BOOK: BookCallback(book)})) f.run()
def main(): f = FeedHandler() # Deribit can't handle 400+ simultaneous requests, so if all # instruments are needed they should be fed in the different calls config = { TRADES: ["BTC-PERPETUAL"], TICKER: ['ETH-PERPETUAL'], FUNDING: ['ETH-PERPETUAL'], OPEN_INTEREST: ['ETH-PERPETUAL'] } f.add_feed( Deribit(config=config, callbacks={ OPEN_INTEREST: oi, FUNDING: funding, TICKER: TickerCallback(ticker), TRADES: TradeCallback(trade) })) f.add_feed( Deribit(pairs=['BTC-PERPETUAL'], channels=[L2_BOOK], callbacks={L2_BOOK: BookCallback(book)})) f.add_feed( Deribit(pairs=['BTC-26JUN20', 'BTC-25SEP20-11000-P'], channels=[TICKER], callbacks={TICKER: TickerCallback(ticker)})) f.run()
def main(): f = FeedHandler() symbols = Deribit.get_instruments() print(len(symbols)) # symbols = [symbol for symbol in symbols if symbol.endswith("-C") or symbol.endswith("-P")] print(len(symbols)) f.add_feed(Deribit(channels=[TICKER, TRADES], symbols=symbols, callbacks={TICKER: DeribitTickerPostgres(**postgres_cfg), TRADES: DeribitTradePostgres(**postgres_cfg)})) f.run()
def main(): f = FeedHandler() # Deribit can't handle 400+ simultaneous requests, so if all # instruments are needed they should be fed in the different calls config = {TRADES: ['BTC-28JUN19', "ETH-27SEP19", "BTC-PERPETUAL"], TICKER: ['ETH-27SEP19']} f.add_feed(Deribit(config=config, callbacks={TICKER: TickerCallback(ticker), TRADES: TradeCallback(trade)})) f.add_feed(Deribit(pairs=['BTC-PERPETUAL'], channels=[L2_BOOK], callbacks={L2_BOOK: BookCallback(book)})) f.run()
def get_new_subscription(): symbols = Deribit.get_instruments() new_subscription = defaultdict(set) for symbol in symbols: for feed_type in subscription[get_instrument_type(symbol)]: new_subscription[feed_type].add(symbol) return new_subscription
def main(): f = FeedHandler() f.add_feed( FTX(pairs=ftx_pairs(), channels=[OPEN_INTEREST, LIQUIDATIONS], callbacks={ OPEN_INTEREST: OpenInterestCallback(oi), LIQUIDATIONS: LiquidationCallback(liquidations) })) f.add_feed( BinanceFutures(pairs=binance_futures_pairs(), channels=[OPEN_INTEREST, LIQUIDATIONS], callbacks={ OPEN_INTEREST: OpenInterestCallback(oi), LIQUIDATIONS: LiquidationCallback(liquidations) })) f.add_feed( Deribit(pairs=['BTC-PERPETUAL'], channels=[OPEN_INTEREST, LIQUIDATIONS], callbacks={ OPEN_INTEREST: OpenInterestCallback(oi), LIQUIDATIONS: LiquidationCallback(liquidations) })) f.run()
def main(): f = FeedHandler() f.add_feed( FTX(symbols=FTX.info()['symbols'], channels=[OPEN_INTEREST, LIQUIDATIONS], callbacks={ OPEN_INTEREST: OpenInterestCallback(oi), LIQUIDATIONS: LiquidationCallback(liquidations) })) symbols = [ s for s in BinanceFutures.info()['symbols'] if 'PINDEX' not in s ] f.add_feed( BinanceFutures(symbols=symbols, channels=[OPEN_INTEREST, LIQUIDATIONS], callbacks={ OPEN_INTEREST: OpenInterestCallback(oi), LIQUIDATIONS: LiquidationCallback(liquidations) })) f.add_feed( Deribit(symbols=['BTC-USD-PERPETUAL', 'ETH-USD-PERPETUAL'], channels=[LIQUIDATIONS, OPEN_INTEREST], callbacks={ OPEN_INTEREST: OpenInterestCallback(oi), LIQUIDATIONS: LiquidationCallback(liquidations) })) f.run()
def main(): try: # p = Process(target=receiver, args=(5678,)) # p.start() f = FeedHandler(config="config.yaml") all_subscription = get_new_subscription() for key, value in other_subscription.items(): all_subscription[key].update(value) print(all_subscription) deribit = Deribit(config="config.yaml", max_depth=1, subscription=all_subscription, callbacks=callbacks) f.add_feed(deribit) # f.add_feed(Deribit(max_depth=1, channels=[L2_BOOK], symbols=['BTC-PERPETUAL'], callbacks={L2_BOOK: BookZMQ(port=5678)})) # f.add_feed(Coinbase(channels=[TICKER], symbols=['BTC-USD'], callbacks={TICKER: TickerZMQ(port=5678)})) f.run(start_loop=True, tasks=[ do_periodically_at( 8, 1, 1, functools.partial(subscribe_to_new_subscription, deribit)) ]) finally: p.terminate()
def main(): f = FeedHandler() deribit_ex = Deribit(['BTC-PERPETUAL', 'ETH-PERPETUAL']) instruments = deribit_ex.get_instruments() timestamps = [get_expiry_date_of_instrument(x) for x in instruments] timestamps = [x for x in timestamps if x != None] timestamps_set_list = list(set(timestamps)) timestamps_set_list.sort() result = list(zip(instruments, timestamps)) result = [x for x in result if not x[1] == None] result = sorted(result, key=operator.itemgetter(1)) first_timestamp = result[0][1] result_latest_3 = [x for x in result if x[1] in timestamps_set_list[0:3]] instruments_lastest_3 = [x[0] for x in result_latest_3] # timestamps = [x[1] for x in result] # Deribit can't handle 400+ simultaneous requests, so if all # instruments are needed they should be fed in the different calls # config = {TRADES: ["BTC-PERPETUAL"], TICKER: ['ETH-PERPETUAL'], FUNDING: ['ETH-PERPETUAL'], OPEN_INTEREST: ['ETH-PERPETUAL']} # f.add_feed(Deribit(config=config, callbacks={OPEN_INTEREST: oi, FUNDING: funding, TICKER: TickerCallback(ticker), TRADES: TradeCallback(trade)})) # f.add_feed(Deribit(pairs=['BTC-PERPETUAL'], channels=[L2_BOOK], callbacks={L2_BOOK: BookCallback(book)})) # f.add_feed(Deribit(pairs=['BTC-PERPETUAL', 'BTC-27DEC20-26500-C'], channels=[TICKER], callbacks={TICKER: TickerCallback(ticker)})) f.add_feed( Deribit(pairs=['BTC-PERPETUAL', 'ETH-PERPETUAL'], channels=[TRADES], callbacks={TRADES: TradeCallback(trade)})) # f.add_feed(Deribit(pairs=['BTC-28DEC20-26500-C'], channels=[L2_BOOK], callbacks={L2_BOOK: BookCallback(book)} )) f.add_feed( Deribit(pairs=instruments_lastest_3, channels=[L2_BOOK], callbacks={L2_BOOK: BookCallback(book)})) f.run()
def main(): f = FeedHandler(config="config.yaml") all_subscription = get_new_subscription() for key, value in other_subscription.items(): all_subscription[key].update(value) print(all_subscription) deribit = Deribit(config="config.yaml", max_depth=1, subscription=all_subscription, callbacks=callbacks) f.add_feed(deribit) f.run(start_loop=True, tasks=[ do_periodically_at( 8, 1, 1, functools.partial(subscribe_to_new_subscription, deribit)) ])
def main(): config = Config( config={'log': { 'filename': 'ingester.log', 'level': 'DEBUG' }}) get_logger('ingester', config.log.filename, config.log.level) f = FeedHandler(config=config) callbacks = { TICKER: DeribitTickerPostgres(**postgres_cfg, cache_size=1000), TRADES: DeribitTradePostgres(**postgres_cfg), L2_BOOK: DeribitBookPostgres(**postgres_cfg, cache_size=1000) } deribit = Deribit(max_depth=2, subscription=get_new_subscription(), callbacks=callbacks) f.add_feed(deribit) f.run(start_loop=True, tasks=[ do_periodically_at( 8, 1, 1, functools.partial(subscribe_to_new_subscription, deribit)) ])
''' Copyright (C) 2017-2022 Bryant Moscon - [email protected] Please see the LICENSE file for the terms and conditions associated with this software. ''' import asyncio from cryptofeed.defines import ASK, BID from datetime import datetime as dt, timedelta from decimal import Decimal from cryptofeed.exchanges import Deribit d = Deribit() def teardown_module(module): try: loop = asyncio.get_running_loop() except RuntimeError: loop = asyncio.new_event_loop() loop.run_until_complete(d.shutdown()) class TestDeribitRest: def test_trade(self): ret = [] for data in d.trades_sync('BTC-USD-PERP'): ret.extend(data) assert len(ret) > 1