idea105-deltatrace/tests/test_adapters.py

29 lines
1.1 KiB
Python

from deltatrace.adapters import FIXFeedAdapter, SandboxExchangeAdapter
from deltatrace.event_graph import EventType
def test_fix_adapter_parses_tick_and_order_and_fill():
fix = FIXFeedAdapter()
msg = {"35": "W", "55": "SYM", "bid": "10", "ask": "11", "44": "10.5", "38": "100"}
events = fix.ingest(msg)
assert any(e.event_type == EventType.MD_TICK for e in events)
o = {"35": "D", "55": "SYM", "54": "1", "44": "10.5", "38": "50"}
events = fix.ingest(o)
assert any(e.event_type == EventType.ORDER for e in events)
er = {"35": "8", "55": "SYM", "54": "1", "44": "10.5", "38": "50", "150": "F"}
events = fix.ingest(er)
assert any(e.event_type == EventType.FILL for e in events)
def test_sandbox_exchange_order_and_ticks():
s = SandboxExchangeAdapter(fill_rate=1.0, latency_ms=0)
ticks = s.generate_ticks("TST", 3)
assert len(ticks) == 3
order_msgs = s.ingest({"type": "order", "symbol": "TST", "qty": 10, "price": 1.0})
assert any(e.event_type.name == "ORDER" for e in order_msgs)
# with fill_rate=1.0 we should also get a fill event
assert any(e.event_type.name == "FILL" for e in order_msgs)