Use `IB.fills()` method for `Client.trades()`
parent
5d774bef90
commit
c1b63f4757
|
@ -42,12 +42,17 @@ from bidict import bidict
|
||||||
import trio
|
import trio
|
||||||
import tractor
|
import tractor
|
||||||
from tractor import to_asyncio
|
from tractor import to_asyncio
|
||||||
|
import ib_insync as ibis
|
||||||
from ib_insync.wrapper import RequestError
|
from ib_insync.wrapper import RequestError
|
||||||
from ib_insync.contract import Contract, ContractDetails
|
from ib_insync.contract import Contract, ContractDetails
|
||||||
from ib_insync.order import Order
|
from ib_insync.order import Order
|
||||||
from ib_insync.ticker import Ticker
|
from ib_insync.ticker import Ticker
|
||||||
from ib_insync.objects import Position
|
from ib_insync.objects import (
|
||||||
import ib_insync as ibis
|
Position,
|
||||||
|
Fill,
|
||||||
|
Execution,
|
||||||
|
CommissionReport,
|
||||||
|
)
|
||||||
from ib_insync.wrapper import Wrapper
|
from ib_insync.wrapper import Wrapper
|
||||||
from ib_insync.client import Client as ib_Client
|
from ib_insync.client import Client as ib_Client
|
||||||
import numpy as np
|
import numpy as np
|
||||||
|
@ -264,24 +269,27 @@ class Client:
|
||||||
|
|
||||||
async def trades(self) -> dict[str, Any]:
|
async def trades(self) -> dict[str, Any]:
|
||||||
'''
|
'''
|
||||||
Return list of trades from current session in ``dict``.
|
Return list of trade-fills from current session in ``dict``.
|
||||||
|
|
||||||
'''
|
'''
|
||||||
# orders = await self.ib.reqCompletedOrdersAsync(
|
fills: list[Fill] = self.ib.fills()
|
||||||
# apiOnly=api_only
|
norm_fills: list[dict] = []
|
||||||
# )
|
|
||||||
fills = await self.ib.reqExecutionsAsync()
|
|
||||||
norm_fills = []
|
|
||||||
for fill in fills:
|
for fill in fills:
|
||||||
fill = fill._asdict() # namedtuple
|
fill = fill._asdict() # namedtuple
|
||||||
for key, val in fill.copy().items():
|
for key, val in fill.items():
|
||||||
if isinstance(val, Contract):
|
match val:
|
||||||
fill[key] = asdict(val)
|
case Contract() | Execution() | CommissionReport():
|
||||||
|
fill[key] = asdict(val)
|
||||||
|
|
||||||
norm_fills.append(fill)
|
norm_fills.append(fill)
|
||||||
|
|
||||||
return norm_fills
|
return norm_fills
|
||||||
|
|
||||||
|
async def orders(self) -> list[Order]:
|
||||||
|
return await self.ib.reqAllOpenOrdersAsync(
|
||||||
|
apiOnly=False,
|
||||||
|
)
|
||||||
|
|
||||||
async def bars(
|
async def bars(
|
||||||
self,
|
self,
|
||||||
fqsn: str,
|
fqsn: str,
|
||||||
|
@ -1011,7 +1019,7 @@ async def load_aio_clients(
|
||||||
for acct, client in _accounts2clients.items():
|
for acct, client in _accounts2clients.items():
|
||||||
log.info(f'Disconnecting {acct}@{client}')
|
log.info(f'Disconnecting {acct}@{client}')
|
||||||
client.ib.disconnect()
|
client.ib.disconnect()
|
||||||
_client_cache.pop((host, port))
|
_client_cache.pop((host, port), None)
|
||||||
|
|
||||||
|
|
||||||
async def load_clients_for_trio(
|
async def load_clients_for_trio(
|
||||||
|
|
Loading…
Reference in New Issue