Start testing out trionics helpers, put vlm before rsi
parent
4812cce8cf
commit
3a3be89bd2
|
@ -37,7 +37,7 @@ import trio
|
||||||
from .. import brokers
|
from .. import brokers
|
||||||
from .._cacheables import maybe_open_ctx
|
from .._cacheables import maybe_open_ctx
|
||||||
from ..trionics import async_enter_all
|
from ..trionics import async_enter_all
|
||||||
from ..data.feed import open_feed
|
from ..data.feed import open_feed, Feed
|
||||||
from ._chart import (
|
from ._chart import (
|
||||||
ChartPlotWidget,
|
ChartPlotWidget,
|
||||||
LinkedSplits,
|
LinkedSplits,
|
||||||
|
@ -533,33 +533,19 @@ async def open_fsp_cluster(
|
||||||
|
|
||||||
) -> AsyncGenerator[int, dict[str, tractor.Portal]]:
|
) -> AsyncGenerator[int, dict[str, tractor.Portal]]:
|
||||||
|
|
||||||
|
from tractor._clustering import open_actor_cluster
|
||||||
|
|
||||||
profiler = pg.debug.Profiler(
|
profiler = pg.debug.Profiler(
|
||||||
delayed=False,
|
delayed=False,
|
||||||
disabled=False
|
disabled=False
|
||||||
)
|
)
|
||||||
portals: dict[str, tractor.Portal] = {}
|
async with open_actor_cluster(
|
||||||
uid = tractor.current_actor().uid
|
count=2,
|
||||||
|
names=['fsp_0', 'fsp_1'],
|
||||||
async with tractor.open_nursery() as an:
|
modules=['piker.fsp._engine'],
|
||||||
# XXX: fsp may have been opened by a duplicate chart.
|
) as cluster_map:
|
||||||
# Error for now until we figure out how to wrap fsps as
|
|
||||||
# "feeds". assert opened, f"A chart for {key} likely
|
|
||||||
# already exists?"
|
|
||||||
async with trio.open_nursery() as n:
|
|
||||||
for index in range(workers):
|
|
||||||
|
|
||||||
async def start(i) -> None:
|
|
||||||
key = f'fsp_{i}.' + '_'.join(uid)
|
|
||||||
portals[key] = await an.start_actor(
|
|
||||||
enable_modules=['piker.fsp._engine'],
|
|
||||||
name=key,
|
|
||||||
)
|
|
||||||
|
|
||||||
n.start_soon(start, index)
|
|
||||||
|
|
||||||
assert len(portals) == workers
|
|
||||||
profiler('started fsp cluster')
|
profiler('started fsp cluster')
|
||||||
yield portals
|
yield cluster_map
|
||||||
|
|
||||||
|
|
||||||
@acm
|
@acm
|
||||||
|
@ -827,11 +813,17 @@ async def update_chart_from_fsp(
|
||||||
last = time.time()
|
last = time.time()
|
||||||
|
|
||||||
|
|
||||||
async def check_for_new_bars(feed, ohlcv, linkedsplits):
|
async def check_for_new_bars(
|
||||||
"""Task which updates from new bars in the shared ohlcv buffer every
|
feed: Feed,
|
||||||
|
ohlcv: np.ndarray,
|
||||||
|
linkedsplits: LinkedSplits,
|
||||||
|
|
||||||
|
) -> None:
|
||||||
|
'''
|
||||||
|
Task which updates from new bars in the shared ohlcv buffer every
|
||||||
``delay_s`` seconds.
|
``delay_s`` seconds.
|
||||||
|
|
||||||
"""
|
'''
|
||||||
# TODO: right now we'll spin printing bars if the last time
|
# TODO: right now we'll spin printing bars if the last time
|
||||||
# stamp is before a large period of no market activity.
|
# stamp is before a large period of no market activity.
|
||||||
# Likely the best way to solve this is to make this task
|
# Likely the best way to solve this is to make this task
|
||||||
|
@ -861,6 +853,7 @@ async def check_for_new_bars(feed, ohlcv, linkedsplits):
|
||||||
# XXX: this puts a flat bar on the current time step
|
# XXX: this puts a flat bar on the current time step
|
||||||
# TODO: if we eventually have an x-axis time-step "cursor"
|
# TODO: if we eventually have an x-axis time-step "cursor"
|
||||||
# we can get rid of this since it is extra overhead.
|
# we can get rid of this since it is extra overhead.
|
||||||
|
|
||||||
price_chart.update_ohlc_from_array(
|
price_chart.update_ohlc_from_array(
|
||||||
price_chart.name,
|
price_chart.name,
|
||||||
ohlcv.array,
|
ohlcv.array,
|
||||||
|
@ -1086,24 +1079,6 @@ async def display_symbol_data(
|
||||||
# TODO: eventually we'll support some kind of n-compose syntax
|
# TODO: eventually we'll support some kind of n-compose syntax
|
||||||
fsp_conf = {
|
fsp_conf = {
|
||||||
|
|
||||||
# 'rsi': {
|
|
||||||
# 'func_name': 'rsi', # literal python func ref lookup name
|
|
||||||
|
|
||||||
# # map of parameters to place on the fsp sidepane widget
|
|
||||||
# # which should map to dynamic inputs available to the
|
|
||||||
# # fsp function at runtime.
|
|
||||||
# 'params': {
|
|
||||||
# 'period': {
|
|
||||||
# 'default_value': 14,
|
|
||||||
# 'widget_kwargs': {'readonly': True},
|
|
||||||
# },
|
|
||||||
# },
|
|
||||||
|
|
||||||
# # ``ChartPlotWidget`` options passthrough
|
|
||||||
# 'chart_kwargs': {
|
|
||||||
# 'static_yrange': (0, 100),
|
|
||||||
# },
|
|
||||||
# },
|
|
||||||
'dolla_vlm': {
|
'dolla_vlm': {
|
||||||
'func_name': 'dolla_vlm',
|
'func_name': 'dolla_vlm',
|
||||||
'zero_on_step': True,
|
'zero_on_step': True,
|
||||||
|
@ -1118,6 +1093,24 @@ async def display_symbol_data(
|
||||||
'chart_kwargs': {'style': 'step'}
|
'chart_kwargs': {'style': 'step'}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
'rsi': {
|
||||||
|
'func_name': 'rsi', # literal python func ref lookup name
|
||||||
|
|
||||||
|
# map of parameters to place on the fsp sidepane widget
|
||||||
|
# which should map to dynamic inputs available to the
|
||||||
|
# fsp function at runtime.
|
||||||
|
'params': {
|
||||||
|
'period': {
|
||||||
|
'default_value': 14,
|
||||||
|
'widget_kwargs': {'readonly': True},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
# ``ChartPlotWidget`` options passthrough
|
||||||
|
'chart_kwargs': {
|
||||||
|
'static_yrange': (0, 100),
|
||||||
|
},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
if has_vlm(ohlcv): # and provider != 'binance':
|
if has_vlm(ohlcv): # and provider != 'binance':
|
||||||
|
@ -1144,7 +1137,7 @@ async def display_symbol_data(
|
||||||
vlm_chart = None
|
vlm_chart = None
|
||||||
async with (
|
async with (
|
||||||
trio.open_nursery() as ln,
|
trio.open_nursery() as ln,
|
||||||
maybe_open_vlm_display(linkedsplits, ohlcv) as vlm_chart,
|
# maybe_open_vlm_display(linkedsplits, ohlcv) as vlm_chart,
|
||||||
):
|
):
|
||||||
# load initial fsp chain (otherwise known as "indicators")
|
# load initial fsp chain (otherwise known as "indicators")
|
||||||
ln.start_soon(
|
ln.start_soon(
|
||||||
|
|
Loading…
Reference in New Issue