Fix `dvlm` to actually yield trade count, add instantaneous support
							parent
							
								
									e7516447df
								
							
						
					
					
						commit
						ee4ad32d3b
					
				|  | @ -180,20 +180,21 @@ async def dolla_vlm( | |||
|             ttype = tick.get('type') | ||||
| 
 | ||||
|             if ttype == 'dark_trade': | ||||
|                 # print(f'dark_trade: {tick}') | ||||
|                 key = 'dark_vlm' | ||||
|                 dvlm += price * size | ||||
|                 yield 'dark_vlm', dvlm | ||||
| 
 | ||||
|                 dark_trade_count += 1 | ||||
|                 yield 'dark_trade_count', dark_trade_count | ||||
| 
 | ||||
|                 # print(f'{dark_trade_count}th dark_trade: {tick}') | ||||
| 
 | ||||
|             else: | ||||
|                 # print(f'vlm: {tick}') | ||||
|                 key = 'dolla_vlm' | ||||
|                 vlm += price * size | ||||
|                 yield 'dolla_vlm', vlm | ||||
| 
 | ||||
|                 trade_count += 1 | ||||
|                 yield 'trade_count', vlm | ||||
|                 yield 'trade_count', trade_count | ||||
| 
 | ||||
|             # TODO: plot both to compare? | ||||
|             # c, h, l, v = ohlcv.last()[ | ||||
|  | @ -279,6 +280,10 @@ async def flow_rates( | |||
|     # on this same source flow. | ||||
|     dvlm_shm = dolla_vlm.get_shm(ohlcv) | ||||
| 
 | ||||
|     # breakpoint() | ||||
|     # import tractor | ||||
|     # await tractor.breakpoint() | ||||
| 
 | ||||
|     # precompute arithmetic mean weights (all ones) | ||||
|     seq = np.full((period,), 1) | ||||
|     weights = seq / seq.sum() | ||||
|  | @ -294,12 +299,18 @@ async def flow_rates( | |||
|             weights=weights, | ||||
|         ) | ||||
|         yield 'dvlm_rate', dvlm_wma[-1] | ||||
|         trade_rate_wma = _wma( | ||||
|             dvlm_shm.array['trade_count'], | ||||
|             period, | ||||
|             weights=weights, | ||||
|         ) | ||||
|         yield 'trade_rate', trade_rate_wma[-1] | ||||
| 
 | ||||
|         if period > 1: | ||||
|             trade_rate_wma = _wma( | ||||
|                 dvlm_shm.array['trade_count'], | ||||
|                 period, | ||||
|                 weights=weights, | ||||
|             ) | ||||
|             yield 'trade_rate', trade_rate_wma[-1] | ||||
|         else: | ||||
|             # instantaneous rate per sample step | ||||
|             count = dvlm_shm.array['trade_count'][-1] | ||||
|             yield 'trade_rate', count | ||||
| 
 | ||||
|         # TODO: skip this if no dark vlm is declared | ||||
|         # by symbol info (eg. in crypto$) | ||||
|  | @ -310,12 +321,17 @@ async def flow_rates( | |||
|         ) | ||||
|         yield 'dark_dvlm_rate', dark_dvlm_wma[-1] | ||||
| 
 | ||||
|         dark_trade_rate_wma = _wma( | ||||
|             dvlm_shm.array['dark_trade_count'], | ||||
|             period, | ||||
|             weights=weights, | ||||
|         ) | ||||
|         yield 'dark_trade_rate', dark_trade_rate_wma[-1] | ||||
|         if period > 1: | ||||
|             dark_trade_rate_wma = _wma( | ||||
|                 dvlm_shm.array['dark_trade_count'], | ||||
|                 period, | ||||
|                 weights=weights, | ||||
|             ) | ||||
|             yield 'dark_trade_rate', dark_trade_rate_wma[-1] | ||||
|         else: | ||||
|             # instantaneous rate per sample step | ||||
|             dark_count = dvlm_shm.array['dark_trade_count'][-1] | ||||
|             yield 'dark_trade_rate', dark_count | ||||
| 
 | ||||
|         # XXX: ib specific schema we should | ||||
|         # probably pre-pack ourselves. | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue