Compare commits
4 Commits
ff502b62bf
...
f39b362bc4
| Author | SHA1 | Date |
|---|---|---|
|
|
f39b362bc4 | |
|
|
d2e1d6ce91 | |
|
|
d0966e0363 | |
|
|
4081336bd3 |
|
|
@ -262,7 +262,29 @@ async def open_history_client(
|
||||||
vlm = bars_array['volume']
|
vlm = bars_array['volume']
|
||||||
vlm[vlm < 0] = 0
|
vlm[vlm < 0] = 0
|
||||||
|
|
||||||
return bars_array, first_dt, last_dt
|
# XXX, if a start-limit was passed ensure we only
|
||||||
|
# return history that far back!
|
||||||
|
if (
|
||||||
|
start_dt
|
||||||
|
and
|
||||||
|
last_dt < start_dt
|
||||||
|
):
|
||||||
|
bars_array = bars_array[
|
||||||
|
bars_array['time'] >= start_dt.timestamp()
|
||||||
|
]
|
||||||
|
# TODO! rm this once we're more confident it never hits!
|
||||||
|
breakpoint()
|
||||||
|
raise RuntimeError(
|
||||||
|
f'OHLC-bars array start is gt `start_dt` limit !!\n'
|
||||||
|
f'start_dt: {start_dt}\n'
|
||||||
|
f'last_dt: {last_dt}\n'
|
||||||
|
)
|
||||||
|
|
||||||
|
return (
|
||||||
|
bars_array,
|
||||||
|
first_dt,
|
||||||
|
last_dt,
|
||||||
|
)
|
||||||
|
|
||||||
# TODO: it seems like we can do async queries for ohlc
|
# TODO: it seems like we can do async queries for ohlc
|
||||||
# but getting the order right still isn't working and I'm not
|
# but getting the order right still isn't working and I'm not
|
||||||
|
|
@ -451,6 +473,8 @@ async def get_bars(
|
||||||
dt_duration,
|
dt_duration,
|
||||||
) = await proxy.bars(
|
) = await proxy.bars(
|
||||||
fqme=fqme,
|
fqme=fqme,
|
||||||
|
# XXX TODO! lol we're not using this..
|
||||||
|
# start_dt=start_dt,
|
||||||
end_dt=end_dt,
|
end_dt=end_dt,
|
||||||
sample_period_s=timeframe,
|
sample_period_s=timeframe,
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -275,6 +275,10 @@ def get_null_segs(
|
||||||
# diff of abs index steps between each zeroed row
|
# diff of abs index steps between each zeroed row
|
||||||
absi_zdiff: np.ndarray = np.diff(absi_zeros)
|
absi_zdiff: np.ndarray = np.diff(absi_zeros)
|
||||||
|
|
||||||
|
if zero_t.size < 2:
|
||||||
|
breakpoint()
|
||||||
|
return None
|
||||||
|
|
||||||
# scan for all frame-indices where the
|
# scan for all frame-indices where the
|
||||||
# zeroed-row-abs-index-step-diff is greater then the
|
# zeroed-row-abs-index-step-diff is greater then the
|
||||||
# expected increment of 1.
|
# expected increment of 1.
|
||||||
|
|
@ -487,7 +491,8 @@ def iter_null_segs(
|
||||||
start_dt = None
|
start_dt = None
|
||||||
if (
|
if (
|
||||||
absi_start is not None
|
absi_start is not None
|
||||||
and start_t != 0
|
and
|
||||||
|
start_t != 0
|
||||||
):
|
):
|
||||||
fi_start: int = absi_start - absi_first
|
fi_start: int = absi_start - absi_first
|
||||||
start_row: Seq = frame[fi_start]
|
start_row: Seq = frame[fi_start]
|
||||||
|
|
@ -501,8 +506,8 @@ def iter_null_segs(
|
||||||
yield (
|
yield (
|
||||||
absi_start, absi_end, # abs indices
|
absi_start, absi_end, # abs indices
|
||||||
fi_start, fi_end, # relative "frame" indices
|
fi_start, fi_end, # relative "frame" indices
|
||||||
start_t, end_t,
|
start_t, end_t, # epoch times
|
||||||
start_dt, end_dt,
|
start_dt, end_dt, # dts
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -121,21 +121,24 @@ async def markup_gaps(
|
||||||
# iend += margin
|
# iend += margin
|
||||||
# istart -= margin
|
# istart -= margin
|
||||||
|
|
||||||
rect_gap: float = BGM*3/8
|
|
||||||
opn: float = row['open'][0]
|
opn: float = row['open'][0]
|
||||||
cls: float = prev_r['close'][0]
|
cls: float = prev_r['close'][0]
|
||||||
ro: tuple[float, float] = (
|
|
||||||
iend + rect_gap + 1,
|
# BGM=0.16 is the normal diff from overlap between bars, SO
|
||||||
opn,
|
# just go slightly "in" from that "between them".
|
||||||
)
|
from_idx: int = BGM - .06 # = .10
|
||||||
|
|
||||||
lc: tuple[float, float] = (
|
lc: tuple[float, float] = (
|
||||||
istart - rect_gap, # + 1 ,
|
istart + 1 - from_idx,
|
||||||
cls,
|
cls,
|
||||||
)
|
)
|
||||||
|
ro: tuple[float, float] = (
|
||||||
|
iend + from_idx,
|
||||||
|
opn,
|
||||||
|
)
|
||||||
|
|
||||||
diff: float = cls - opn
|
diff: float = cls - opn
|
||||||
sgn: float = copysign(1, diff)
|
sgn: float = copysign(1, diff)
|
||||||
|
|
||||||
color: str = 'dad_blue'
|
color: str = 'dad_blue'
|
||||||
# TODO? mks more sense to have up/down coloring?
|
# TODO? mks more sense to have up/down coloring?
|
||||||
# color: str = {
|
# color: str = {
|
||||||
|
|
|
||||||
|
|
@ -242,6 +242,13 @@ async def maybe_fill_null_segments(
|
||||||
end_dt=end_dt,
|
end_dt=end_dt,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if (
|
||||||
|
from_timestamp(
|
||||||
|
array['time'][0]
|
||||||
|
) < backfill_until_dt
|
||||||
|
):
|
||||||
|
await tractor.pause()
|
||||||
|
|
||||||
# XXX TODO: pretty sure if i plot tsla, btcusdt.binance
|
# XXX TODO: pretty sure if i plot tsla, btcusdt.binance
|
||||||
# and mnq.cme.ib this causes a Qt crash XXDDD
|
# and mnq.cme.ib this causes a Qt crash XXDDD
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -308,6 +308,7 @@ def hcolor(name: str) -> str:
|
||||||
'cool_green': '#33b864',
|
'cool_green': '#33b864',
|
||||||
'dull_green': '#74a662',
|
'dull_green': '#74a662',
|
||||||
'hedge_green': '#518360',
|
'hedge_green': '#518360',
|
||||||
|
'lilypad_green': '#839c84',
|
||||||
|
|
||||||
# orders and alerts
|
# orders and alerts
|
||||||
'alert_yellow': '#e2d083',
|
'alert_yellow': '#e2d083',
|
||||||
|
|
@ -335,6 +336,7 @@ def hcolor(name: str) -> str:
|
||||||
'sell_red': '#b6003f',
|
'sell_red': '#b6003f',
|
||||||
# 'sell_red': '#d00048',
|
# 'sell_red': '#d00048',
|
||||||
'sell_red_light': '#f85462',
|
'sell_red_light': '#f85462',
|
||||||
|
'wine': '#69212d',
|
||||||
|
|
||||||
# 'sell_red': '#f85462',
|
# 'sell_red': '#f85462',
|
||||||
# 'sell_red_light': '#ff4d5c',
|
# 'sell_red_light': '#ff4d5c',
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue