Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

آمار های کلیدی #163

Merged
merged 25 commits into from
May 15, 2022
Merged
Show file tree
Hide file tree
Changes from 17 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -25,4 +25,6 @@ dmypy.json
*.csv
.vscode/settings.json

my.py
my.py
key_stats_data
my.txt
75 changes: 65 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,24 +23,30 @@
- [دانلود سابقه شاخص های مالی](#دانلود-سابقه-شاخص-های-مالی)
- [دانلود سابقه معاملات حقیقی و حقوقی به صورت مجزا](#دانلود-سابقه-معاملات-حقیقی-و-حقوقی-به-صورت-مجزا)
- [ماژول Ticker](#ماژول-ticker)
- [نکته ۱](#نکته-۱)
- [نکته ۲](#نکته-۲)
- [نکته ۱](#نکته-۱)
- [نکته ۲](#نکته-۲)
- [اطلاعات نماد‌های حذف شده](#اطلاعات-نمادهای-حذف-شده)
- [اطلاعات حقیقی و حقوقی](#اطلاعات-حقیقی-و-حقوقی)
- [سهامداران عمده](#سهامداران-عمده)
- [شناور سهم](#شناور-سهم)
- [تاریخچه‌ی سهام‌داران عمده](#تاریخچهی-سهامداران-عمده)
- [اطلاعات لحظه‌ای سهام](#اطلاعات-لحظهای-سهام)
- [ریز معاملات سهام](#ریز-معاملات-سهام)
- [کامیونیتی](#کامیونیتی)
- [پکیج‌های مورد نیاز:](#پکیجهای-مورد-نیاز)
- [الهام گرفته از:](#الهام-گرفته-از)
- [آمارهای کلیدی نمادها](#آمارهای-کلیدی-سهام)
- [کامیونیتی](#کامیونیتی)
- [پکیج‌های مورد نیاز:](#پکیجهای-مورد-نیاز)
- [الهام گرفته از:](#الهام-گرفته-از)

## قابلیت‌ها

- دریافت اطلاعات روزهای معاملاتی هر سهم و قابلیت ذخیره‌سازی
- قابلیت گرفتن اطلاعات یک سهام مانند گروه سهام و اطلاعات معاملات حقیقی و حقوقی
- دریافت اطلاعات تاریخی به صورت تعدیل‌شده و تعدیل نشده برای نمادها
- دریافت اطلاعات لحظه نمادها
- دریافت اطلاعات تاریخی شاخص‌های مالی
- قابلیت گرفتن اطلاعات یک سهم مانند گروه سهم و اطلاعات معاملات حقیقی و حقوقی
- دریافت اطلاعات فاندامنتال یک نماد شامل (EPS ,P/E و حجم مبنا)
- دریافت اطلاعات سهامداران عمده
- دریافت آمارهای کلیدی مربوط به فیلترنویسی برای نمادها
- دریافت ریزمعاملاتی آخرین روز معاملاتی نمادها

## نصب

Expand Down Expand Up @@ -570,15 +576,64 @@ print(trade_details)

</div>

#### کامیونیتی

### آمارهای کلیدی سهام

در بخش دیده‌بان بازار امکان فیلترنویسی به زبان جاوااسکریپت وجود دارد. یکی از اطلاعات مهمی که معامله‌گران معمولا با اسفاده از آن فیلترنویسی می‌کنند آمارهای کلیدی سهام است که شامل تمامی موارد ذکر شده در لینک زیر است.

[آمارهای کلیدی](./pytse_client/data/filter_data/README.md)

ممکن است گاهی برخی از این اطلاعات موجود نباشند که باید در برنامه کاربردی از وجود آن برای سهام مورد نظر اطمینان پیدا کنید.
البته باید دقت داشت اگر برخی از این اطلاعات گاهی برای برخی نمادها موجود نبود در خود دیده‌بان بازار هم موجود نبوده است.

در حال حاضر امکان دریافت کل اطلاعات بروز شده و لحظه‌ای آمارهای کلیدی با استفاده از تکه کد زیر موجود است.


<div dir="ltr">

```python
from pytse_client import get_aggregated_key_stats

key_stats = get_aggregated_key_stats(base_path="hello", to_json=True)

# Output

{
"114312662654155": {
"ave_val_trans_last_3_month": "33908281472",
.
.
.
"rank_numof_seller_last_12_month": "40",
"symbol": "وسپهر",
"name": "سرمایه گذاری مالی سپهرصادرات"
},
.
.
.
}

```

همانطور که در مثال(ناقص به دلیل کمبود جا) بالا می بینید خروجی این دستور یک دیکشنری است که آمارهای کلیدی تمامی نمادهایی که در پکیج معتبر هستند و دیده‌بان در اختیار کاربران قرار می‌دهد را در خود دارد.

به صورت همزمان اطلاعات در ‍‍`hello/key_stats.json` ذخیره می‌شود.
در صورتی که نمی‌خواهید خروجی جیسون ساخته شود کافی است که `to_json==False` قرار دهید.
همینطور در صورت خالی گذاشتن `base_path` به جای آن `key_stats_data/key_stats.json` استفاده می‌شود.


</div>


## کامیونیتی

اگر درباره پکیج یا استفاده از اون سوالی دارید میتونید توی سرور دیسکورد بپرسید.

https://discord.gg/ampPDKHpVv

<div id="required-packages" />

#### پکیج‌های مورد نیاز:
## پکیج‌های مورد نیاز:

- [Pandas](https://github.com/pydata/pandas)
- [Requests](http://docs.python-requests.org/en/master/)
Expand All @@ -587,7 +642,7 @@ https://discord.gg/ampPDKHpVv

<div id="credits" />

#### الهام گرفته از:
## الهام گرفته از:

- [tehran_stocks](https://github.com/ghodsizadeh/tehran-stocks)
- [yfinance](https://github.com/ranaroussi/yfinance)
Expand Down
1 change: 1 addition & 0 deletions pytse_client/__init__.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
from .download import download
from .download import download_client_types_records
from .download import download_financial_indexes
from .data import get_aggregated_key_stats
from .symbols_data import all_symbols
from .ticker import Ticker
1 change: 1 addition & 0 deletions pytse_client/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

FINANCIAL_INDEX_BASE_PATH = "financial_index_data"
DATA_BASE_PATH = "tickers_data"
KEY_STATS_BASE_PATH = "key_stats_data"
CLIENT_TYPES_DATA_BASE_PATH = "client_types_data"
SHAREHOLDERS_HISTORY_PATH = "shareholders_data"
pytse_dir = os.path.dirname(__file__)
Expand Down
1 change: 1 addition & 0 deletions pytse_client/data/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from .key_stats import get_aggregated_key_stats
93 changes: 93 additions & 0 deletions pytse_client/data/filter_data/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
در این بخش آمار کلیدی را در قالب یک نگاشت سه عضوی مشاهده می‌کنید.

| شماره | توضیحات | سمبل |
| ----- | ------------------------------------------------- | ------------------------------------------- |
| 1 | میانگین ارزش معاملات در 3 ماه گذشته | ave_val_trans_last_3_month |
| 2 | میانگین ارزش معاملات در 12 ماه گذشته | ave_val_trans_last_12_month |
| 3 | رتبه ارزش معاملات در 3 ماه گذشته | rank_val_trans_last_3_month |
| 4 | رتبه ارزش معاملات در 12 ماه گذشته | rank_val_trans_last_12_month |
| 5 | میانگین حجم معاملات در 3 ماه گذشته | ave_vol_trans_last_3_month |
| 6 | میانگین حجم معاملات در 12 ماه گذشته | ave_vol_trans_last_12_month |
| 7 | رتبه حجم معاملات در 3 ماه گذشته | rank_vol_trans_last_3_month |
| 8 | رتبه حجم معاملات در 12 ماه گذشته | rank_vol_trans_last_12_month |
| 9 | میانگین دفعات معاملات روزانه در 3 ماه گذشته | ave_numof_trans_last_3_month |
| 10 | میانگین دفعات معاملات روزانه در 12 ماه گذشته | ave_numof_trans_last_12_month |
| 11 | رتبه دفعات معاملات روزانه در 3 ماه گذشته | rank_numof_trans_last_3_month |
| 12 | رتبه دفعات معاملات روزانه در 12 ماه گذشته | rank_numof_trans_last_12_month |
| 13 | قیمت میانگین وزنی آخرین روز - بدون دخالت حجم مبنا | w_ave_price_last_day_normal |
| 14 | قیمت میانگین وزنی آخرین روز - با دخالت حجم مبنا | w_ave_price_last_day_base_vol |
| 15 | ارزش معاملات آخرین روز | val_trans_last_day |
| 16 | حجم معاملات آخرین روز | vol_trans_last_day |
| 17 | دفعات معاملات در آخرین روز | numof_trans_last_day |
| 18 | تعداد روزهای منفی در 3 ماه گذشته | numof_neg_days_last_3_month |
| 19 | تعداد روزهای منفی در 12 ماه گذشته | numof_neg_days_last_12_month |
| 20 | درصد روزهای منفی در 3 ماه گذشته | percent_neg_days_last_3_month |
| 21 | درصد روزهای منفی در 12 ماه گذشته | percent_neg_days_last_12_month |
| 22 | رتبه روزهای منفی در 3 ماه گذشته | rank_neg_days_last_3_month |
| 23 | رتبه روزهای منفی در 12 ماه گذشته | rank_neg_days_last_12_month |
| 24 | روزهای بدون معامله در 3 ماه گذشته | numof_notrade_days_last_3_month |
| 25 | روزهای بدون معامله در 12 ماه گذشته | numof_notrade_days_last_12_month |
| 26 | تعداد روزهای مثبت در 3 ماه گذشته | numof_pos_days_last_3_month |
| 27 | تعداد روزهای مثبت در 12 ماه گذشته | numof_pos_days_last_12_month |
| 28 | درصد روزهای مثبت در 3 ماه گذشته | percent_pos_days_last_3_month |
| 29 | درصد روزهای مثبت در 12 ماه گذشته | percent_pos_days_last_12_month |
| 30 | رتبه روزهای مثبت در 3 ماه گذشته | rank_pos_days_last_3_month |
| 31 | رتبه روزهای مثبت در 12 ماه گذشته | rank_pos_days_last_12_month |
| 32 | روزهای با معامله در 3 ماه گذشته | numof_trade_days_last_3_month |
| 33 | روزهای با معامله در 12 ماه گذشته | numof_trade_days_last_12_month |
| 34 | رتبه روزهای با معامله در 3 ماه گذشته | rank_trade_days_last_3_month |
| 35 | رتبه روزهای با معامله در 12 ماه گذشته | rank_trade_days_last_12_month |
| 36 | ارزش شرکت در آخرین روز | val_company_last_day |
| 37 | رتبه ارزش شرکت در آخرین روز | rank_val_company_last_day |
| 38 | تعداد روزهای باز در 3 ماه گذشته | numof_open_days_last_3_month |
| 39 | تعداد روزهای باز در 12 ماه گذشته | numof_open_days_last_12_month |
| 40 | درصد روزهای باز در 3 ماه گذشته | percent_open_days_last_3_month |
| 41 | درصد روزهای باز در 12 ماه گذشته | percent_open_days_last_12_month |
| 42 | رتبه روزهای باز در 3 ماه گذشته | rank_open_days_last_3_month |
| 43 | رتبه روزهای باز در 12 ماه گذشته | rank_open_days_last_12_month |
| 44 | تعداد روزهای بسته در 3 ماه گذشته | numof_close_days_last_3_month |
| 45 | تعداد روزهای بسته در 12 ماه گذشته | numof_close_days_last_12_month |
| 46 | درصد روزهای بسته در 3 ماه گذشته | percent_close_days_last_3_month |
| 47 | درصد روزهای بسته در 12 ماه گذشته | percent_close_days_last_12_month |
| 48 | رتبه روزهای بسته در 3 ماه گذشته | rank_close_days_last_3_month |
| 49 | رتبه روزهای بسته در 12 ماه گذشته | rank_close_days_last_12_month |
| 50 | میانگین حجم خرید حقیقی در 3 ماه گذشته | ave_vol_individual_buy_last_3_month |
| 51 | میانگین حجم خرید حقیقی در 12 ماه گذشته | ave_vol_individual_buy_last_12_month |
| 52 | رتبه حجم خرید حقیقی در 3 ماه گذشته | rank_vol_individual_buy_last_3_month |
| 53 | رتبه حجم خرید حقیقی در 12 ماه گذشته | rank_vol_individual_buy_last_12_month |
| 54 | میانگین حجم خرید حقوقی در 3 ماه گذشته | ave_vol_corporation_buy_last_3_month |
| 55 | میانگین حجم خرید حقوقی در 12 ماه گذشته | ave_vol_corporation_buy_last_12_month |
| 56 | رتبه حجم خرید حقوقی در 3 ماه گذشته | rank_vol_corporation_buy_last_3_month |
| 57 | رتبه حجم خرید حقوقی در 12 ماه گذشته | rank_vol_corporation_buy_last_12_month |
| 58 | میانگین تعداد خریدار حقیقی در 3 ماه گذشته | ave_numof_individual_buyer_last_3_month |
| 59 | میانگین تعداد خریدار حقیقی در 12 ماه گذشته | ave_numof_individual_buyer_last_12_month |
| 60 | رتبه تعداد خریدار حقیقی در 3 ماه گذشته | rank_numof_individual_buyer_last_3_month |
| 61 | رتبه تعداد خریدار حقیقی در 12 ماه گذشته | rank_numof_individual_buyer_last_12_month |
| 62 | میانگین تعداد خریدار حقوقی در 3 ماه گذشته | ave_numof_corporation_buyer_last_3_month |
| 63 | میانگین تعداد خریدار حقوقی در 12 ماه گذشته | ave_numof_corporation_buyer_last_12_month |
| 64 | رتبه تعداد خریدار حقوقی در 3 ماه گذشته | rank_numof_corporation_buyer_last_3_month |
| 65 | رتبه تعداد خریدار حقوقی در 12 ماه گذشته | rank_numof_corporation_buyer_last_12_month |
| 66 | میانگین تعداد خریداران در 3 ماه گذشته | ave_numof_buyer_last_3_month |
| 67 | میانگین تعداد خریداران در 12 ماه گذشته | ave_numof_buyer_last_12_month |
| 68 | رتبه تعداد خریداران در 3 ماه گذشته | rank_numof_buyer_last_3_month |
| 69 | رتبه تعداد خریداران در 12 ماه گذشته | rank_numof_buyer_last_12_month |
| 70 | میانگین حجم فروش حقیقی در 3 ماه گذشته | ave_vol_individual_sell_last_3_month |
| 71 | میانگین حجم فروش حقیقی در 12 ماه گذشته | ave_vol_individual_sell_last_12_month |
| 72 | رتبه حجم فروش حقیقی در 3 ماه گذشته | rank_vol_individual_sell_last_3_month |
| 73 | رتبه حجم فروش حقیقی در 12 ماه گذشته | rank_vol_individual_sell_last_12_month |
| 74 | میانگین حجم فروش حقوقی در 3 ماه گذشته | ave_vol_corporation_sell_last_3_month |
| 75 | میانگین حجم فروش حقوقی در 12 ماه گذشته | ave_vol_corporation_sell_last_12_month |
| 76 | رتبه حجم فروش حقوقی در 3 ماه گذشته | rank_vol_corporation_sell_last_3_month |
| 77 | رتبه حجم فروش حقوقی در 12 ماه گذشته | rank_vol_corporation_sell_last_12_month |
| 78 | میانگین تعداد فروشنده حقیقی در 3 ماه گذشته | ave_numof_individual_seller_last_3_month |
| 79 | میانگین تعداد فروشنده حقیقی در 12 ماه گذشته | ave_numof_individual_seller_last_12_month |
| 80 | رتبه تعداد فروشنده حقیقی در 3 ماه گذشته | rank_numof_individual_seller_last_3_month |
| 81 | رتبه تعداد فروشنده حقیقی در 12 ماه گذشته | rank_numof_individual_seller_last_12_month |
| 82 | میانگین تعداد فروشنده حقوقی در 3 ماه گذشته | ave_numof_corporation_seller_last_3_month |
| 83 | میانگین تعداد فروشنده حقوقی در 12 ماه گذشته | ave_numof_corporation_seller_last_12_month |
| 84 | رتبه تعداد فروشنده حقوقی در 3 ماه گذشته | rank_numof_corporation_seller_last_3_month |
| 85 | رتبه تعداد فروشنده حقوقی در 12 ماه گذشته | rank_numof_corporation_seller_last_12_month |
| 86 | میانگین تعداد فروشندگان در 3 ماه گذشته | ave_numof_seller_last_3_month |
| 87 | میانگین تعداد فروشندگان در 12 ماه گذشته | ave_numof_seller_last_12_month |
| 88 | رتبه تعداد فروشندگان در 3 ماه گذشته | rank_numof_seller_last_3_month |
| 89 | رتبه تعداد فروشندگان در 12 ماه گذشته | rank_numof_seller_last_12_month |
1 change: 1 addition & 0 deletions pytse_client/data/filter_data/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from .key_stats import filter_key_value
29 changes: 29 additions & 0 deletions pytse_client/data/filter_data/concat.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
from key_stats import filter_key_value
Copy link
Owner

@Glyphack Glyphack May 3, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

اسم این فایل رو بنظرت بزاریم یه چیزی مثل generate_document.py یا همچین چیزی؟

import requests
import re
try:
response = requests.get(
'http://redirectcdn.tsetmc.com'
'/Site.aspx?ParTree=151713')
except Exception as e:
print('--- Could not retrieve key stats documentation ---')
raise e
text = response.text
key_stats_ls = [line for line in text.split(
'\n') if re.search(r'is[0-9]+', line)]
nums_and_disc = []
for line in key_stats_ls:
number, disc = re.split(r'\]|\[|\&', line)[1:3]
number = int(number[2:])
disc = re.split(r"\<\/div\>", disc)[0]
nums_and_disc.append((number, disc))
with open("README.md", "w") as f2:
f2.write(
"در این بخش آمار کلیدی را در قالب"
" یک نگاشت سه عضوی مشاهده می‌کنید."
)
f2.write("\n\n\n| شماره | توضیحات | سمبل |\n")
f2.write("| --- | --- | --- |\n")
for number, persian_explanation in nums_and_disc:
symbol = filter_key_value[number]
f2.write(f"| {number} | {persian_explanation} | {symbol} |\n")
Loading