Exemple #1
0
def test_connector_builder_robustness():
    pytest.importorskip("ibapi")
    from algotradepy.connectors.ib_connector import build_and_start_connector

    conn0 = build_and_start_connector()
    conn1 = build_and_start_connector()
    conn2 = build_and_start_connector()

    assert conn0.client_id != conn1.client_id
    assert conn0.client_id != conn2.client_id
    assert conn1.client_id != conn2.client_id

    conn0.managed_disconnect()
    conn1.managed_disconnect()
    conn2.managed_disconnect()
Exemple #2
0
def test_connector_builder_robustness():
    pytest.importorskip("ib_insync")
    from algotradepy.connectors.ib_connector import build_and_start_connector

    conn0 = build_and_start_connector()
    conn1 = build_and_start_connector()
    conn2 = build_and_start_connector()

    assert conn0.isConnected()
    assert conn0.isConnected()
    assert conn1.isConnected()

    conn0.disconnect()
    conn1.disconnect()
    conn2.disconnect()
Exemple #3
0
def test_connection():
    pytest.importorskip("ib_insync")
    from algotradepy.connectors.ib_connector import build_and_start_connector

    connector = build_and_start_connector()

    assert connector.isConnected()
Exemple #4
0
def monitor():
    conn = build_and_start_connector(client_id=0)
    broker = IBBroker(ib_connector=conn)

    broker.subscribe_to_new_orders(func=open_orders_printout)
    broker.subscribe_to_order_updates(func=order_status_printout)

    print(f"exiting with {input('Press Enter to exit.')}")
def get_streamer(client_id: int):
    pytest.importorskip("ib_insync")
    from algotradepy.connectors.ib_connector import build_and_start_connector
    from algotradepy.streamers.ib_streamer import IBDataStreamer

    conn = build_and_start_connector(client_id=client_id)
    streamer = IBDataStreamer(ib_connector=conn)

    return streamer
Exemple #6
0
def connector():
    pytest.importorskip("ib_insync")
    from algotradepy.connectors.ib_connector import build_and_start_connector

    conn = build_and_start_connector()

    yield conn

    conn.disconnect()
 def __init__(
     self,
     simulation: bool = True,
     ib_connector: Optional[IBConnector] = None,
 ):
     if ib_connector is None:
         if simulation:
             trading_mode = "paper"
         else:
             trading_mode = "live"
         self._ib_conn = build_and_start_connector(
             trading_mode=trading_mode
         )
     else:
         self._ib_conn = ib_connector
Exemple #8
0
def test_get_position_non_master_id_raises():
    pytest.importorskip("ibapi")
    from algotradepy.connectors.ib_connector import (
        build_and_start_connector,
        MASTER_CLIENT_ID,
    )
    from algotradepy.brokers.ib_broker import IBBroker

    conn = build_and_start_connector(client_id=MASTER_CLIENT_ID + 1)
    broker = IBBroker(ib_connector=conn)

    with pytest.raises(AttributeError):
        broker.get_position(symbol="SPY")

    conn.managed_disconnect()
Exemple #9
0
def test_ib_insync_events():
    pytest.importorskip("ib_insync")
    from algotradepy.connectors.ib_connector import build_and_start_connector

    event_received = False

    def event_callback():
        nonlocal event_received

        event_received = True

    conn = build_and_start_connector()
    conn.disconnectedEvent += event_callback
    conn.disconnect()

    assert event_received
Exemple #10
0
def test_get_zero_position():
    pytest.importorskip("ibapi")
    from algotradepy.connectors.ib_connector import (
        build_and_start_connector,
        MASTER_CLIENT_ID,
    )
    from algotradepy.brokers.ib_broker import IBBroker

    conn = build_and_start_connector(client_id=MASTER_CLIENT_ID)
    broker = IBBroker(ib_connector=conn)

    spy_position = broker.get_position(symbol="SPY")

    broker.__del__()

    assert spy_position == 0
Exemple #11
0
 def __init__(
     self,
     simulation: bool = True,
     ib_connector: Optional[IBConnector] = None,
 ):
     super().__init__(simulation=simulation)
     if ib_connector is None:
         if simulation:
             trading_mode = "paper"
         else:
             trading_mode = "live"
         self._ib_conn = build_and_start_connector(
             trading_mode=trading_mode)
     else:
         self._ib_conn = ib_connector
     self._req_id: Optional[int] = None
     self._positions: Optional[Dict] = None
     self._positions_lock = Lock()