Example #1
0
def run_livefeed(file: str, bar_type: str, threshold: int, exchange_name: str,
                 pair: str) -> None:
    hub = Hub()
    bar_generator = new_bar_generator(bar_type, hub, threshold)
    filename = 'output-live.csv'
    bar_writer = CSVBarWriter(hub, filename, dump_wait=False)
    broker = BacktestBroker(hub)
    strategy = read_and_run_strategy_file(file)(hub, broker)
    exchange = getattr(exchanges, exchange_name)
    trade_processor = FeedProcessor(hub, exchange, pair)
    trade_processor.run()
Example #2
0
def test_mullti_strategy_on_new_bar_is_called():
    hub = Hub()
    publisher = Publisher(hub, 'test-publisher')
    trade = Trade(12345, price=1.0, amount=1.0)
    bar = Bar(trade)
    exchange = 'test'
    market = Markets.BTCEUR
    broker = BacktestBroker(hub)
    strat = NewBarTestMultiStrategy(hub, broker)
    publisher.publish([f'{exchange}-{market}', 'new-bar'], bar)
    assert strat.on_new_bar_called
Example #3
0
def test_multi_strategy_stores_bars():
    hub = Hub()
    publisher = Publisher(hub, 'test-publisher')
    bars = [1, 2, 3]
    exchange = 'test'
    market = Markets.BTCUSD
    broker = BacktestBroker(hub)
    strat = NewBarTestMultiStrategy(hub, broker)
    [
        publisher.publish([f'{exchange}-{market}', 'new-bar'], bar)
        for bar in bars
    ]
    assert strat.bars['test-BTCUSD'] == bars
Example #4
0
def test_tick_bar_generation_after_threshold():
    hub = Hub()
    publisher = Publisher(hub, 'test-publisher')
    generator = TickBarGenerator(hub, threshold=3)
    subscriber = Subscriber(hub, 'test-subscriber')
    bars = []
    def new_bar_handler(key, bar):
        bars.append(bar)
    subscriber.add_sync_listener(events.AnyNewBar, new_bar_handler)
    assert len(bars) == 0
    for i in range(5):
        trade = Trade(12345, price=1.0, amount=1.0)
        publisher.publish(['test-BTCUSD', 'new-trade'], trade)
    assert len(bars) == 1
Example #5
0
def hub() -> Hub:
    return Hub()
def hub():
    return Hub()