{"id":23082418,"url":"https://github.com/glyphack/pytse-client","last_synced_at":"2025-05-15T05:08:19.986Z","repository":{"id":40312873,"uuid":"254636752","full_name":"Glyphack/pytse-client","owner":"Glyphack","description":"work with Tehran stock exchange data 💹 in Python","archived":false,"fork":false,"pushed_at":"2025-03-15T14:29:47.000Z","size":7792,"stargazers_count":286,"open_issues_count":36,"forks_count":78,"subscribers_count":14,"default_branch":"master","last_synced_at":"2025-04-08T12:01:38.608Z","etag":null,"topics":["financial-data","market-data","python","stock-market","stocks","tehran-stock-exchange","tsetmc"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Glyphack.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-04-10T13:06:09.000Z","updated_at":"2025-03-29T13:39:33.000Z","dependencies_parsed_at":"2023-09-24T06:53:21.042Z","dependency_job_id":"842e735a-7570-4b35-8ef6-5393373ec1d4","html_url":"https://github.com/Glyphack/pytse-client","commit_stats":null,"previous_names":[],"tags_count":32,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Glyphack%2Fpytse-client","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Glyphack%2Fpytse-client/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Glyphack%2Fpytse-client/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Glyphack%2Fpytse-client/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Glyphack","download_url":"https://codeload.github.com/Glyphack/pytse-client/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254276447,"owners_count":22043867,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["financial-data","market-data","python","stock-market","stocks","tehran-stock-exchange","tsetmc"],"created_at":"2024-12-16T14:44:06.796Z","updated_at":"2025-05-15T05:08:14.976Z","avatar_url":"https://github.com/Glyphack.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv dir=\"rtl\"  markdown=\"1\"\u003e\n\n# دریافت اطلاعات بازار بورس تهران\n\n[![Test](https://github.com/Glyphack/pytse-client/actions/workflows/unit_test.yml/badge.svg)](https://github.com/Glyphack/pytse-client/actions/workflows/unit_test.yml)\n[![Language grade: Python](https://img.shields.io/lgtm/grade/python/g/Glyphack/pytse-client.svg?logo=lgtm\u0026logoWidth=18)](https://lgtm.com/projects/g/Glyphack/pytse-client/context:python)\n[![Discord Chat](https://img.shields.io/discord/730808323808559106?label=discord)](https://discord.gg/ampPDKHpVv)\n\nبا استفاده از pytse client میتونید به دیتای بازار بورس تهران در پایتون دسترسی داشته باشید.\nهدف حل مشکلات گرفتن اطلاعات بروز از سایت بازار بورس تهران هست.\n\n## میخواید مشارکت کنید؟\n\nلطفا [این صفحه](https://github.com/Glyphack/pytse-client/blob/master/CONTRIBUTING.md) رو مطالعه کنید\n\n- [دریافت اطلاعات بازار بورس تهران](#دریافت-اطلاعات-بازار-بورس-تهران)\n  - [میخواید مشارکت کنید؟](#میخواید-مشارکت-کنید)\n  - [قابلیت‌ها](#قابلیتها)\n  - [نصب](#نصب)\n  - [نصب آخرین نسخه در حال توسعه](#نصب-آخرین-نسخه-در-حال-توسعه)\n  - [نحوه استفاده](#نحوه-استفاده)\n    - [دانلود سابقه سهم ها](#دانلود-سابقه-سهم-ها)\n    - [دانلود سابقه شاخص های مالی](#دانلود-سابقه-شاخص-های-مالی)\n    - [دانلود تاریخچه orderbook](#دانلود-تاریخچه-orderbook)\n    - [دانلود تاریخچه جزئیات معاملات](#دانلود-تاریخچه-جزئیات-معاملات)\n    - [دانلود سابقه معاملات حقیقی و حقوقی به صورت مجزا](#دانلود-سابقه-معاملات-حقیقی-و-حقوقی-به-صورت-مجزا)\n    - [ماژول Ticker](#ماژول-ticker)\n        - [نکته ۱](#نکته-۱)\n        - [نکته ۲](#نکته-۲)\n      - [اطلاعات نماد‌های حذف شده](#اطلاعات-نمادهای-حذف-شده)\n      - [اطلاعات حقیقی و حقوقی](#اطلاعات-حقیقی-و-حقوقی)\n      - [سهامداران عمده](#سهامداران-عمده)\n      - [تاریخچه‌ی سهام‌داران عمده](#تاریخچهی-سهامداران-عمده)\n      - [تاریخچه‌ تعداد سهام](#تاریخچه-تعداد-سهام)\n      - [شناور سهم](#شناور-سهم)\n      - [اطلاعات لحظه‌ای سهام](#اطلاعات-لحظهای-سهام)\n      - [ریز معاملات سهام](#ریز-معاملات-سهام)\n    - [تمامی اطلاعات موجود برای فیلترنویسی](#تمامی-اطلاعات-موجود-برای-فیلترنویسی)\n    - [گرفتن تمام اطلاعات تاریخی یا لحظه‌ای نماد به صورت CSV](#گرفتن-تمام-اطلاعات-تاریخی-یا-لحظهای-نماد-به-صورت-csv)\n  - [کامیونیتی](#کامیونیتی)\n  - [منابع آموزشی](#منابع-آموزشی)\n  - [الهام گرفته از:](#الهام-گرفته-از)\n\n## قابلیت‌ها\n\n- دریافت اطلاعات تاریخی به صورت تعدیل‌شده و تعدیل نشده برای نمادها\n- دریافت اطلاعات لحظه نمادها\n- دریافت اطلاعات تاریخی شاخص‌های مالی\n- قابلیت گرفتن اطلاعات یک سهم مانند گروه سهم و اطلاعات معاملات حقیقی و حقوقی\n- دریافت اطلاعات فاندامنتال یک نماد شامل (EPS ,P/E و حجم مبنا)\n- دریافت اطلاعات سهامداران عمده\n- دریافت آمارهای کلیدی مربوط به فیلترنویسی برای نمادها\n- دریافت ریزمعاملاتی آخرین روز معاملاتی نمادها\n- دریافت orderbook با پنج مظنه برتر\n\n## نصب\n\n\u003cdiv dir=\"ltr\"\u003e\n\n```bash\npip install pytse-client\n```\n\n\u003c/div\u003e\n\n## نصب آخرین نسخه در حال توسعه\n\nاین نسخه‌ی در حال توسعه است که بر روی گیت‌هاب قرار دارد، همه‌ی قابلیت‌های گفته شده در این صفحه را دارد اما ممکن است بعضی قابلیت‌های جدید تست شده نباشند. در صورتی که نسخه‌ی بالا کاری که میخواهید را انجام نمیدهد این را نصب کنید.\n\n\u003cdiv dir=\"ltr\"\u003e\n\n```bash\npip install git+https://github.com/Glyphack/pytse-client.git\n```\n\n\u003c/div\u003e\n\n## نحوه استفاده\n\n### دانلود سابقه سهم ها\n\nبا استفاده از این تابع می‌توان سابقه سهام رو دریافت کرد و هم اون رو ذخیره و هم توی کد استفاده کرد\n\n\u003cdiv dir=\"ltr\"\u003e\n\n```python\nimport pytse_client as tse\n\ntickers = tse.download(symbols=\"all\", write_to_csv=True)\nprint(tickers[\"ولملت\"])  # history\n\n# Output\n            date     open     high  ...     volume  count    close\n0     2009-02-18   1050.0   1050.0  ...  330851245    800   1050.0\n1     2009-02-21   1051.0   1076.0  ...  335334212   6457   1057.0\n2     2009-02-22   1065.0   1074.0  ...    8435464    603   1055.0\n3     2009-02-23   1066.0   1067.0  ...    8570222    937   1060.0\n4     2009-02-25   1061.0   1064.0  ...    7434309    616   1060.0\n...          ...      ...      ...  ...        ...    ...      ...\n2323  2020-04-14   9322.0   9551.0  ...  105551315  13536   9400.0\n2324  2020-04-15   9410.0   9815.0  ...  201457026  11322   9815.0\n2325  2020-04-18  10283.0  10283.0  ...  142377245   8929  10283.0\n2326  2020-04-19  10797.0  10797.0  ...  292985635  22208  10380.0\n2327  2020-04-20  10600.0  11268.0  ...  295590437  16313  11268.0\n```\n\n\u003c/div\u003e\n\nبرای دانلود سابقه یک یا چند سهم کافیست اسم اون‌ها به تابع داده بشه:\n\n\u003cdiv dir=\"rtl\"\u003e\n\nهمچنین با گذاشتن\n`write_to_csv=True`\nسابقه سهم توی فایلی با نماد سهم نوشته میشه\n\nسابقه سهم در قالب `Dataframe` است\n\nدر صورتی که می‌خواهید تاریخ شمسی به خروجی اضافه شود می‌توانید با گذاشتن\n`include_jdate=True`\nاین امکان را فراهم کنید\n\nبرای دریافت قیمت‌های تعدیل شده از\n`adjust=True`\nاستفاده کنید\n\n\u003c/div\u003e\n\n\u003cdiv dir=\"ltr\"\u003e\n\n```python\nimport pytse_client as tse\n\ntse.download(symbols=\"وبملت\", write_to_csv=True)\ntse.download(symbols=\"وبملت\", write_to_csv=True, include_jdate=True)\ntse.download(symbols=[\"وبملت\", \"ولملت\"], write_to_csv=True)\n```\n\n\u003c/div\u003e\n\n### دانلود سابقه شاخص های مالی\n\n\u003cdiv style=\"line-height:80px;\"\u003e\nبرای دانلود سابقه شاخص های بازار که از طریق این \u003ca href=\"http://www.tsetmc.com/Loader.aspx?Partree=151315\u0026Flow=1\"\u003e  لینک \u003c/a\u003e\nمی توانید لیست نام آن ها را ملاحظه کنید کافی است اسم شاخص\nدر بخش ‍‍\n`symbols`\nوارد کنید.\n\nهمینطور در صورتی که علاقه داشته باشید دیتای مربوط به همه شاخص ها را دریافت کنید کافی است که در برابر کلید `symbols`\nرشته\n`\"all\"`\nوارد کنید.\n\nچند نمونه از دریافت داده‌های شاخصی را می‌توانید در پایین مشاهده کنید.\n\n\u003c/div\u003e\n\u003cdiv dir=\"ltr\"\u003e\n\n```python\nfrom pytse_client.download import download_financial_indexes\n\ndownload_financial_indexes(symbols=\"all\", write_to_csv=True, base_path=\"hello\")\n\n\ndownload_financial_indexes(symbols=[\"شاخص قيمت 50 شركت\", \"فني مهندسي\"], write_to_csv=True, include_jdate=True)\n```\n\nهمینطور کلاسی به نام `FinancialIndex` وجود دارد که می‌توانید با استفاده از آن نه تنها به تاریخچه شاخص های مدنظر بلکه تغییرات درون روزانه و اطلاعات دیگری دسترسی پیدا کنید.\n\nاین کلاس مشابه با کلاس `Ticker` طراحی شده است.\n\n```python\ntse.FinancialIndex(symbol=\"شاخص کل\").history\ntse.FinancialIndex(symbol=\"شاخص کل\").intraday_price\ntse.FinancialIndex(symbol=\"شاخص کل\").low\ntse.FinancialIndex(symbol=\"شاخص کل\").high\ntse.FinancialIndex(symbol=\"شاخص کل\").last_value\ntse.FinancialIndex(symbol=\"شاخص کل\").last_update\n```\n\n\u003c/div\u003e\n\u003cdiv\u003e\n\u003ci\u003e\nبه این موضوع توجه داشته باشید که دیتای دریافتی حاوی مقدار   `OHLCV`\nاست به همراه `date` و `jdate` در صورت نیاز شما می‌باشد.\n\u003c/i\u003e\n\u003c/div\u003e\n\n### دانلود تاریخچه orderbook\n```python\ntse.get_orderbook(\n    symbol_name,\n    start_date,\n    end_date=None,\n    to_csv=False,\n    base_path=None,\n    ignore_date_validation=False,\n    diff_orderbook=False,  # faster to process but only stores the difference\n    async_requests=True,\n)\n```\nدر بالا مقادیر دیفالت تابع را مشاهده می‌کنید.\n\nورودی `ignore_date_validation=True` برای وقتی است که از اینکه روز شروع و پایان حتما روز معاملاتی هستند اطمینان ندارید.\n\nورودی `diff_orderbook=True` برای زمانی است که میخواهید خروجی تا حد امکان خام‌تری دریافت کنید. این خروجی سریع‌تر دریافت می‌شود. دیتافریم خروجی فقط شامل تغییرات `orderbook` است و در یک لحظه مشخص صراحتا وضعیت آن را مشخص نمیکند.\n\nبرای متوالی گرفتن و حذف آپشن async میتوانید `async_requests=False` قرار دهید ولی توجه داشته باشید سرعت دریافت داده ها کاهش می‌یابد.\n\n```python\nsymbol = \"خساپا\"\nstart_date = datetime.date(2023, 3, 1)\nend_date = datetime.date(2023, 4, 4)\n\ndf_dict = get_orderbook(\n        symbol,\n        start_date=start_date,\n        end_date=end_date,\n        diff_orderbook=False,\n        ignore_date_validation=True,\n        to_csv=True,\n        async_requests=True,\n    )\n```\nفرمت خروجی یک دیکشنری با key تاریخ روز و value دیتافریم آن روز است.\n\n### دانلود تاریخچه جزئیات معاملات\n\nاین تابع جزئیات معاملات را برای یک نماد و محدوده تاریخی مشخص شده بازیابی می‌کند. این امکان را به شما می‌دهد تا اطلاعات را در بازه زمانی مشخص شده به صورت مجموعه‌ای از فریم‌های داده Pandas دریافت کنید و این نتایج را به صورت فایل‌های CSV ذخیره کنید. با استفاده از این تابع می‌توانید داده‌های بازار را به شکل timeframe درون‌روزانه یا tick data دریافت کنید.\nپارامترها\n```\nsymbol_name (str): نام نماد برای دریافت جزئیات معاملات.\nstart_date (datetime.date): تاریخ شروع جزئیات معاملات.\nend_date (Optional[datetime.date]): تاریخ پایان جزئیات معاملات. اگر ارائه نشود، تاریخ شروع استفاده می‌شود.\nto_csv (bool): نشان می‌دهد که آیا نتایج به صورت فایل‌های CSV ذخیره شوند یا خیر. پیش‌فرض False است.\nbase_path (Optional[str]): مسیر پایه که فایل‌های CSV در آن ذخیره می‌شوند. اگر ارائه نشود، مسیر کنونی استفاده می‌شود.\ntimeframe (Optional[str]): بازه زمانی برای تجمیع داده‌ها. گزینه‌های معتبر شامل \"30s\"، \"1m\"، \"5m\"، \"10m\"، \"15m\"، \"30m\" و \"1h\" هستند. پیش‌فرض None است که به معنی دریافت tick data است.\naggregate (bool): نشان می‌دهد آیا داده‌ها را به یک DataFrame تجمیع شوند یا خیر. پیش‌فرض False است.\n```\n\n#### نمونه استفاده:\n\n```python\nimport pytse_client as tse\nfrom datetime import date\n\nstart_date = date(2023, 3, 19)\nend_date = date(2023, 4, 22)\nsymbol = \"اهرم\"\n\ndf = tse.get_trade_details(\n    symbol, start_date, end_date, to_csv=True, aggregate=True, timeframe='1m'\n)\n```\n### دانلود سابقه معاملات حقیقی و حقوقی به صورت مجزا\n\nبرای دانلود سابقه معاملات حقیقی و حقوقی برای تمامی نمادها می‌توان از تابع زیر استفاده کرد\n\n\u003cdiv dir=\"ltr\"\u003e\n\n```python\nfrom pytse_client import download_client_types_records\n\nif __name__ == '__main__':\n    records_dict = download_client_types_records(\"all\")\n    print(records_dict[\"فولاد\"])\n\n# Output\ndate         individual_buy_count  ... individual_ownership_change\n\n2020-09-01                36298  ...                   -691857.0\n2020-08-31                58185  ...                  83789408.0\n2020-08-26                  461  ...                  21647730.0\n2020-08-25                 1248  ...                  14716846.0\n2020-08-24                38291  ...                -238454702.0\n...                         ...  ...                         ...\n2008-12-02                    7  ...                    -10000.0\n2008-12-01                    8  ...                         0.0\n2008-11-30                   10  ...                    -12781.0\n2008-11-29                  116  ...                   4596856.0\n2008-11-26                   14  ...                    -20000.0\n\n[2518 rows x 17 columns]\n\n```\n\n\u003c/div\u003e\n\nمشابه تابع قبلی می‌توان نتایج را ذخیره کرد\n\n\u003cdiv dir=\"ltr\"\u003e\n\n```python\nfrom pytse_client import download_client_types_records\n\nif __name__ == '__main__':\n    # Records are saved as a .csv file with the same name of ticer's\n    records = download_client_types_records(\"فولاد\", write_to_csv=True)\n```\n\n\u003c/div\u003e\n\n### ماژول Ticker\n\nاین ماژول برای کار با دیتای یک سهم خاص هست و با گرفتن نماد اطلاعات موجود رو میده\n\nبرای مثال:\n\n\u003cdiv dir=\"ltr\"\u003e\n\n```python\nimport pytse_client as tse\n\ntse.download(symbols=\"نوری\", write_to_csv=True)  # optional\nticker = tse.Ticker(\"نوری\")\n\nprint(ticker.history)  # سابقه قیمت سهم\nprint(ticker.client_types)  # حقیقی حقوقی\nprint(ticker.title)  # نام شرکت\nپتروشيمي نوري (نوري)\nprint(ticker.url)  # آدرس صفحه سهم\nhttp://tsetmc.com/Loader.aspx?ParTree=151311\u0026i=19040514831923530\nprint(ticker.group_name)  # نام گروه\nمحصولات شيميايي\nprint(ticker.fiscal_year)  # سال مالی\n12/29\nprint(ticker.eps)  # EPS\n16442.0\nprint(ticker.p_e_ratio)  # P/E\n6.705388638851721\nprint(ticker.group_p_e_ratio)  # group P/E\n8.24\nprint(ticker.nav)  # NAV خالص ارزش دارایی‌ها ویژه صندوق‌ها می‌باشد\n112,881\nprint(ticker.nav_date)  # last date of NAV تاریخ بروزرسانی خالص ارزش دارایی‌ها ویژه صندوق‌ها می‌باشد\n1400/7/25 13:58:00\nprint(ticker.psr)  # PSR این نسبت ویژه شرکت‌های تولیدی است\n71483.0238888889\nprint(ticker.p_s_ratio)  # P/S این نسبت ویژه شرکت‌های تولیدی است\n1.5423242331125966\nprint(ticker.base_volume)  # حجم مبنا\n918780.0\nprint(ticker.state)  # وضعیت نماد\nمجاز\nprint(ticker.last_price)  # آخرین معامله\n109940\nprint(ticker.adj_close)  # قیمت پایانی\n110250\nprint(ticker.yesterday_price)  # قیمت دیروز\n106800\nprint(ticker.open_price)  # قیمت اولین معامله\n108200\nprint(ticker.high_price)  # قیمت حداکثر\n111830\nprint(ticker.low_price)  # قیمت حداقل\n108200\nprint(ticker.count)  # تعداد معاملات\n3934\nprint(ticker.volume)  # حجم معاملات\n2602437\nprint(ticker.value)  # ارزش معاملات\n286919407590\nprint(ticker.last_date)  # تاریخ آخرین اطلاعات قیمت پایانی ناشی از تغییرات شرکتی و معاملات\n2021-11-01 12:29:54\nprint(ticker.flow)  # عنوان بازار\nبورس\nprint(ticker.sta_max)  # حداکثر قیمت مجاز\n115760.0\nprint(ticker.sta_min)  # حداقل قیمت مجاز\n104740.0\nprint(ticker.min_week)  # حداقل قیمت هفته اخیر\n104500.0\nprint(ticker.max_week)  # حداکثر قیمت هفته اخیر\n111830.0\nprint(ticker.min_year)  # حداقل قیمت بازه سال\n48320.0\nprint(ticker.max_year)  # حداکثر قیمت بازه سال\n197000.0\nprint(ticker.month_average_volume)  # میانگین حجم ماه\n3865804\nprint(ticker.float_shares)  # درصد سهام شناور\n10.0\nprint(ticker.best_supply_price)  # قیمت بهترین تقاضا\n109960\nprint(ticker.best_supply_vol)  # حجم بهترین تقاضا\n8296\nprint(ticker.best_demand_price)  # قیمت بهترین عرضه\n109920\nprint(ticker.best_demand_vol)  # حجم بهترین عرضه\n3620\nprint(ticker.total_shares)  # تعداد سهام\nprint(ticker.market_cap) # ارزش بازار شرکت\nprint(ticker.shareholders)  # اطلاعات سهام‌داران عمده\nprint(ticker.get_shareholders_history())) # تاریخچه‌ی سهام‌داران عمده\nprint(ticker.get_trade_details())  # ریز معاملات روز جاری\nprint(ticker.get_ticker_real_time_info_response()) # اطلاعات لحظه‌ای مانند قیمت و پیشنهادات خرید و فروش\n```\n\n\u003c/div\u003e\nبرای دریافت قیمت‌های تعدیل شده هم میشه از این کد استفاده کرد\n\n\u003cdiv dir=\"ltr\"\u003e\n\n```python\nimport pytse_client as tse\n\nticker = tse.Ticker(symbol=\"بركت\", adjust=True)\n```\n\n\u003c/div\u003e\n\nبرای استفاده لازم نیست حتما تابع دانلود صدا زده بشه.\nاگر این کد رو بدون دانلود کردن سهم استفاده کنید خودش اطلاعات سهم رو از سایت میگیره،\nاما اگر قبل از اون از دانلود استفاده کرده باشید\nبه جای گرفتن از اینترنت اطلاعات رو از روی فایل میخونه که سریع تر هست\n\n##### نکته ۱\n\nطبق تجربه‌ ای که داشتم چون گاهی اوقات سایت بورس مدت زیادی طول میکشه تا اطلاعات رو بفرسته یا بعضی مواقع نمی‌فرسته بهتر هست که اول تابع دانلود رو استفاده کنید برای سهم‌هایی که لازم هست و بعد با دیتای اون‌ها کار کنید.\n\nدر صورت نیاز به اطلاعات لحظه‌ای نماد بهتر است کل [اطلاعات لحظه‌ای سهام](#اطلاعات-لحظهای-سهام) را یکجا دریافت کنید تا هم دیتای دریافتی مربوط به یک زمان باشند و هم از ارسال درخواست‌های مکرر به سایت بورس جلوگیری شود.\n\n##### نکته ۲\n\nبعضی از ویژگی‌ها برای همه‌ی سهم‌ها در دسترس نیست. برای مثال بعضی از سهم‌ها دارای آخرین قیمت یا پی به ای یا ای پی اس نیستند. مقدار این ویژگی‌ها در صورت نبودن برابر با `None` خواهد بود. پس باید در برنامه خود اینکه این مقادیر وجود دارند را بررسی کنید.\n\n#### اطلاعات نماد‌های حذف شده\n\nتعدادی از نماد‌ها توی سایت به شکل حذف شده هستند. برای گرفتن دیتای این نماد‌ها از ماژول تیکر استفاده کنید.\nبرای مثال جهت دسترسی به دیتای نماد حذف شده خصدرا، اندیس آن را از آدرس نماد در سایت بورس بگیرید\nhttp://www.tsetmc.com/Loader.aspx?ParTree=151311\u0026i=25165947991415904\n\n\u003cdiv dir=\"ltr\"\u003e\n\n```python\nimport pytse_client as tse\n\nticker = tse.Ticker(\"\", index=\"25165947991415904\")\n```\n\n\u003c/div\u003e\n\nمقدار ‍`index` را با مقدار جلوی `i=` جایگزین میکنیم.\n\n#### اطلاعات حقیقی و حقوقی\n\nاطلاعات خرید و فروش حقیقی و حقوقی سهام رو میشه از طریق `ticker.client_types` گرفت این اطلاعات یه DataFrame شامل اطلاعات موجود در تب حقیقی حقوقی(تب بنفشی که در این [صفحه](http://www.tsetmc.com/Loader.aspx?ParTree=151311\u0026i=778253364357513) هست) سهم هست:\n\n\u003cdiv dir=\"ltr\"\u003e\n\n```\ndate : تاریخ\nindividual_buy_count : تعداد معاملات خرید حقیقی\ncorporate_buy_count : تعداد معلاملات خرید حقوقی\nindividual_sell_count : تعداد معاملات فروش حقیقی\ncorporate_sell_count : تعداد معلاملات فروش حقوقی\nindividual_buy_vol : حجم خرید حقیقی\ncorporate_buy_vol : حجم خرید حقوقی\nindividual_sell_vol : حجم فروش حقیقی\ncorporate_sell_value : حجم فروش حقوقی\nindividual_buy_mean_price : قیمت میانگین خرید حقیقی\nindividual_sell_mean_price : قیمت میانگین فروش حقیقی\ncorporate_buy_mean_price : قیمت میانگین خرید حقوقی\ncorporate_sell_mean_price : قیمت میانگین فروش حقوقی\nindividual_ownership_change : تغییر مالکیت حقوقی به حقیقی\n```\n\n\u003c/div\u003e\n\n#### سهامداران عمده\n\nسهام‌داران عمده اطلاعات داخل این [صفحه](http://tsetmc.com/Loader.aspx?Partree=15131T\u0026c=IRO1BMLT0007) هست.\nاین اطلاعات رو میشه با `shareholders` گرفت که یک DataFrame هست.\n\n\u003cdiv dir=\"ltr\"\u003e\n\n```python\nimport pytse_client as tse\n\nticker = tse.Ticker(\"وبملت\")\nprint(ticker.shareholders)  # اطلاعات سهام‌داران عمده\n\n# Output\n change   percentage       share                                 shareholder\n0   دولت جمهوري اسلامي ايران                    23,114,768,760  11.160     0\n1   صندوق تامين آتيه كاركنان بانك ملت           13,353,035,330  6.440      0\n2   صندوق سرمايه گذاري واسطه گري مالي يكم       11,748,764,647  5.670      0\n3   شركت پتروشيمي فن آوران-سهامي عام-           9,253,327,080   4.460      0\n4   شركت گروه مالي ملت-سهام عام-                8,933,698,834   4.310      0\n5   صندوق سرمايه گذاري.ا.بازارگرداني ملت     8,395,500,914   4.050      0\n6   شركت سرمايه گذاري صباتامين-سهامي عام-       7,659,597,269   3.690      0\n7   شركت تعاوني معين آتيه خواهان                4,561,801,327   2.200      0\n8   شركت س اتهران س.خ-م ك م ف ع-                4,278,903,677   2.060      0\n9   شركت گروه توسعه مالي مهرآيندگان-سهامي عام-  4,161,561,525   2.000      0\n10  شركت س اخراسان رضوي س.خ-م ك م ف ع-          3,442,236,423   1.660      0\n11  شركت س افارس س.خ-م ك م ف ع-                 2,593,956,288   1.250      0\n12  شركت س اخوزستان س.خ-م ك م ف ع-              2,526,080,803   1.220      0\n13  شركت شيرين عسل-سهامي خاص-                   2,496,936,881   1.200      0\n14  شركت سرمايه گذاري ملي ايران-سهامي عام-      2,423,674,676   1.170      0\n15  شركت س ااصفهان س.خ-م ك م ف ع-               2,274,221,331   1.090      0\n```\n\n\u003c/div\u003e\n\n#### تاریخچه‌ی سهام‌داران عمده\n\nبا استفاده از تابع get_shareholders_history میشه تاریخچه اطلاعات سهام‌داران عمده رو گرفت:\n\n**رفع خطای asyncio.run() cannot be called from a running event loop**\nدر صورتی که این خطا رو گرفتید به این معنی هست که تابع `get_shareholders_history` در یک تابع `async` داره اجرا میشه.\nبرای رفع اون کافیه که تابع `get_shareholders_history_async` رو استفاده کنید مطابق مثال پایین تکه کد دوم.\n\n\u003cdiv dir=\"ltr\"\u003e\n\n```python\nimport pytse_client as tse\n\nticker = tse.Ticker(\"وبملت\")\nticker.get_shareholders_history(\n    from_when=datetime.timedelta(days=90),  # تعداد روز‌های گذشته که مقدار پیشفرض ۹۰ روز است\n    to_when=datetime.datetime.now(),  # تا چه تاریخی اطلاعات گرفته شود که پیشفرض امروز است\n    only_trade_days=True,  # فقط روز‌های معاملاتی که پیشفرض بله است\n)\n\n# در صورتی که میخواهید تابع\n# async\n# رو استفاده کنید\nawait ticker.get_shareholders_history_async(\n    from_when=datetime.timedelta(days=90),  # تعداد روز‌های گذشته که مقدار پیشفرض ۹۰ روز است\n    to_when=datetime.datetime.now(),  # تا چه تاریخی اطلاعات گرفته شود که پیشفرض امروز است\n    only_trade_days=True,  # فقط روز‌های معاملاتی که پیشفرض بله است\n)\n\n```\n\n\u003c/div\u003e\nخروجی این تابع یک دیتا فریم حاوی دیتای زیر است:\n\u003cdiv dir=\"ltr\"\u003e\n\n```\n,date,shareholder_id,shareholder_shares,shareholder_percentage,shareholder_instrument_id,shareholder_name,change\n0,2021-08-30 17:01:23.037957,273,2910355428.0,32.19,IRO1RSAP0000,شركت ايراني توليداتومبيل-سايپا-,1\n1,2021-08-30 17:01:23.037957,406,975144471.0,10.78,IRO1RSAP0000,شركت سايپا,1\n2,2021-08-30 17:01:23.037957,50264,454000000.0,5.02,IRO1RSAP0000,شركت ايراني توليداتومبيل سايپا-سهامي عام-,1\n3,2021-08-30 17:01:23.037957,42636,409843922.0,4.53,IRO1RSAP0000,شركت سرمايه گذاري وتوسعه صنعتي نيوان ابتكارس.ع,1\n4,2021-08-30 17:01:23.037957,46966,116002189.0,1.28,IRO1RSAP0000,BFMصندوق.س.ا.بازارگرداني سهم آشنايكم,1\n5,2021-08-31 17:01:23.037957,273,2910355428.0,32.19,IRO1RSAP0000,شركت ايراني توليداتومبيل-سايپا-,1\n6,2021-08-31 17:01:23.037957,406,975144471.0,10.78,IRO1RSAP0000,شركت سايپا,1\n7,2021-08-31 17:01:23.037957,50264,454000000.0,5.02,IRO1RSAP0000,شركت ايراني توليداتومبيل سايپا-سهامي عام-,1\n8,2021-08-31 17:01:23.037957,42636,409843922.0,4.53,IRO1RSAP0000,شركت سرمايه گذاري وتوسعه صنعتي نيوان ابتكارس.ع,1\n9,2021-08-31 17:01:23.037957,46966,116002189.0,1.28,IRO1RSAP0000,BFMصندوق.س.ا.بازارگرداني سهم آشنايكم,1\n10,2021-09-01 17:01:23.037957,273,2910355428.0,32.19,IRO1RSAP0000,شركت ايراني توليداتومبيل-سايپا-,1\n11,2021-09-01 17:01:23.037957,406,975144471.0,10.78,IRO1RSAP0000,شركت سايپا,1\n12,2021-09-01 17:01:23.037957,50264,454000000.0,5.02,IRO1RSAP0000,شركت ايراني توليداتومبيل سايپا-سهامي عام-,1\n13,2021-09-01 17:01:23.037957,42636,409843922.0,4.53,IRO1RSAP0000,شركت سرمايه گذاري وتوسعه صنعتي نيوان ابتكارس.ع,1\n14,2021-09-01 17:01:23.037957,46966,116002189.0,1.28,IRO1RSAP0000,BFMصندوق.س.ا.بازارگرداني سهم آشنايكم,1\n\n```\n\n\u003c/div\u003e\n\n\u003cdiv id=\"qa\" /\u003e\nگرفتن این دیتا کار زمان بری هست (با توجه به تعداد روزی که لازم دارید) و سریع کردن کار با کد به راحتی امکان پذیر نیست. سعی نکنید با همزمان اجرا کردن این تابع برای سهم‌های مختلف روند رو سریع‌تر کنید چون سایت ip رو بلاک میکنه.\nاگر موقع اجرای کد پیغام زیر را به تعداد زیاد گرفتید (مثلا هر ثانیه این پیغام اومد) یعنی آیپی شما توسط سایت بورس بلاک شده و چند دقیقه صبر کنید و دوباره ادامه بدید.\n\u003cdiv dir=\"ltr\"\u003e\n\n```\nRetrying pytse_client.ticker.ticker.Ticker._get_ticker_daily_info_page_response in 1.3127419515957892 seconds as it raised ClientResponseError: 500, message='Internal Server Error', url=URL('http://cdn.tsetmc.com/Loader.aspx?ParTree=15131P\u0026i=56574323121551263\u0026d=20210220').\n```\n\n\u003c/div\u003e\n\n#### تاریخچه‌ تعداد سهام\nبرای گرفتن این اطلاعات از تابع `get_total_shares_history_async`\nاستفاده کنید.\n\nخروجی این تابع یک دیتافریم با دو ستون \ndate, total_shares\nاست.\n\nتوجه داشته باشید که اجرا کردن این تابع به علت `async` بودن متفاوت از بقیه دستورات است.\nبرای اطلاعات بیشتر درباره‌ی این نوع توابع [این ویدیو](https://www.youtube.com/watch?v=EHHxGAfcZWw) را ببینید\n\nدر صورتی که در کد خود تابع async ندارید:\n\n\u003cdiv dir=\"ltr\"\u003e\n\n```python\nimport asyncio\nimport pytse_client as tse\nticker = tse.Ticker(\"وبملت\")\n\nresult = asyncio.run(ticker.get_total_shares_history_async(\n    from_when=datetime.timedelta(days=90),  # تعداد روز‌های گذشته که مقدار پیشفرض ۶۰ روز است\n    to_when=datetime.datetime.now(),  # تا چه تاریخی اطلاعات گرفته شود که پیشفرض امروز است\n    only_trade_days=True,  # فقط روز‌های معاملاتی که پیشفرض بله است\n)\n```\n\n\u003c/div\u003e\nاگر در برنامه‌ی خود کد async دارید:\nاین تابع را به این شکل اجرا کنید\n\n\u003cdiv dir=\"ltr\"\u003e\n\n```python\nimport pytse_client as tse\nticker = tse.Ticker(\"وبملت\")\n\nresult = await ticker.get_total_shares_history_async(\n    from_when=datetime.timedelta(days=90),  # تعداد روز‌های گذشته که مقدار پیشفرض ۶۰ روز است\n    to_when=datetime.datetime.now(),  # تا چه تاریخی اطلاعات گرفته شود که پیشفرض امروز است\n    only_trade_days=True,  # فقط روز‌های معاملاتی که پیشفرض بله است\n)\n```\n\n\u003c/div\u003e\n\n#### شناور سهم\n\nبرای مثال میشه با استفاده از دیتای سهامداران عمده، شناوری سهم رو حساب کرد:\n\n\u003cdiv dir=\"ltr\"\u003e\n\n```python\nimport pytse_client as tse\n\nticker = tse.Ticker(\"وبملت\")\n\nprint(ticker.shareholders.percentage.sum())  # جمع درصد سهام‌داران عمده\n53.63\n\nprint(100 - ticker.shareholders.percentage.sum())  # درصد سهام شناور\n46.37\n```\n\n\u003c/div\u003e\n\n#### اطلاعات لحظه‌ای سهام\n\nاز طریق تابع `get_ticker_real_time_info_response` میشه اطلاعات لحظه‌ای سهام رو گرفت.\nدر صورتی که هنگام گرفتن اطلاعات لحظه‌ای وضعیت سهام در حالت ممنوع متوقف باشد یا نماد قدیمی باشد اطلاعات لحظه‌ای موجود نیست و با ارور مواجه خواهید شد که باید به درستی هندل شود.\n\nبرای گرفتن اطلاعات لحظه‌ای به صورت فایل csv می‌توانید از تابع زیر استفاده کنید:\n\n\u003cdiv dir=\"ltr\"\u003e\n\n```python\ndf = ticker_real_time_data_to_csv(ticker)\ndf.to_csv(\"test.csv\") # برای ذخیره کردن در فایل\n```\n\u003c/div\u003e\nنمونه‌ی استفاده\n\n\u003cdiv dir=\"ltr\"\u003e\n\n```python\nimport pytse_client as tse\n\nticker = tse.Ticker(\"وبملت\")\ntry:\n    real_time_data = ticker.get_ticker_real_time_info_response()\nexcept RuntimeError: # هندل کردن ارور در صورت وجود نداشتن اطلاعات لحظه‌ای\n    print(\"cannot get realtime data\")\n\nprint(real_time_data.buy_orders) # پیشنهادات خرید\nprint(real_time_data.sell_orders) # پیشنهادات فروش\nprint(real_time_data.best_supply_price)  # قیمت بهترین تقاضا\nprint(real_time_data.best_supply_vol)  # حجم بهترین تقاضا\nprint(real_time_data.best_demand_price)  # قیمت بهترین عرضه\nprint(real_time_data.best_demand_vol)  # حجم بهترین عرضه\nprint(real_time_data.state)  # وضعیت نماد\nprint(real_time_data.last_price)  # قیمت آخرین معامله\nprint(real_time_data.adj_close)  # قیمت پایانی\nprint(real_time_data.yesterday_price)  # قیمت دیروز\nprint(real_time_data.open_price)  # قیمت اولین معامله\nprint(real_time_data.high_price)  # قیمت حداکثر\nprint(real_time_data.low_price)  # قیمت حداقل\nprint(real_time_data.count)  # تعداد معاملات\nprint(real_time_data.volume)  # حجم معاملات\nprint(real_time_data.value)  # ارزش معاملات\nprint(real_time_data.last_date)  # آخرین اطلاعات قیمت ناشی از تغییرات شرکتی و معاملات\n\n# پیشنهادات فروش\nfor sell_order in real_time_data.sell_orders:\n    print(sell_order.volume, sell_order.count, sell_order.price)\n\n# پیشنهادات خرید\nfor buy_order in real_time_data.buy_orders:\n    print(buy_order.volume, buy_order.count, buy_order.price)\n\n# اطلاعات خرید و فروش حقیقی و حقوقی\nprint(real_time_data.individual_trade_summary.buy_count)\nprint(real_time_data.individual_trade_summary.buy_vol)\nprint(real_time_data.individual_trade_summary.sell_count)\nprint(real_time_data.individual_trade_summary.sell_vol)\nprint(real_time_data.corporate_trade_summary.buy_count)\nprint(real_time_data.corporate_trade_summary.buy_vol)\nprint(real_time_data.corporate_trade_summary.sell_count)\nprint(real_time_data.corporate_trade_summary.sell_vol)\n```\n\n\u003c/div\u003e\n\n#### ریز معاملات سهام\n\nاز طریق تابع `get_trade_details` می‌توان ریز معاملات آخرین روز معاملاتی سهام را گرفت:\n\n\u003cdiv dir=\"ltr\"\u003e\n\n```python\nimport pytse_client as tse\n\nticker = tse.Ticker(\"نوری\")\ntrade_details = ticker.get_trade_details()\nprint(trade_details)\n\n# Output\n          date  volume     price\n0     09:00:20   10000  111900.0\n1     09:00:20    4480  111900.0\n2     09:00:20    3171  111900.0\n3     09:00:20    1647  111900.0\n4     09:00:20    1101  111900.0\n       ...     ...       ...\n6478  12:29:57    1163  116000.0\n6479  12:29:57    2159  116000.0\n6480  12:29:57     795  116000.0\n6481  12:29:58     257  116000.0\n6482  12:29:59     601  116000.0\n```\n\n\u003c/div\u003e\n\n\n### تمامی اطلاعات موجود برای فیلترنویسی\n\nدر بخش دیده‌بان بازار امکان فیلترنویسی به زبان جاوااسکریپت وجود دارد. یکی از اطلاعات مهمی که معامله‌گران معمولا با اسفاده از آن فیلترنویسی می‌کنند آمارهای کلیدی سهام است که شامل تمامی موارد ذکر شده در \n[آمارهای کلیدی](./pytse_client/ticker_statisticals/README.md)\nاست.\n\nهمچنین تمامی اطلاعات ارائه شده در مورد اطلاعات حقیقی حقوقی های سهام هم که در ادامه آمده است میتوانید دریافت کنید.\n\n```sh\n\"numof_individual_buy\", \"numof_corporate_buy\",\n\"vol_individual_buy\", \"vol_corporate_buy\",\n\"numof_individual_sell\", \"numof_corporate_sell\",\n\"vol_individual_sell\", \"vol_corporate_sell\"\n```\n\nهمچنین همه اطلاعات ارائه شده توسط دیده بان بازار را هم می توانید برای تمامی سهام دریافت کنید. در ادامه مشاهده میکنید.\n\n```sh\n\"index\", \"code\", \"symbol\", \"name\", \"last_changed\", \"open_price\",\n\"adj_closing_price\", \"last_price\", \"number_of_trans\",\n\"volume_of_trans\", \"value_of_trans\", \"min_price\", \"max_year\",\n\"yesterday_price\", \"EPS\", \"base_volume\", \"group_number\", \"max_price_allowed\", \"min_price_allowed\", \"number_of_stocks\"\n```\n\nدر واقع از دیده بان بازار دیتاهای زیر قابل دریافت بود که به عنوان نمونه قرار میدهم ولی برخی از دیتاها برای توسعه دهندگان پکیج قابل فهم نبود(آنهایی که با `?` در زیر مشخص شده اند) که در صورت علاقه مندی میتوانید با اطلاع رسانی کاربرد آن ها به ما در توسعه پکیج کمک کنید.\n\n```sh\n'71957984642204570', # id\n'IRO7APTP0001', # code\n'شپترو', # symbol\n'پتروشيمي آبادان', # name\n'122931', # last changed (time 12:29:31)\n'2470', # open price\n'2438', # adj_closing price\n'2436', # last price\n'861', # number of trans (daily)\n'29225934', # volume of trans (daily)\n'71250969784', # value of trans (daily)\n'2436', # min price (daily)\n'2500', # max price (daily)\n'2511', # yesterday price\n'-43', # EPS\n'4000000', # base volume\n'3423', # visit count\n'4', # flow - بازار\n'44', # group number\n'2586.00', # max allowed (daily)\n'2436.00', # min allowed (daily)\n'10000000000', # number of stocks\n'309' # yval - نوع نماد\n```\n\nمقدار flow بیانگر نوع بازار می باشد:\n- 0 : عمومی - مشترک بین بورس و فرابورس\n- 1 : بورس\n- 2 : فرابورس\n- 3 : مشتقه\n- 4 : پایه فرابورس\n- 5 : پایه فرابورس (منتشر نمی شود)\n- 6 : بورس انرژی\n- 7 : بورس کالا\n\nمقدار YVal بیانگر نوع نماد می‌باشد. مثلا شاخص یا حق تقدم یا آتی و ... که می‌توانید لیست کامل آن را در سایت فناوری اطلاعات بورس مطالعه بفرمایید:\nhttps://tsetmc.com/StaticContent/WS-Instrument \n\nممکن است گاهی برخی از این اطلاعات موجود نباشند که باید در برنامه از وجود آن برای سهام مورد نظر اطمینان پیدا کنید.\nالبته باید دقت داشت اگر برخی از این اطلاعات گاهی برای برخی نمادها موجود نبود در خود دیده‌بان بازار هم موجود نبوده است.\n\nدر حال حاضر امکان دریافت کل اطلاعات بروز شده و لحظه‌ای مربوط به فیلترنویسی با استفاده از تکه کد زیر موجود است.\n\n\n\u003cdiv dir=\"ltr\"\u003e\n\n```python\nfrom pytse_client import get_stats\n\nkey_stats = get_stats(base_path=\"hello\", to_csv=True)\n\n# Output\n\n   ave_numof_buyer_last_12_month  ave_numof_buyer_last_3_month  ave_numof_corporation_buyer_last_12_month  ...  symbol                          name            index\n0                          610.0                         345.0                                        1.0  ...   وسپهر  سرمایه گذاری مالی سپهرصادرات  114312662654155\n1                          816.0                         381.0                                        1.0  ...    شصدف                صنعتی دوده فام  204092872752957\n2                           92.0                          76.0                                        0.0  ...     فسا                  پتروشیمی فسا  318005355896147\n3                          298.0                         246.0                                        2.0  ...   فرآور          فرآوریموادمعدنیایران  408934423224097\n4                          407.0                         332.0                                        1.0  ...   سبزوا              سیمان لار سبزوار  611986653700161\n\n```\n\nهمانطور که در مثال(ناقص به دلیل کمبود جا) بالا می بینید خروجی این دستور یک pandas dataframe است که **آمارهای کلیدی به علاوه اطلاعات حقیقی و حقوقی و همچنین اطلاعات دیده بان بازار** تمامی نمادهایی که در پکیج معتبر هستند و دیده‌بان در اختیار کاربران قرار می‌دهد را در خود دارد.\n\nبه صورت همزمان اطلاعات در ‍‍`hello/key_stats.csv` ذخیره می‌شود.\nدر صورتی که نمی‌خواهید خروجی csv ساخته شود کافی است که `to_csv=False` قرار دهید.\nهمینطور در صورت خالی گذاشتن `base_path` به جای آن `stats_data/stats.csv` استفاده می‌شود.\n\n\n\u003c/div\u003e\n\n### گرفتن تمام اطلاعات تاریخی یا لحظه‌ای نماد به صورت CSV\n\nبرای استفاده راحت‌تر از اطلاعات لحظه‌ای یا تاریخی و یا درست کردن فایل برای نرم افزارهای دیگه توابعی وجود داره که تمام اطلاعات نماد رو در یک فایل برمیگردونه.\n\nاطلاعات تاریخی برگشته شامل اطلاعات خرید و فروش حقیقی و حقوقی و تاریخچه سهم هست که در هر سطر با ذکر تاریخ وجود دارند\nاطلاعات لحظه‌ای تنها یک سطر هست و شامل اطلاعات تابلو هست.\n\nتوجه کنید این اطلاعات چیزی بیشتر از توابع موجود در پکیج ندارند و صرفا برای راحتی کار کاربران توسعه داده شده‌اند.\n\u003cdiv dir=\"ltr\"\u003e\n\n```python\nticker = Ticker(\"وبملت\")\nhistorical_data = export_ticker_history_as_csv(ticker)\nreal_time_data = ticker_real_time_data_to_csv(ticker)\n\n# برای نوشتن این اطلاعات به شکل فایل csv\n\nhistorical_data.to_csv(\"history.csv\")\nreal_time_data.to_csv(\"realtime.csv\")\n\n```\n\n\u003c/div\u003e\n\n\n\n## کامیونیتی\n\nاگر درباره پکیج یا استفاده از اون سوالی دارید میتونید توی سرور دیسکورد بپرسید.\n\nhttps://discord.gg/ampPDKHpVv\n\n\u003cdiv id=\"education\" /\u003e\n\n## منابع آموزشی\nلیست زیر پست و یا دوره‌های آموزشی است که به شما کمک می‌کند استفاده از پایتون و پکیج pytse را بیاموزید\n\n- https://virgool.io/@sh.hooshyari/%D8%AF%D8%B1%DB%8C%D8%A7%D9%81%D8%AA-%D8%A7%D8%B7%D9%84%D8%A7%D8%B9%D8%A7%D8%AA-%D8%A8%D9%88%D8%B1%D8%B3-%D8%AA%D9%87%D8%B1%D8%A7%D9%86-%D8%A8%D8%A7-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-mgaev4iytip6\n- https://github.com/sfmqrb/Eco-Finance-Course\n\n\u003cdiv id=\"credits\" /\u003e\n\n## الهام گرفته از:\n\n- [tehran_stocks](https://github.com/ghodsizadeh/tehran-stocks)\n- [tse-index](https://github.com/alised/tse-index)\n- [yfinance](https://github.com/ranaroussi/yfinance)\n\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fglyphack%2Fpytse-client","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fglyphack%2Fpytse-client","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fglyphack%2Fpytse-client/lists"}