Move factor helper to a classmethod
							parent
							
								
									94e2103bf5
								
							
						
					
					
						commit
						434c340cb8
					
				|  | @ -17,6 +17,7 @@ | ||||||
| """ | """ | ||||||
| numpy data source coversion helpers. | numpy data source coversion helpers. | ||||||
| """ | """ | ||||||
|  | from __future__ import annotations | ||||||
| from typing import Any | from typing import Any | ||||||
| import decimal | import decimal | ||||||
| 
 | 
 | ||||||
|  | @ -98,16 +99,43 @@ class Symbol(BaseModel): | ||||||
|     Yah, i guess dats what it izz. |     Yah, i guess dats what it izz. | ||||||
|     """ |     """ | ||||||
|     key: str |     key: str | ||||||
|     type_key: str  # {'stock', 'forex', 'future', ... etc.} |     tick_size: float = 0.01 | ||||||
|     tick_size: float |     lot_tick_size: float = 0.0  # "volume" precision as min step value | ||||||
|     lot_tick_size: float  # "volume" precision as min step value |     tick_size_digits: int = 2 | ||||||
|     tick_size_digits: int |     lot_size_digits: int = 0 | ||||||
|     lot_size_digits: int |  | ||||||
|     broker_info: dict[str, dict[str, Any]] = {} |     broker_info: dict[str, dict[str, Any]] = {} | ||||||
| 
 | 
 | ||||||
|     # specifies a "class" of financial instrument |     # specifies a "class" of financial instrument | ||||||
|     # ex. stock, futer, option, bond etc. |     # ex. stock, futer, option, bond etc. | ||||||
| 
 | 
 | ||||||
|  |     # @validate_arguments | ||||||
|  |     @classmethod | ||||||
|  |     def from_broker_info( | ||||||
|  |         cls, | ||||||
|  |         broker: str, | ||||||
|  |         symbol: str, | ||||||
|  |         info: dict[str, Any], | ||||||
|  | 
 | ||||||
|  |     # XXX: like wtf.. | ||||||
|  |     # ) -> 'Symbol': | ||||||
|  |     ) -> None: | ||||||
|  | 
 | ||||||
|  |         tick_size = info.get('price_tick_size', 0.01) | ||||||
|  |         lot_tick_size = info.get('lot_tick_size', 0.0) | ||||||
|  | 
 | ||||||
|  |         return Symbol( | ||||||
|  |             key=symbol, | ||||||
|  |             tick_size=tick_size, | ||||||
|  |             lot_tick_size=lot_tick_size, | ||||||
|  |             tick_size_digits=float_digits(tick_size), | ||||||
|  |             lot_size_digits=float_digits(lot_tick_size), | ||||||
|  |             broker_info={broker: info}, | ||||||
|  |         ) | ||||||
|  | 
 | ||||||
|  |     @property | ||||||
|  |     def type_key(self) -> str: | ||||||
|  |         return list(self.broker_info.values())[0]['asset_type'] | ||||||
|  | 
 | ||||||
|     @property |     @property | ||||||
|     def brokers(self) -> list[str]: |     def brokers(self) -> list[str]: | ||||||
|         return list(self.broker_info.keys()) |         return list(self.broker_info.keys()) | ||||||
|  | @ -138,32 +166,6 @@ class Symbol(BaseModel): | ||||||
|         ] |         ] | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @validate_arguments |  | ||||||
| def mk_symbol( |  | ||||||
| 
 |  | ||||||
|     key: str, |  | ||||||
|     type_key: str, |  | ||||||
|     tick_size: float = 0.01, |  | ||||||
|     lot_tick_size: float = 0, |  | ||||||
|     broker_info: dict[str, Any] = {}, |  | ||||||
| 
 |  | ||||||
| ) -> Symbol: |  | ||||||
|     ''' |  | ||||||
|     Create and return an instrument description for the |  | ||||||
|     "symbol" named as ``key``. |  | ||||||
| 
 |  | ||||||
|     ''' |  | ||||||
|     return Symbol( |  | ||||||
|         key=key, |  | ||||||
|         type_key=type_key, |  | ||||||
|         tick_size=tick_size, |  | ||||||
|         lot_tick_size=lot_tick_size, |  | ||||||
|         tick_size_digits=float_digits(tick_size), |  | ||||||
|         lot_size_digits=float_digits(lot_tick_size), |  | ||||||
|         broker_info=broker_info, |  | ||||||
|     ) |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| def from_df( | def from_df( | ||||||
| 
 | 
 | ||||||
|     df: pd.DataFrame, |     df: pd.DataFrame, | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue