Skip to content

Commit

Permalink
Updated V3.07 (draft): Added fund attribute to Vnstock wrapper module…
Browse files Browse the repository at this point in the history
…. Added error handling mechanism for the price_board function (VCI source)
  • Loading branch information
thinh-vu committed Jul 14, 2024
1 parent b57647b commit 0a2d7b6
Show file tree
Hide file tree
Showing 11 changed files with 203 additions and 139 deletions.
Binary file modified .DS_Store
Binary file not shown.
2 changes: 1 addition & 1 deletion docs/1_vietnam_stock_vnstock3.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -5871,7 +5871,7 @@
}
],
"source": [
"stock.finance.cash_flow(period='year', lang='vi').head()"
"stock.finance.cash_flow(period='year').head()"
]
},
{
Expand Down
276 changes: 141 additions & 135 deletions docs/4_funds_vnstock3.ipynb

Large diffs are not rendered by default.

Binary file modified vnstock3/.DS_Store
Binary file not shown.
Binary file modified vnstock3/common/.DS_Store
Binary file not shown.
2 changes: 1 addition & 1 deletion vnstock3/common/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
from vnstock3.core.utils.env import id_valid
from vnstock3.common.data.data_explorer import StockComponents, MSNComponents, Quote, Listing, Trading, Company, Finance
from vnstock3.common.data.data_explorer import StockComponents, MSNComponents, Quote, Listing, Trading, Company, Finance, Fund
id_valid()
51 changes: 51 additions & 0 deletions vnstock3/common/data/data_explorer.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import pandas as pd
import importlib
from typing import Optional
from vnstock3.core.utils.logger import get_logger
Expand Down Expand Up @@ -388,6 +389,56 @@ def ratio(self, symbol: Optional[str] = None, **kwargs):
"""
return self.data_source.ratio(**kwargs)


class Fund:
def __init__(self, source: str = "FMARKET", random_agent:bool=False):
"""
Class (lớp) quản lý các nguồn dữ liệu được tiêu chuẩn hoá cho dữ liệu đồ thị nến, dữ liệu trả về tuỳ thuộc vào nguồn dữ liệu sẵn có được chọn.
"""
self.source = source.upper()
self.supported_sources = ["FMARKET"]
if self.source not in self.supported_sources:
raise ValueError(f"Hiện tại chỉ có nguồn dữ liệu từ {', '.join(self.supported_sources)} được hỗ trợ.")
self.random_agent = random_agent
self.source_module = f"vnstock3.explorer.{source.lower()}"
self.data_source = self._load_data_source(random_agent)
self.details = self.data_source.details

def _load_data_source(self, random_agent:bool):
"""
Điều hướng lớp (class) nguồn dữ liệu được lựa chọn.
"""
module = importlib.import_module(self.source_module)
return module.Fund(random_agent)

def listing(self, fund_type:str="") -> pd.DataFrame:
"""
Truy xuất danh sách tất cả các quỹ mở hiện có trên Fmarket thông qua API. Xem trực tiếp tại https://fmarket.vn
Tham số:
----------
fund_type (str): Loại quỹ cần lọc. Mặc định là rỗng để lấy tất cả các quỹ. Các loại quỹ hợp lệ bao gồm: 'BALANCED', 'BOND', 'STOCK'
Trả về:
-------
pd.DataFrame: DataFrame chứa thông tin của tất cả các quỹ mở hiện có trên Fmarket.
"""
return self.data_source.listing(fund_type)

def filter(self, symbol:str="") -> pd.DataFrame:
"""
Truy xuất danh sách quỹ theo tên viết tắt (short_name) và mã id của quỹ. Mặc định là rỗng để liệt kê tất cả các quỹ.
Tham số:
----------
symbol (str): Tên viết tắt của quỹ cần tìm kiếm. Mặc định là rỗng để lấy tất cả các quỹ.
Trả về:
-------
pd.DataFrame: DataFrame chứa thông tin của quỹ cần tìm kiếm.
"""
return self.data_source.filter(symbol)

class MSNComponents:
"""
Class (lớp) quản lý các chức năng của thư viện Vnstock liên quan đến thị trường ngoại hối.
Expand Down
10 changes: 8 additions & 2 deletions vnstock3/common/vnstock.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import importlib
from typing import Optional
from vnstock3.core.utils.logger import get_logger
from vnstock3.common.data.data_explorer import StockComponents, MSNComponents
from vnstock3.common.data.data_explorer import StockComponents, MSNComponents, Fund
from vnstock3.explorer.msn.const import _CURRENCY_ID_MAP, _GLOBAL_INDICES, _CRYPTO_ID_MAP

logger = get_logger(__name__)
Expand Down Expand Up @@ -29,10 +29,13 @@ def __init__(self, source:str="VCI", show_log:bool=True):
self.source = source.upper()
# self.utils = Utils(self)

def stock(self, symbol: Optional[str]=None, source: Optional[str] = "VCI"):
def stock(self, symbol: Optional[str]=None, source: Optional[str] = None):
if symbol is None:
self.symbol = 'VN30F1M'
logger.info("Mã chứng khoán không được chỉ định, chương trình mặc định sử dụng VN30F1M")

if source is None:
source = self.source
else:
self.symbol = symbol
return StockComponents(self.symbol, source, show_log=self.show_log)
Expand All @@ -51,3 +54,6 @@ def world_index(self, symbol: Optional[str]='DJI', source: Optional[str] = "MSN"
if symbol:
self.symbol = self.msn_symbol_map[symbol]
return MSNComponents(self.symbol, source)

def fund(self, source: Optional[str] = "FMARKET"):
return Fund(source)
Binary file modified vnstock3/core/.DS_Store
Binary file not shown.
Binary file modified vnstock3/explorer/.DS_Store
Binary file not shown.
1 change: 1 addition & 0 deletions vnstock3/explorer/fmarket/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from .fund import Fund

0 comments on commit 0a2d7b6

Please sign in to comment.