Skip to content

Commit

Permalink
add quote and to_dict() for restful API (#37)
Browse files Browse the repository at this point in the history
Signed-off-by: Lu Ken <[email protected]>
  • Loading branch information
kenplusplus authored Dec 31, 2024
1 parent d489a81 commit 66299b1
Show file tree
Hide file tree
Showing 3 changed files with 51 additions and 15 deletions.
21 changes: 21 additions & 0 deletions src/gentrade/market_data/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
32 changes: 17 additions & 15 deletions src/gentrade/market_data/crypto.py
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand All @@ -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:
Expand Down
13 changes: 13 additions & 0 deletions src/gentrade/market_data/stock_us.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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"
Expand Down

0 comments on commit 66299b1

Please sign in to comment.