Start drafting out alloctor settings per asset type
parent
be956c4031
commit
17fbe6a6ab
|
@ -88,6 +88,7 @@ class OrderMode:
|
||||||
multistatus: MultiStatus
|
multistatus: MultiStatus
|
||||||
pp: PositionTracker
|
pp: PositionTracker
|
||||||
allocator: 'Allocator' # noqa
|
allocator: 'Allocator' # noqa
|
||||||
|
active: bool = False
|
||||||
|
|
||||||
name: str = 'order'
|
name: str = 'order'
|
||||||
dialogs: dict[str, OrderDialog] = field(default_factory=dict)
|
dialogs: dict[str, OrderDialog] = field(default_factory=dict)
|
||||||
|
@ -140,6 +141,7 @@ class OrderMode:
|
||||||
order_info = self.allocator.get_order_info(
|
order_info = self.allocator.get_order_info(
|
||||||
symbol=symbol,
|
symbol=symbol,
|
||||||
price=y,
|
price=y,
|
||||||
|
action=order.action,
|
||||||
)
|
)
|
||||||
line.update_labels(order_info)
|
line.update_labels(order_info)
|
||||||
order.price = y
|
order.price = y
|
||||||
|
@ -501,9 +503,9 @@ async def run_order_mode(
|
||||||
log.info("Opening order mode")
|
log.info("Opening order mode")
|
||||||
|
|
||||||
alloc = chart.linked.godwidget.pp_pane.model
|
alloc = chart.linked.godwidget.pp_pane.model
|
||||||
pp = PositionTracker(chart)
|
pp_tracker = PositionTracker(chart, alloc=alloc)
|
||||||
pp.hide()
|
pp_tracker.hide()
|
||||||
alloc._position = pp
|
alloc._position = pp_tracker
|
||||||
|
|
||||||
mode = OrderMode(
|
mode = OrderMode(
|
||||||
chart,
|
chart,
|
||||||
|
@ -511,33 +513,45 @@ async def run_order_mode(
|
||||||
lines,
|
lines,
|
||||||
arrows,
|
arrows,
|
||||||
multistatus,
|
multistatus,
|
||||||
pp,
|
pp_tracker,
|
||||||
allocator=alloc,
|
allocator=alloc,
|
||||||
)
|
)
|
||||||
|
|
||||||
# TODO: create a mode "manager" of sorts?
|
# TODO: create a mode "manager" of sorts?
|
||||||
# -> probably just call it "UxModes" err sumthin?
|
# -> probably just call it "UxModes" err sumthin?
|
||||||
# so that view handlers can access it
|
# so that view handlers can access it
|
||||||
view.mode = mode
|
view.order_mode = mode
|
||||||
|
|
||||||
asset_type = symbol.type_key
|
asset_type = symbol.type_key
|
||||||
|
|
||||||
# default entry sizing
|
|
||||||
if asset_type == 'stock':
|
|
||||||
mode._size = 100.0
|
|
||||||
|
|
||||||
elif asset_type in ('future', 'option', 'futures_option'):
|
|
||||||
mode._size = 1.0
|
|
||||||
|
|
||||||
else: # to be safe
|
|
||||||
mode._size = 1.0
|
|
||||||
|
|
||||||
# update any exising position
|
# update any exising position
|
||||||
for sym, msg in positions.items():
|
for sym, msg in positions.items():
|
||||||
|
|
||||||
our_sym = mode.chart.linked._symbol.key
|
our_sym = mode.chart.linked._symbol.key
|
||||||
if sym.lower() in our_sym:
|
if sym.lower() in our_sym:
|
||||||
pp.update(msg)
|
pp_tracker.update(msg, position=pp_tracker.startup_pp)
|
||||||
|
pp_tracker.update(msg)
|
||||||
|
|
||||||
|
|
||||||
|
# default entry sizing
|
||||||
|
if asset_type in ('stock', 'crypto', 'forex'):
|
||||||
|
alloc.size_unit = '$ size'
|
||||||
|
pp_tracker.pane.fields['size_unit'].setCurrentText(alloc.size_unit)
|
||||||
|
|
||||||
|
elif asset_type in ('future', 'option', 'futures_option'):
|
||||||
|
|
||||||
|
alloc.size_unit = '# units'
|
||||||
|
pp_tracker.pane.fields['size_unit'].setCurrentText(alloc.size_unit)
|
||||||
|
|
||||||
|
slots = alloc.slots = pp_tracker.startup_pp.size
|
||||||
|
pp_tracker.pane.fields['slots'].setText(str(alloc.slots))
|
||||||
|
|
||||||
|
# make entry step 1.0
|
||||||
|
alloc.size = slots
|
||||||
|
pp_tracker.pane.fields['size'].setText(str(alloc.size))
|
||||||
|
|
||||||
|
# make fill bar and positioning snapshot
|
||||||
|
pp_tracker.init_status_ui()
|
||||||
|
|
||||||
# TODO: this should go onto some sort of
|
# TODO: this should go onto some sort of
|
||||||
# data-view strimg thinger..right?
|
# data-view strimg thinger..right?
|
||||||
|
@ -584,7 +598,7 @@ async def run_order_mode(
|
||||||
|
|
||||||
sym = mode.chart.linked.symbol
|
sym = mode.chart.linked.symbol
|
||||||
if msg['symbol'].lower() in sym.key:
|
if msg['symbol'].lower() in sym.key:
|
||||||
pp.update(msg)
|
pp_tracker.update(msg)
|
||||||
|
|
||||||
# short circuit to next msg to avoid
|
# short circuit to next msg to avoid
|
||||||
# uncessary msg content lookups
|
# uncessary msg content lookups
|
||||||
|
@ -672,4 +686,4 @@ async def run_order_mode(
|
||||||
arrow_index=get_index(details['broker_time']),
|
arrow_index=get_index(details['broker_time']),
|
||||||
)
|
)
|
||||||
|
|
||||||
pp.info.fills.append(msg)
|
pp_tracker.live_pp.fills.append(msg)
|
||||||
|
|
Loading…
Reference in New Issue