Use new ledger pps but cross-ref with what ib says
parent
b629ce177d
commit
ce1eb11b59
|
@ -48,6 +48,7 @@ from ib_insync.objects import Position
|
||||||
import pendulum
|
import pendulum
|
||||||
|
|
||||||
from piker import config
|
from piker import config
|
||||||
|
from piker.pp import update_pps_conf
|
||||||
from piker.pp import TradeRecord
|
from piker.pp import TradeRecord
|
||||||
from piker.log import get_console_log
|
from piker.log import get_console_log
|
||||||
from piker.clearing._messages import (
|
from piker.clearing._messages import (
|
||||||
|
@ -310,17 +311,17 @@ async def trades_dialogue(
|
||||||
assert account in accounts_def
|
assert account in accounts_def
|
||||||
accounts.add(account)
|
accounts.add(account)
|
||||||
|
|
||||||
|
pp_msgs = {}
|
||||||
for client in aioclients.values():
|
for client in aioclients.values():
|
||||||
for pos in client.positions():
|
for pos in client.positions():
|
||||||
|
|
||||||
msg = pack_position(pos)
|
msg = pack_position(pos)
|
||||||
msg.account = accounts_def.inverse[msg.account]
|
msg.account = accounts_def.inverse[msg.account]
|
||||||
|
pp_msgs[msg.symbol] = msg
|
||||||
|
|
||||||
assert msg.account in accounts, (
|
assert msg.account in accounts, (
|
||||||
f'Position for unknown account: {msg.account}')
|
f'Position for unknown account: {msg.account}')
|
||||||
|
|
||||||
all_positions.append(msg.dict())
|
|
||||||
|
|
||||||
trades_by_account: dict = {}
|
trades_by_account: dict = {}
|
||||||
conf = get_config()
|
conf = get_config()
|
||||||
for proxy in proxies.values():
|
for proxy in proxies.values():
|
||||||
|
@ -335,6 +336,33 @@ async def trades_dialogue(
|
||||||
with config.open_trade_ledger('ib', acctid) as ledger:
|
with config.open_trade_ledger('ib', acctid) as ledger:
|
||||||
ledger.update(trades_by_id)
|
ledger.update(trades_by_id)
|
||||||
|
|
||||||
|
records = norm_trade_records(trades_by_id)
|
||||||
|
active = update_pps_conf('ib', acctid, records)
|
||||||
|
for fqsn, pp in active.items():
|
||||||
|
|
||||||
|
ibppmsg = pp_msgs[fqsn.rstrip('.ib')]
|
||||||
|
msg = BrokerdPosition(
|
||||||
|
broker='ib',
|
||||||
|
# account=acctid + '.ib',
|
||||||
|
account=ibppmsg.account,
|
||||||
|
# XXX: the `.ib` is stripped..?
|
||||||
|
symbol=ibppmsg.symbol,
|
||||||
|
currency=ibppmsg.currency,
|
||||||
|
size=pp['size'],
|
||||||
|
avg_price=pp['avg_price'],
|
||||||
|
)
|
||||||
|
assert ibppmsg.size == msg.size
|
||||||
|
if ibppmsg.avg_price != msg.avg_price:
|
||||||
|
# TODO: make this a "propoganda" log level?
|
||||||
|
log.warning(
|
||||||
|
'The mega-cucks at IB want you to believe with their '
|
||||||
|
'"FIFO" positioning the following:\n'
|
||||||
|
f'"ib" mega-cucker avg price: {ibppmsg.avg_price}\n'
|
||||||
|
f'piker, legitamous-ness, LIFO avg price: {msg.avg_price}'
|
||||||
|
)
|
||||||
|
|
||||||
|
all_positions.append(msg.dict())
|
||||||
|
|
||||||
# log.info(f'Loaded {len(trades)} from this session')
|
# log.info(f'Loaded {len(trades)} from this session')
|
||||||
# TODO: write trades to local ``trades.toml``
|
# TODO: write trades to local ``trades.toml``
|
||||||
# - use above per-session trades data and write to local file
|
# - use above per-session trades data and write to local file
|
||||||
|
|
Loading…
Reference in New Issue