diff --git a/src/gentrade/market_data/core.py b/src/gentrade/market_data/core.py index 89d7cd3..ba675e9 100644 --- a/src/gentrade/market_data/core.py +++ b/src/gentrade/market_data/core.py @@ -41,16 +41,37 @@ def name(self) -> str: """ return self._name + @property + @abstractmethod + def quote(self) -> str: + """Quote name, it will be usd for US stock market, cny for chinese stock + market and usdt for crypto market + """ + @property def market(self) -> FinancialMarket: """ Property market which belong to """ return self._market + @property def cache(self) -> FinancialAssetCache: return self._cache + @property + @abstractmethod + def asset_type(self): + pass + + def to_dict(self) -> dict: + return { + 'name': self.name, + 'type': self.asset_type, + 'market': self.market.market_id, + 'quote': self.quote + } + def fetch_ohlcv(self, timeframe:str = '1d', since: int = -1, to: int = -1, limit=-1) -> pd.DataFrame: """Fetch the OHLCV diff --git a/src/gentrade/market_data/crypto.py b/src/gentrade/market_data/crypto.py index 724b439..a04fd1e 100644 --- a/src/gentrade/market_data/crypto.py +++ b/src/gentrade/market_data/crypto.py @@ -33,23 +33,23 @@ class CryptoAsset(FinancialAsset): _CRYPTO_TYPES = [ _CRYPTO_TYPE_SPOT, _CRYPTO_TYPE_SWAP, _CRYPTO_TYPE_FUTURE] - def __init__(self, currency_base:str, currency_quote:str, + def __init__(self, base:str, quote:str, symbol:str, crypto_type:str, market:CryptoMarket): - self._currency_base = currency_base.lower() - self._currency_quote = currency_quote.lower() + self._base = base.lower() + self._quote = quote.lower() assert crypto_type in self._CRYPTO_TYPES self._crypto_type = crypto_type self._symbol = symbol - super().__init__("%s_%s" %(currency_base.lower(), - currency_quote.lower()), market) + super().__init__("%s_%s" %(base.lower(), + quote.lower()), market) @property - def currency_base(self) -> str: - return self._currency_base + def base(self) -> str: + return self._base @property - def currency_quote(self) -> str: - return self._currency_quote + def quote(self) -> str: + return self._quote @property def symbol(self) -> str: @@ -59,13 +59,15 @@ def symbol(self) -> str: def crypto_type(self) -> str: return self._crypto_type + @property + def asset_type(self): + return self.crypto_type + def to_dict(self) -> dict: - return { - "base": self.currency_base, - "quote": self.currency_quote, - "type": self.crypto_type, - "symbol": self._symbol - } + retval = super().to_dict() + retval['base'] = self.base + retval['symbol'] = self._symbol + return retval def fetch_ohlcv(self, timeframe:str = '1d', since: int = -1, to: int = -1, limit=-1) -> pd.DataFrame: diff --git a/src/gentrade/market_data/stock_us.py b/src/gentrade/market_data/stock_us.py index 3c4d17c..a08e6e0 100644 --- a/src/gentrade/market_data/stock_us.py +++ b/src/gentrade/market_data/stock_us.py @@ -43,6 +43,10 @@ def __init__(self, ticker_name:str, market:StockUSMarket, def ticker_type(self): return self._ticker_type + @property + def asset_type(self): + return self.ticker_type + @property def ticker_cik(self): return self._ticker_cik @@ -51,6 +55,15 @@ def ticker_cik(self): def ticker_title(self): return self._ticker_title + @property + def quote(self): + return "usd" + + def to_dict(self) -> dict: + ret = super().to_dict() + ret['cik'] = self.ticker_cik + return ret + class StockUSMarket(FinancialMarket): TICKER_LIST_FILE = "stock_us_ticker.json"