change open_trade_ledger typing to return a Generator type
							parent
							
								
									b67d020e23
								
							
						
					
					
						commit
						a4bd51a01b
					
				|  | @ -43,6 +43,7 @@ from ..data.types import Struct | |||
| from ..pp import ( | ||||
|     Position, | ||||
|     Transaction, | ||||
|     open_trade_ledger | ||||
| ) | ||||
| from ..data._normalize import iterticks | ||||
| from ..data._source import unpack_fqsn | ||||
|  | @ -86,17 +87,6 @@ class PaperBoi(Struct): | |||
|     last_ask: tuple[float, float] = (float('inf'), 0)  # price, size | ||||
|     last_bid: tuple[float, float] = (0, 0) | ||||
| 
 | ||||
| 
 | ||||
|     def record_paper_trade(self): | ||||
|         try: | ||||
|             #create paper trades record | ||||
|              | ||||
|             print('RECORDING PAPER TRADE')  | ||||
|             config, path = load('paper_trades')  | ||||
|         except Exception as Arguement:  | ||||
|             logging.exception('ERROR RECORDING PAPER TRADE') | ||||
|             pass | ||||
| 
 | ||||
|     async def submit_limit( | ||||
|         self, | ||||
|         oid: str,  # XXX: see return value | ||||
|  | @ -246,9 +236,7 @@ class PaperBoi(Struct): | |||
|         ) | ||||
|         log.info(f'Fake filling order:\n{fill_msg}') | ||||
|         await self.ems_trades_stream.send(fill_msg) | ||||
| 
 | ||||
|         self._trade_ledger.update(fill_msg.to_dict()) | ||||
| 
 | ||||
|          | ||||
|         if order_complete: | ||||
|             msg = BrokerdStatus( | ||||
|                 reqid=reqid, | ||||
|  | @ -284,7 +272,15 @@ class PaperBoi(Struct): | |||
|             dt=pendulum.from_timestamp(fill_time_s), | ||||
|             bsuid=key, | ||||
|         ) | ||||
|         self.record_paper_trade() | ||||
| 
 | ||||
|         # Transacupdate ledger per trade | ||||
|         ledger_entry = {} | ||||
|         ledger_entry[oid] = t.to_dict()  | ||||
|         self._trade_ledger.update(ledger_entry) | ||||
|         with open_trade_ledger('paper', 'paper', self._trade_ledger) as ledger: | ||||
|             log.info(ledger) | ||||
| 
 | ||||
| 
 | ||||
|         pp.add_clear(t) | ||||
| 
 | ||||
|         pp_msg = BrokerdPosition( | ||||
|  |  | |||
							
								
								
									
										14
									
								
								piker/pp.py
								
								
								
								
							
							
						
						
									
										14
									
								
								piker/pp.py
								
								
								
								
							|  | @ -32,13 +32,13 @@ from typing import ( | |||
|     Iterator, | ||||
|     Optional, | ||||
|     Union, | ||||
|     Generator | ||||
| ) | ||||
| 
 | ||||
| import pendulum | ||||
| from pendulum import datetime, now | ||||
| import tomli | ||||
| import toml | ||||
| 
 | ||||
| from . import config | ||||
| from .brokers import get_brokermod | ||||
| from .clearing._messages import BrokerdPosition, Status | ||||
|  | @ -53,8 +53,8 @@ log = get_logger(__name__) | |||
| def open_trade_ledger( | ||||
|     broker: str, | ||||
|     account: str, | ||||
| 
 | ||||
| ) -> dict: | ||||
|     trades: dict[str, Any]  | ||||
| ) -> Generator[dict, None, None]: | ||||
|     ''' | ||||
|     Indempotently create and read in a trade log file from the | ||||
|     ``<configuration_dir>/ledgers/`` directory. | ||||
|  | @ -82,7 +82,8 @@ def open_trade_ledger( | |||
|         ledger = tomli.load(cf) | ||||
|         print(f'Ledger load took {time.time() - start}s') | ||||
|         cpy = ledger.copy() | ||||
| 
 | ||||
|         if trades: | ||||
|             cpy.update(trades) | ||||
|     try: | ||||
|         yield cpy | ||||
|     finally: | ||||
|  | @ -91,10 +92,13 @@ def open_trade_ledger( | |||
|             # https://stackoverflow.com/questions/12956957/print-diff-of-python-dictionaries | ||||
|             print(f'Updating ledger for {tradesfile}:\n') | ||||
|             ledger.update(cpy) | ||||
| 
 | ||||
|              | ||||
|             print("updated ledger")  | ||||
|             print(ledger) | ||||
|             # we write on close the mutated ledger data | ||||
|             with open(tradesfile, 'w') as cf: | ||||
|                 toml.dump(ledger, cf) | ||||
|                 return | ||||
| 
 | ||||
| 
 | ||||
| class Transaction(Struct, frozen=True): | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue