Fix clearing endpoint type annots, export `open_ems()`
parent
d9b73e1d08
commit
61e20a86cc
|
@ -18,3 +18,9 @@
|
||||||
Market machinery for order executions, book, management.
|
Market machinery for order executions, book, management.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
from ._client import open_ems
|
||||||
|
|
||||||
|
|
||||||
|
__all__ = [
|
||||||
|
'open_ems',
|
||||||
|
]
|
||||||
|
|
|
@ -18,8 +18,10 @@
|
||||||
Orders and execution client API.
|
Orders and execution client API.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
from __future__ import annotations
|
||||||
from contextlib import asynccontextmanager as acm
|
from contextlib import asynccontextmanager as acm
|
||||||
from pprint import pformat
|
from pprint import pformat
|
||||||
|
from typing import TYPE_CHECKING
|
||||||
|
|
||||||
import trio
|
import trio
|
||||||
import tractor
|
import tractor
|
||||||
|
@ -27,11 +29,16 @@ from tractor.trionics import broadcast_receiver
|
||||||
|
|
||||||
from ..log import get_logger
|
from ..log import get_logger
|
||||||
from ..data.types import Struct
|
from ..data.types import Struct
|
||||||
from ._ems import _emsd_main
|
|
||||||
from .._daemon import maybe_open_emsd
|
from .._daemon import maybe_open_emsd
|
||||||
from ._messages import Order, Cancel
|
from ._messages import Order, Cancel
|
||||||
from ..brokers import get_brokermod
|
from ..brokers import get_brokermod
|
||||||
|
|
||||||
|
if TYPE_CHECKING:
|
||||||
|
from ._messages import (
|
||||||
|
BrokerdPosition,
|
||||||
|
Status,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
log = get_logger(__name__)
|
log = get_logger(__name__)
|
||||||
|
|
||||||
|
@ -167,12 +174,19 @@ async def relay_order_cmds_from_sync_code(
|
||||||
@acm
|
@acm
|
||||||
async def open_ems(
|
async def open_ems(
|
||||||
fqsn: str,
|
fqsn: str,
|
||||||
|
mode: str = 'live',
|
||||||
|
|
||||||
) -> (
|
) -> tuple[
|
||||||
OrderBook,
|
OrderBook,
|
||||||
tractor.MsgStream,
|
tractor.MsgStream,
|
||||||
dict,
|
dict[
|
||||||
):
|
# brokername, acctid
|
||||||
|
tuple[str, str],
|
||||||
|
list[BrokerdPosition],
|
||||||
|
],
|
||||||
|
list[str],
|
||||||
|
dict[str, Status],
|
||||||
|
]:
|
||||||
'''
|
'''
|
||||||
Spawn an EMS daemon and begin sending orders and receiving
|
Spawn an EMS daemon and begin sending orders and receiving
|
||||||
alerts.
|
alerts.
|
||||||
|
@ -213,14 +227,16 @@ async def open_ems(
|
||||||
from ..data._source import unpack_fqsn
|
from ..data._source import unpack_fqsn
|
||||||
broker, symbol, suffix = unpack_fqsn(fqsn)
|
broker, symbol, suffix = unpack_fqsn(fqsn)
|
||||||
|
|
||||||
mode: str = 'live'
|
|
||||||
|
|
||||||
async with maybe_open_emsd(broker) as portal:
|
async with maybe_open_emsd(broker) as portal:
|
||||||
|
|
||||||
mod = get_brokermod(broker)
|
mod = get_brokermod(broker)
|
||||||
if not getattr(mod, 'trades_dialogue', None):
|
if (
|
||||||
|
not getattr(mod, 'trades_dialogue', None)
|
||||||
|
or mode == 'paper'
|
||||||
|
):
|
||||||
mode = 'paper'
|
mode = 'paper'
|
||||||
|
|
||||||
|
from ._ems import _emsd_main
|
||||||
async with (
|
async with (
|
||||||
# connect to emsd
|
# connect to emsd
|
||||||
portal.open_context(
|
portal.open_context(
|
||||||
|
|
|
@ -418,7 +418,7 @@ class Router(Struct):
|
||||||
|
|
||||||
# load the paper trading engine
|
# load the paper trading engine
|
||||||
exec_mode = 'paper'
|
exec_mode = 'paper'
|
||||||
log.warning(f'Entering paper trading mode for {broker}')
|
log.info(f'{broker}: Entering `paper` trading mode')
|
||||||
|
|
||||||
# load the paper trading engine as a subactor of this emsd
|
# load the paper trading engine as a subactor of this emsd
|
||||||
# actor to simulate the real IPC load it'll have when also
|
# actor to simulate the real IPC load it'll have when also
|
||||||
|
@ -1367,7 +1367,15 @@ async def _emsd_main(
|
||||||
exec_mode: str, # ('paper', 'live')
|
exec_mode: str, # ('paper', 'live')
|
||||||
loglevel: str = 'info',
|
loglevel: str = 'info',
|
||||||
|
|
||||||
) -> None:
|
) -> tuple[
|
||||||
|
dict[
|
||||||
|
# brokername, acctid
|
||||||
|
tuple[str, str],
|
||||||
|
list[BrokerdPosition],
|
||||||
|
],
|
||||||
|
list[str],
|
||||||
|
dict[str, Status],
|
||||||
|
]:
|
||||||
'''
|
'''
|
||||||
EMS (sub)actor entrypoint providing the execution management
|
EMS (sub)actor entrypoint providing the execution management
|
||||||
(micro)service which conducts broker order clearing control on
|
(micro)service which conducts broker order clearing control on
|
||||||
|
|
Loading…
Reference in New Issue