diff --git a/README.md b/README.md
index d0c86e9..dd732b3 100644
--- a/README.md
+++ b/README.md
@@ -34,6 +34,7 @@
- [اطلاعات لحظهای سهام](#اطلاعات-لحظهای-سهام)
- [ریز معاملات سهام](#ریز-معاملات-سهام)
- [تمامی اطلاعات موجود برای فیلترنویسی](#تمامی-اطلاعات-موجود-برای-فیلترنویسی)
+ - [گرفتن تمام اطلاعات تاریخی یا لحظهای نماد به صورت CSV](#گرفتن-تمام-اطلاعات-تاریخی-یا-لحظهای-نماد-به-صورت-csv)
- [کامیونیتی](#کامیونیتی)
- [منابع آموزشی](#منابع-آموزشی)
- [الهام گرفته از:](#الهام-گرفته-از)
@@ -760,6 +761,31 @@ key_stats = get_stats(base_path="hello", to_csv=True)
+### گرفتن تمام اطلاعات تاریخی یا لحظهای نماد به صورت CSV
+
+برای استفاده راحتتر از اطلاعات لحظهای یا تاریخی و یا درست کردن فایل برای نرم افزارهای دیگه توابعی وجود داره که تمام اطلاعات نماد رو در یک فایل برمیگردونه.
+
+اطلاعات تاریخی برگشته شامل اطلاعات خرید و فروش حقیقی و حقوقی و تاریخچه سهم هست که در هر سطر با ذکر تاریخ وجود دارند
+اطلاعات لحظهای تنها یک سطر هست و شامل اطلاعات تابلو هست.
+
+توجه کنید این اطلاعات چیزی بیشتر از توابع موجود در پکیج ندارند و صرفا برای راحتی کار کاربران توسعه داده شدهاند.
+
+
+```python
+ticker = Ticker("وبملت")
+historical_data = export_ticker_history_as_csv(ticker)
+real_time_data = ticker_real_time_data_to_csv(ticker)
+
+# برای نوشتن این اطلاعات به شکل فایل csv
+
+historical_data.to_csv("history.csv")
+real_time_data.to_csv("realtime.csv")
+
+```
+
+
+
+
## کامیونیتی
diff --git a/pyproject.toml b/pyproject.toml
index 60b7f97..4913a45 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,6 +1,6 @@
[tool.poetry]
name = "pytse-client"
-version = "0.13.0"
+version = "0.14.0"
description = "tehran stock exchange(TSE) client in python"
authors = ["glyphack "]
diff --git a/pytse_client/ticker/export.py b/pytse_client/ticker/export.py
index b5e77e9..a19da71 100644
--- a/pytse_client/ticker/export.py
+++ b/pytse_client/ticker/export.py
@@ -12,7 +12,44 @@ def ticker_real_time_data_to_csv(ticker: Ticker):
[flat_dict] = pandas.json_normalize(data, sep=".").to_dict(
orient="records"
)
+
df = pandas.DataFrame([flat_dict])
df["symbol"] = ticker.symbol
df["name"] = ticker.title
+ df["group_name"] = ticker.group_name
+ df["fiscal_year"] = ticker.fiscal_year
+ df["eps"] = ticker.eps
+ df["p_e_ratio"] = ticker.p_e_ratio
+ df["group_p_e_ratio"] = ticker.group_p_e_ratio
+ df["psr"] = ticker.psr
+ df["p_s_ratio"] = ticker.p_s_ratio
+ df["base_volume"] = ticker.base_volume
+ df["flow"] = ticker.flow
+ df["sta_max"] = ticker.sta_max
+ df["sta_min"] = ticker.sta_min
+ df["min_week"] = ticker.min_week
+ df["max_week"] = ticker.max_week
+ df["min_year"] = ticker.min_year
+ df["max_year"] = ticker.max_year
+ df["month_average_volume"] = ticker.month_average_volume
return df
+
+
+def export_ticker_history_as_csv(ticker: Ticker):
+ trade_day_history = ticker.history
+ client_types_history = ticker.client_types
+
+ # TODO move to original function if okay
+ trade_day_history["date"] = pandas.to_datetime(trade_day_history["date"])
+ client_types_history["date"] = pandas.to_datetime(
+ client_types_history["date"]
+ )
+
+ merged_dataframe = pandas.merge(
+ trade_day_history,
+ client_types_history,
+ on="date",
+ how="outer",
+ )
+
+ return merged_dataframe
diff --git a/pytse_client/ticker/ticker.py b/pytse_client/ticker/ticker.py
index 7cd97b2..dec52ce 100644
--- a/pytse_client/ticker/ticker.py
+++ b/pytse_client/ticker/ticker.py
@@ -372,7 +372,10 @@ def float_shares(self) -> float:
@property
def client_types(self):
- return download_ticker_client_types_record(self._index)
+ client_types = download_ticker_client_types_record(self._index)
+ if client_types is None:
+ raise RuntimeError("cannot download client types data try again")
+ return client_types
@property
def trade_dates(self) -> List[datetime.date]:
diff --git a/tests/test_ticker/test_ticker_export.py b/tests/test_ticker/test_ticker_export.py
index 0e47033..3310421 100644
--- a/tests/test_ticker/test_ticker_export.py
+++ b/tests/test_ticker/test_ticker_export.py
@@ -1,7 +1,10 @@
import unittest
from pytse_client import Ticker
-from pytse_client.ticker.export import ticker_real_time_data_to_csv
+from pytse_client.ticker.export import (
+ export_ticker_history_as_csv,
+ ticker_real_time_data_to_csv,
+)
class TestTickerExport(unittest.TestCase):
@@ -16,6 +19,12 @@ def test_export_ticker_realtime_data_to_csv(self):
df = ticker_real_time_data_to_csv(ticker)
self.assertTrue(df.empty is False)
+ def test_export_ticker_history_to_csv(self):
+ ticker = Ticker("وبملت")
+ df = export_ticker_history_as_csv(ticker)
+ df.to_csv("test.csv")
+ self.assertTrue(df.empty is False)
+
def suite():
test_suite = unittest.TestSuite()