Merge pull request #438 from pikers/msgspec_ordering
Msgspec field orderingdark_clearing_improvements
commit
d84bcf77c0
|
@ -43,6 +43,14 @@ SizeUnit = Enum(
|
|||
class Allocator(Struct):
|
||||
|
||||
symbol: Symbol
|
||||
|
||||
# TODO: if we ever want ot support non-uniform entry-slot-proportion
|
||||
# "sizes"
|
||||
# disti_weight: str = 'uniform'
|
||||
|
||||
units_limit: float
|
||||
currency_limit: float
|
||||
slots: int
|
||||
account: Optional[str] = 'paper'
|
||||
|
||||
_size_units: bidict[str, Optional[str]] = _size_units
|
||||
|
@ -66,14 +74,6 @@ class Allocator(Struct):
|
|||
self._size_unit = v
|
||||
return v
|
||||
|
||||
# TODO: if we ever want ot support non-uniform entry-slot-proportion
|
||||
# "sizes"
|
||||
# disti_weight: str = 'uniform'
|
||||
|
||||
units_limit: float
|
||||
currency_limit: float
|
||||
slots: int
|
||||
|
||||
def step_sizes(
|
||||
self,
|
||||
) -> (float, float):
|
||||
|
|
|
@ -107,9 +107,9 @@ class Cancel(Struct):
|
|||
broker-submitted (live) trigger/order.
|
||||
|
||||
'''
|
||||
action: str = 'cancel'
|
||||
oid: str # uuid4
|
||||
symbol: str
|
||||
action: str = 'cancel'
|
||||
|
||||
|
||||
# --------------
|
||||
|
@ -120,7 +120,6 @@ class Cancel(Struct):
|
|||
|
||||
class Status(Struct):
|
||||
|
||||
name: str = 'status'
|
||||
time_ns: int
|
||||
oid: str # uuid4 ems-order dialog id
|
||||
|
||||
|
@ -135,6 +134,8 @@ class Status(Struct):
|
|||
'error',
|
||||
]
|
||||
|
||||
name: str = 'status'
|
||||
|
||||
# this maps normally to the ``BrokerdOrder.reqid`` below, an id
|
||||
# normally allocated internally by the backend broker routing system
|
||||
reqid: Optional[int | str] = None
|
||||
|
@ -168,7 +169,6 @@ class Status(Struct):
|
|||
|
||||
class BrokerdCancel(Struct):
|
||||
|
||||
action: str = 'cancel'
|
||||
oid: str # piker emsd order id
|
||||
time_ns: int
|
||||
|
||||
|
@ -180,6 +180,7 @@ class BrokerdCancel(Struct):
|
|||
# on the emsd order request stream as the ``BrokerdOrderAck.reqid``
|
||||
# field
|
||||
reqid: Optional[int | str] = None
|
||||
action: str = 'cancel'
|
||||
|
||||
|
||||
class BrokerdOrder(Struct):
|
||||
|
@ -188,6 +189,10 @@ class BrokerdOrder(Struct):
|
|||
account: str
|
||||
time_ns: int
|
||||
|
||||
symbol: str # fqsn
|
||||
price: float
|
||||
size: float
|
||||
|
||||
# TODO: if we instead rely on a +ve/-ve size to determine
|
||||
# the action we more or less don't need this field right?
|
||||
action: str = '' # {buy, sell}
|
||||
|
@ -200,10 +205,6 @@ class BrokerdOrder(Struct):
|
|||
# field
|
||||
reqid: Optional[int | str] = None
|
||||
|
||||
symbol: str # fqsn
|
||||
price: float
|
||||
size: float
|
||||
|
||||
|
||||
# ---------------
|
||||
# emsd <- brokerd
|
||||
|
@ -218,7 +219,6 @@ class BrokerdOrderAck(Struct):
|
|||
``.oid`` (which is a uuid4).
|
||||
|
||||
'''
|
||||
name: str = 'ack'
|
||||
|
||||
# defined and provided by backend
|
||||
reqid: int | str
|
||||
|
@ -226,11 +226,11 @@ class BrokerdOrderAck(Struct):
|
|||
# emsd id originally sent in matching request msg
|
||||
oid: str
|
||||
account: str = ''
|
||||
name: str = 'ack'
|
||||
|
||||
|
||||
class BrokerdStatus(Struct):
|
||||
|
||||
name: str = 'status'
|
||||
reqid: int | str
|
||||
time_ns: int
|
||||
status: Literal[
|
||||
|
@ -242,6 +242,7 @@ class BrokerdStatus(Struct):
|
|||
]
|
||||
|
||||
account: str
|
||||
name: str = 'status'
|
||||
filled: float = 0.0
|
||||
reason: str = ''
|
||||
remaining: float = 0.0
|
||||
|
@ -260,7 +261,11 @@ class BrokerdFill(Struct):
|
|||
if avaiable.
|
||||
|
||||
'''
|
||||
name: str = 'fill'
|
||||
# brokerd timestamp required for order mode arrow placement on x-axis
|
||||
# TODO: maybe int if we force ns?
|
||||
# we need to normalize this somehow since backends will use their
|
||||
# own format and likely across many disparate epoch clocks...
|
||||
broker_time: float
|
||||
reqid: int | str
|
||||
time_ns: int
|
||||
|
||||
|
@ -268,16 +273,10 @@ class BrokerdFill(Struct):
|
|||
size: float
|
||||
price: float
|
||||
|
||||
name: str = 'fill'
|
||||
action: Optional[str] = None
|
||||
broker_details: dict = {} # meta-data (eg. commisions etc.)
|
||||
|
||||
# brokerd timestamp required for order mode arrow placement on x-axis
|
||||
|
||||
# TODO: maybe int if we force ns?
|
||||
# we need to normalize this somehow since backends will use their
|
||||
# own format and likely across many disparate epoch clocks...
|
||||
broker_time: float
|
||||
|
||||
|
||||
class BrokerdError(Struct):
|
||||
'''
|
||||
|
@ -286,15 +285,15 @@ class BrokerdError(Struct):
|
|||
This is still a TODO thing since we're not sure how to employ it yet.
|
||||
|
||||
'''
|
||||
name: str = 'error'
|
||||
oid: str
|
||||
symbol: str
|
||||
reason: str
|
||||
|
||||
# if no brokerd order request was actually submitted (eg. we errored
|
||||
# at the ``pikerd`` layer) then there will be ``reqid`` allocated.
|
||||
reqid: Optional[int | str] = None
|
||||
|
||||
symbol: str
|
||||
reason: str
|
||||
name: str = 'error'
|
||||
broker_details: dict = {}
|
||||
|
||||
|
||||
|
@ -302,7 +301,6 @@ class BrokerdPosition(Struct):
|
|||
'''Position update event from brokerd.
|
||||
|
||||
'''
|
||||
name: str = 'position'
|
||||
|
||||
broker: str
|
||||
account: str
|
||||
|
@ -310,3 +308,4 @@ class BrokerdPosition(Struct):
|
|||
size: float
|
||||
avg_price: float
|
||||
currency: str = ''
|
||||
name: str = 'position'
|
||||
|
|
|
@ -165,8 +165,8 @@ over a NoBsWs.
|
|||
|
||||
|
||||
class JSONRPCResult(Struct):
|
||||
jsonrpc: str = '2.0'
|
||||
id: int
|
||||
jsonrpc: str = '2.0'
|
||||
result: Optional[dict] = None
|
||||
error: Optional[dict] = None
|
||||
|
||||
|
|
|
@ -338,6 +338,7 @@ class Flow(msgspec.Struct): # , frozen=True):
|
|||
name: str
|
||||
plot: pg.PlotItem
|
||||
graphics: Union[Curve, BarItems]
|
||||
_shm: ShmArray
|
||||
yrange: tuple[float, float] = None
|
||||
|
||||
# in some cases a flow may want to change its
|
||||
|
@ -345,7 +346,6 @@ class Flow(msgspec.Struct): # , frozen=True):
|
|||
# normally this is just a plain line.
|
||||
ds_graphics: Optional[Curve] = None
|
||||
|
||||
_shm: ShmArray
|
||||
|
||||
is_ohlc: bool = False
|
||||
render: bool = True # toggle for display loop
|
||||
|
|
Loading…
Reference in New Issue