Yield history `dict`s, add a `flow_rates` fsp
parent
1aae40cdeb
commit
dfe4473c9a
|
@ -108,7 +108,6 @@ async def tina_vwap(
|
|||
|
||||
@fsp(
|
||||
outputs=('dolla_vlm', 'dark_vlm'),
|
||||
ohlc=False,
|
||||
curve_style='step',
|
||||
)
|
||||
async def dolla_vlm(
|
||||
|
@ -132,14 +131,24 @@ async def dolla_vlm(
|
|||
v = a['volume']
|
||||
|
||||
# on first iteration yield history
|
||||
yield chl3 * v
|
||||
yield {
|
||||
'dolla_vlm': chl3 * v,
|
||||
'dark_vlm': None,
|
||||
}
|
||||
|
||||
i = ohlcv.index
|
||||
output = vlm = 0
|
||||
dvlm = 0
|
||||
|
||||
async for quote in source:
|
||||
for tick in iterticks(quote):
|
||||
for tick in iterticks(
|
||||
quote,
|
||||
types=(
|
||||
'trade',
|
||||
'dark_trade',
|
||||
),
|
||||
deduplicate_darks=True,
|
||||
):
|
||||
|
||||
# this computes tick-by-tick weightings from here forward
|
||||
size = tick['size']
|
||||
|
@ -156,13 +165,15 @@ async def dolla_vlm(
|
|||
# is reported in the sym info.
|
||||
|
||||
ttype = tick.get('type')
|
||||
|
||||
if ttype == 'dark_trade':
|
||||
print(f'dark_trade: {tick}')
|
||||
# print(f'dark_trade: {tick}')
|
||||
key = 'dark_vlm'
|
||||
dvlm += price * size
|
||||
output = dvlm
|
||||
|
||||
else:
|
||||
# print(f'vlm: {tick}')
|
||||
key = 'dolla_vlm'
|
||||
vlm += price * size
|
||||
output = vlm
|
||||
|
@ -175,3 +186,41 @@ async def dolla_vlm(
|
|||
# print(f' tinal vlm: {tina_lvlm}')
|
||||
|
||||
yield key, output
|
||||
|
||||
|
||||
@fsp(
|
||||
outputs=(
|
||||
'1m_trade_rate',
|
||||
'1m_vlm_rate',
|
||||
),
|
||||
curve_style='step',
|
||||
)
|
||||
async def flow_rates(
|
||||
source: AsyncReceiver[dict],
|
||||
ohlcv: ShmArray, # OHLC sampled history
|
||||
|
||||
) -> AsyncIterator[
|
||||
tuple[str, Union[np.ndarray, float]],
|
||||
]:
|
||||
# generally no history available prior to real-time calcs
|
||||
yield {
|
||||
'1m_trade_rate': None,
|
||||
'1m_vlm_rate': None,
|
||||
}
|
||||
|
||||
ltr = 0
|
||||
lvr = 0
|
||||
async for quote in source:
|
||||
if quote:
|
||||
|
||||
tr = quote['tradeRate'],
|
||||
if tr != ltr:
|
||||
print(f'trade rate: {tr}')
|
||||
yield '1m_trade_rate', tr
|
||||
ltr = tr
|
||||
|
||||
vr = quote['volumeRate'],
|
||||
if vr != lvr:
|
||||
print(f'vlm rate: {tr}')
|
||||
yield '1m_vlm_rate', tr
|
||||
ltr = tr
|
||||
|
|
Loading…
Reference in New Issue