29 lines
1.1 KiB
Python
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)
|