Start to prep `Transaction` for `MktPair`..
							parent
							
								
									ef915273ea
								
							
						
					
					
						commit
						ee4138ae01
					
				| 
						 | 
					@ -35,7 +35,10 @@ import toml
 | 
				
			||||||
from .. import config
 | 
					from .. import config
 | 
				
			||||||
from ..data.types import Struct
 | 
					from ..data.types import Struct
 | 
				
			||||||
from ..log import get_logger
 | 
					from ..log import get_logger
 | 
				
			||||||
from ._mktinfo import Symbol
 | 
					from ._mktinfo import (
 | 
				
			||||||
 | 
					    Symbol,  # legacy
 | 
				
			||||||
 | 
					    MktPair,
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
log = get_logger(__name__)
 | 
					log = get_logger(__name__)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -90,10 +93,13 @@ def open_trade_ledger(
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class Transaction(Struct, frozen=True):
 | 
					class Transaction(Struct, frozen=True):
 | 
				
			||||||
    # TODO: should this be ``.to`` (see below)?
 | 
					 | 
				
			||||||
    fqsn: str
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    sym: Symbol
 | 
					    # TODO: unify this with the `MktPair`,
 | 
				
			||||||
 | 
					    # once we have that as a required field,
 | 
				
			||||||
 | 
					    # we don't really need the fqsn any more..
 | 
				
			||||||
 | 
					    fqsn: str
 | 
				
			||||||
 | 
					    sym: Symbol | MktPair
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    tid: Union[str, int]  # unique transaction id
 | 
					    tid: Union[str, int]  # unique transaction id
 | 
				
			||||||
    size: float
 | 
					    size: float
 | 
				
			||||||
    price: float
 | 
					    price: float
 | 
				
			||||||
| 
						 | 
					@ -101,17 +107,45 @@ class Transaction(Struct, frozen=True):
 | 
				
			||||||
    dt: datetime
 | 
					    dt: datetime
 | 
				
			||||||
    expiry: datetime | None = None
 | 
					    expiry: datetime | None = None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @property
 | 
				
			||||||
 | 
					    def mktpair(self) -> MktPair:
 | 
				
			||||||
 | 
					        sym = self.sym
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if isinstance(sym, MktPair):
 | 
				
			||||||
 | 
					            # presume it's already set as our desired
 | 
				
			||||||
 | 
					            # ``MktPair`` type:
 | 
				
			||||||
 | 
					            return sym
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        # cast to new type
 | 
				
			||||||
 | 
					        return MktPair.from_fqme(
 | 
				
			||||||
 | 
					            sym.fqme,
 | 
				
			||||||
 | 
					            price_tick=digits_to_dec(
 | 
				
			||||||
 | 
					                Decimal(str(sym.tick_size)),
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					            size_tick=digits_to_dec(
 | 
				
			||||||
 | 
					                Decimal(str(sym.lot_tick_size)),
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # remap for back-compat
 | 
				
			||||||
 | 
					    @property
 | 
				
			||||||
 | 
					    def fqme(self) -> str:
 | 
				
			||||||
 | 
					        return self.fqsn
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # optional key normally derived from the broker
 | 
					    # optional key normally derived from the broker
 | 
				
			||||||
    # backend which ensures the instrument-symbol this record
 | 
					    # backend which ensures the instrument-symbol this record
 | 
				
			||||||
    # is for is truly unique.
 | 
					    # is for is truly unique.
 | 
				
			||||||
    bsuid: Union[str, int] | None = None
 | 
					    bsuid: Union[str, int] | None = None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # XXX NOTE: this will come from the `MktPair`
 | 
				
			||||||
 | 
					    # instead of defined here right?
 | 
				
			||||||
    # optional fqsn for the source "asset"/money symbol?
 | 
					    # optional fqsn for the source "asset"/money symbol?
 | 
				
			||||||
    # from: Optional[str] = None
 | 
					    # from: Optional[str] = None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def iter_by_dt(
 | 
					def iter_by_dt(
 | 
				
			||||||
    clears: dict[str, Any],
 | 
					    clears: dict[str, Any],
 | 
				
			||||||
 | 
					
 | 
				
			||||||
) -> Iterator[tuple[str, dict]]:
 | 
					) -> Iterator[tuple[str, dict]]:
 | 
				
			||||||
    '''
 | 
					    '''
 | 
				
			||||||
    Iterate entries of a ``clears: dict`` table sorted by entry recorded
 | 
					    Iterate entries of a ``clears: dict`` table sorted by entry recorded
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue