Coder Social home page Coder Social logo

ghodsizadeh / tehran-stocks Goto Github PK

View Code? Open in Web Editor NEW
455.0 28.0 102.0 2.67 MB

A python package to access tsetmc data

Home Page: https://ghodsizadeh.github.io/tehran-stocks/

License: MIT License

Python 6.75% Batchfile 0.02% Jupyter Notebook 93.23%
stock stocks-prices dataset python tehran-stocks download-prices pandas

tehran-stocks's Introduction

Tehran Stock Market بورس تهران در پایتون

made-with-python PyPI - Downloads PyPI - Downloads PyPI version Code style: black PyPI - Python Version HitCount Open In Colab

A python package that helps to access TSETMC stock price history, Using OOP Interface

Features

  • Download All stocks prices
  • Download prices from a group (i.e ETFs or cars, etc.)
  • Download Price history of one specific Stock
  • After first setup available offline.
  • CommandLine Interface
  • Export data to csv, excel or Stata(dta)
  • Compatible with sqlalchemy
  • Compatible with PANDAS
  • Based on light sqlite

Table of Contents

Usage

0 - Install

pip install tehran_stocks

1- Initialization

For first use you need initialize the database

1-1 Command line

ts-get init  # Set up to sqlite database

1-2 Python

import tehran_stocks
# On first import package initialize itself

During initialization you will prompt for downloading all prices. if you answer yes it will download all prices, otherwise you can download data

2- Download and Update prices

2-1 Command line

ts-get update # update  all price , or download all if no price exist
ts-get  group 34 ## 34 is the code for car's group.
ts-get get_groups ## get group name and group codes

2-2 Python

from tehran_stocks import get_all_price, Stocks, update_group

get_all_price() # download and(or) update all prices

update_group(34) #download and(or) update Stocks in groupCode = 34 (Cars)

Stocks.get_group() # to see list of group codes

3- Access Data

To access data you can use Stocks which is an customized sqlalchemy object, which helps you to find prices on an easy way.

3-1 Search Stocks

from tehran_stocks import Stocks, db

# You can use query to find stocks
stock = Stocks.query.filter_by(name='كگل').first() #find by symbol(نماد)

stock = Stocks.query.filter_by(code='35700344742885862').first() # find by code on tsetmc url

stock = Stocks.query.filter(Stocks.title.like('%گل گهر%')).first() # Search by title

stock_list = Stocks.query.filter_by(group_code =34).all() # find all Stocks in Khodro

stock_list = Stocks.query.filter(Stocks.group_code.in_([13,34])).all() # all stocks in khodro and felezat


## (Advanced)or run sql query using orm or raw sql
db.session.query(Stocks.group_code, Stocks.group_name).group_by(Stocks.group_code).all()

db.session.execute('select group_code , group_name from stocks group by group_name').fetchall()

Now easily access stock price and do whatever you want with pandas dataframes:

# use data as a pandas dataframe
>>> stock.df#
      id               code        ticker  dtyyyymmdd    first     high      low    close        value      vol  openint per     open     last       date
0  22491  35700344742885862  Gol-E-Gohar.    20040829  12000.0  12021.0  12000.0  12000.0  18841605000  1570000     2708   D  12000.0  12000.0 2004-08-29

>>> stock.summary()
Start date: 2004/08/29
End date: 2019/07/14
Total days: 2987

>>> stock.update()
# update stock price history

# Export to your preferred format
>>> stock.df.to_csv('price.csv')
>>> stock.df.to_excel('price.xlsx')
>>> stock.df.to_stata('price.dta')

3-2 Get Instant price and more details:

>>> stock.get_instant_detail()
{'time': '12:29:57',
 'last_price': '12950',
 'last_close': '13060',
 'last_high': '13300',
 'last_low': '13130',
 'last_open': '13330',
 'trade_count': '12760',
 'trade_volume': '1140',
 'trade_value': '4671236',
 'market_cap': '60715047900',
 'date_string': '20220404',
 'time_string': '122957'}

# get change in share count
>>> stock.get_shares_history()

date	new_shares	old_shares	gdate
0	1400-12-08 00:00:00	200.000 B	100.000 B	2022-02-27
1	1400-04-20 00:00:00	100.000 B	74.400 B	2021-07-11

# get change in price ~ dividend, split, etc.
>> stock.get_dividend()
date	after	before	dividend	gdate
0	1400-04-16 00:00:00	18770	20070	1300	2021-07-07
1	1399-04-18 00:00:00	16350	17250	900	2020-07-08
)

4- Custom Database

You can change the default database by updating the config file on:

~/.tse/config.yml #unix MacOS/Linux
C:\Users\User\{USERNAME}\.tse\config.yml #Windows

Custom Config for postgresql (you may need to install pyscopg2):

database:
  database: stocks
  engine: postgresql
  host: localhost
  password: password
  port: 5432
  user: postgres

Todo

  • Create Database
  • Download Data
  • CommandLine Support
  • Jalali Support
  • Instant Data
  • Custom database

Support❤️

  • If you like this package you can buy me a cup of coffee ☕️.
  • Subscribe and share my youtube channel Youtube

tehran-stocks's People

Contributors

dependabot[bot] avatar farhadmpr avatar ghodsizadeh avatar gr8linux avatar hamidmousavi avatar mortezapour avatar shayegh avatar sourcery-ai[bot] avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

tehran-stocks's Issues

I cant update my package

Hi guys,
I cant update my package.
when I write "ts-get update" on windows powershell, after about 2 seconds it replies "Download Finished." when i disconnect my internet it happens the same.

when I write "ts-get group 34" on windows powershell, it replies :
"Make sure group has some entity on Stocks
Done" when i disconnect my internet it happens the same.

i did it in python but its not different.
can u help me?

قیمت ها یک روز عقب تر !!!

یک خسته نباشید بگم بابت پکیج خوبی که نوشتی
یکی از اشکالات اینه قیمت ها یک روز عقبه و تا ۱۲ شبکه روز جدید بشه دسترسی یه قیمت های جدید نمیشه داشت .

نیازه که اطلاعات هر سهم در همان روز شامل بازه قیمت، درصد تغییر قیمت ، اطلاعات حقیقی و حقوقی و .. هم قرار داده شود

مشکل در دانلود اطلاعات

سلام
من با دستور زیر دیتابیس رو درست میکنم و 100 میشه
import tehran_stocks
بعد که 100% تموم میشه و ازم سوال میپرسه و بله رو وارد میکنم با ارور زیر مواجه میشم

downloading group: 98, changes: 100.0% completed

Add all groups, you can download stock price by following codes
from tehran_stocks import downloader
 downloader.download_all() # for downloading all data
downloader.download_group(group_id) # to download specefic group data
downloader.download_stock(stock) to downloand stock specefic
Stock table is available now, example:
from tehran_stocks import Stocks
stock =Stock.query.filter_by(name="کگل").first()
Do you want to download all price? [y,(n)]y
Downloading price:
progress {100*int((i+1)/len(codes):.2f)}
Traceback (most recent call last):
  File "C:\Users\Envid\AppData\Local\Programs\Python\Python37\lib\site-packages\sqlalchemy\engine\base.py", line 1244, in _execute_context
    cursor, statement, parameters, context
  File "C:\Users\Envid\AppData\Local\Programs\Python\Python37\lib\site-packages\sqlalchemy\engine\default.py", line 552, in do_execute
    cursor.execute(statement, parameters)
sqlite3.InterfaceError: Error binding parameter 0 - probably unsupported type.

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "C:\Users\Envid\Desktop\sad.py", line 1, in <module>
    import tehran_stocks
  File "C:\Users\Envid\AppData\Local\Programs\Python\Python37\lib\site-packages\tehran_stocks\__init__.py", line 19, in <module>
    fill_db()
  File "C:\Users\Envid\AppData\Local\Programs\Python\Python37\lib\site-packages\tehran_stocks\initializer.py", line 28, in fill_db
    get_all_price()
  File "C:\Users\Envid\AppData\Local\Programs\Python\Python37\lib\site-packages\tehran_stocks\download\price.py", line 62, in get_all_price
    update_group(code)
  File "C:\Users\Envid\AppData\Local\Programs\Python\Python37\lib\site-packages\tehran_stocks\download\price.py", line 49, in update_group
    stocks = db.session.query(Stocks.code).filter_by(group_code=code).all()
  File "C:\Users\Envid\AppData\Local\Programs\Python\Python37\lib\site-packages\sqlalchemy\orm\query.py", line 3174, in all
    return list(self)
  File "C:\Users\Envid\AppData\Local\Programs\Python\Python37\lib\site-packages\sqlalchemy\orm\query.py", line 3330, in __iter__
    return self._execute_and_instances(context)
  File "C:\Users\Envid\AppData\Local\Programs\Python\Python37\lib\site-packages\sqlalchemy\orm\query.py", line 3355, in _execute_and_instances
    result = conn.execute(querycontext.statement, self._params)
  File "C:\Users\Envid\AppData\Local\Programs\Python\Python37\lib\site-packages\sqlalchemy\engine\base.py", line 988, in execute
    return meth(self, multiparams, params)
  File "C:\Users\Envid\AppData\Local\Programs\Python\Python37\lib\site-packages\sqlalchemy\sql\elements.py", line 287, in _execute_on_connection
    return connection._execute_clauseelement(self, multiparams, params)
  File "C:\Users\Envid\AppData\Local\Programs\Python\Python37\lib\site-packages\sqlalchemy\engine\base.py", line 1107, in _execute_clauseelement
    distilled_params,
  File "C:\Users\Envid\AppData\Local\Programs\Python\Python37\lib\site-packages\sqlalchemy\engine\base.py", line 1248, in _execute_context
    e, statement, parameters, cursor, context
  File "C:\Users\Envid\AppData\Local\Programs\Python\Python37\lib\site-packages\sqlalchemy\engine\base.py", line 1466, in _handle_dbapi_exception
    util.raise_from_cause(sqlalchemy_exception, exc_info)
  File "C:\Users\Envid\AppData\Local\Programs\Python\Python37\lib\site-packages\sqlalchemy\util\compat.py", line 398, in raise_from_cause
    reraise(type(exception), exception, tb=exc_tb, cause=cause)
  File "C:\Users\Envid\AppData\Local\Programs\Python\Python37\lib\site-packages\sqlalchemy\util\compat.py", line 152, in reraise
    raise value.with_traceback(tb)
  File "C:\Users\Envid\AppData\Local\Programs\Python\Python37\lib\site-packages\sqlalchemy\engine\base.py", line 1244, in _execute_context
    cursor, statement, parameters, context
  File "C:\Users\Envid\AppData\Local\Programs\Python\Python37\lib\site-packages\sqlalchemy\engine\default.py", line 552, in do_execute
    cursor.execute(statement, parameters)
sqlalchemy.exc.InterfaceError: (sqlite3.InterfaceError) Error binding parameter 0 - probably unsupported type.
[SQL: SELECT stocks.code AS stocks_code 
FROM stocks 
WHERE stocks.group_code = ?]
[parameters: ((10,))]
(Background on this error at: http://sqlalche.me/e/rvf5)‍‍```

restriction based on the IP address

Hi,
Is there any restriction based on the IP address to download data? (maybe inside and outside of Iran).

Here is an example that I think the reason is the IP of the server that Jupiter is running on it:
import tehran_stocks

from tehran_stocks import get_all_price, Stocks, update_group

get_all_price()

stock = Stocks.query.filter_by(name='كگل').first() #find by symbol(نماد)

stock.df

Download Finished.

AttributeError Traceback (most recent call last)
in
8 stock = Stocks.query.filter_by(name='كگل').first() #find by symbol(نماد)
9
---> 10 stock.df

AttributeError: 'NoneType' object has no attribute 'df'


AttributeError Traceback (most recent call last)
in
----> 1 stock.summary()

AttributeError: 'NoneType' object has no attribute 'summary'

اضافه کردن قابلیت جدید به برنامه

سلام
همونطوری که میدونید برای نوشتن فیلتر توی سایت نیاز به تعداد و حجم، خرید و فروش، حقیقی و حقوقی هست
امکانش هست برای برنامه یک تابع جدید نوشت که این مقادیر رو در لحظه برای همه نمادها توی پایگاه داده ذخیره کنه؟؟

get_all_price failed with error

When I try to run get_all_price it always stop with an error on sql

InterfaceError: (sqlite3.InterfaceError) Error binding parameter 0 - probably unsupported type.
[SQL: SELECT stocks.code AS stocks_code
FROM stocks
WHERE stocks.group_code = ?]
[parameters: ((10,),)]
(Background on this error at: http://sqlalche.me/e/rvf5)

I run the miniconda vs pure python on ubuntu

Fix CLI for windows.

It seems there is a problem with ts-get CLI in MS windows. It would be great if someone has time and a windows to check and fix the problem.

AttributeError: 'NoneType' object has no attribute 'df'

با سلام
دیتا فریم df اصلا قابل استفاده نمیباشد

from tehran_stocks import Stocks

stock = Stocks.query.filter_by(name='کگل').first()

print(stock.df)

Traceback (most recent call last):
File "C:/Users/KING ARASH/PycharmProjects/aa/trial6.py", line 9, in
print(stock.df)
AttributeError: 'NoneType' object has no attribute 'df'

آپدیت قیمت به جای دانلود کامل سابقه امکان پذیر است؟

من کد پروژه شمارو خوندم.همه چی عالیه.فقط یه مشکلی داره اینه که برنامه میاد سابقه قیمت رو کامل دانلود میکنه و اگه رکورد جدیدی بر اساس تاریخ بود اضافه میکنه به دیتابیس.ولی با این وضعیت اگه برنامه بخواد هر روز آپدیت قیمت انجام بده ترافیک زیادی مصرف میشه.مثلا فرض کنید برنامه من بخواد از دیتای هر روز بورس استفاده کنه و آنالیزش کنه.اینجوری باید هر روز حدود 200 مگ ترافیک مصرف کنه
من چند روزه روی این مشکل کار میکنم و چند تا راه حل پیدا کردم که بشه بر اساس تاریخ فایل دیتارو دانلود کرد.
1-http://www.fipiran.com/DataService/Exportsymbol?inscodesymbol=IRO3IMFZ0001&symbolStart=13981001&symbolEnd=13990130
مشکلش اینه اطلاعات بعضی روزا رو نمیاره
مثلا از اول فروردین که زدم 6 فروردین رو نیاورد

url = 'http://www.fipiran.com/DataService/Exportsymbol'
payload ={
'inscodesymbol':'IRO3IMFZ0001',
'symbolStart':'13981001',
'symbolEnd':'13990130',
}
r = requests.get(url, params=payload)
print(r.url)
dfs = pd.read_html(r.content)
print(dfs)

2- http://www.tsetmc.com/tse/data/Export-txt.aspx?a=InsTrade&InsCode=46741025610365786&DateFrom=20191222&DateTo=20200417&b=0
مشکلش اینه آخرین قیمت رو نمیده

    now = datetime.now().strftime("%Y%m%d")

    qMaxDate=f"select max(dtyyyymmdd) as date from stock_price where code = {code}"
    maxdate = pd.read_sql(qMaxDate, db.engine)
    lastDate=(maxdate.date.iat[0])
    try:
        if lastDate is None:#no any record added in database
            url = f"http://www.tsetmc.com/tse/data/Export-txt.aspx?a=InsTrade&InsCode={code}&DateFrom=20000101&DateTo={now}&b=0"
            print("no any record added in database")
            print(url)
        elif (str(lastDate)<now):   #need to updata new price data
            url=f"http://www.tsetmc.com/tse/data/Export-txt.aspx?a=InsTrade&InsCode={code}&DateFrom={str(lastDate)}&DateTo={now}&b=0"
            print("need to updata new price data")
            print(url)
        else:                #The price data for this code is updateed
            return
    except Exception as e:
        print('Error on formating price:'+ str(e))

ولی هیچ راه حل کاملی تا حالا پیدا نکردم.اگه بتونید راهی برای این مشکل پیدا کنید به نظرم عالی میشه.با روشهای بالا آپدیت قیمت هر روز دیتابیس کمتر از 1 مگابایت میشه.

شاخص ها

سلام امکان گرفتن شاخص ها در این پکیج وجود داره؟ مثل کل و هموزن و ...چون من هرچی گشتم جیزی پیدا نکردم

ذخیره هر سهم در یک فایل جدا

سلام
ممنون بابت پکیج مفیدی که به اشتراک گذاشتید.
آیا راهی هست که تاریخچه قیمت هر سهم رو در یک فایل سی‌اس‌وی به طور جداگانه ذخیره کنیم؟
منظورم ذخیره اتوماتیک همه سهم‌ها با همه. به صورت تکی که مشکلی ندارم.

when i want to compile by VSCode

This error occurs when "import tehran_stocks" runs:

ModuleNotFoundError
No module named 'tehran_stocks.config'

File "D:\ ... \python\lib\site-packages\tehran_stocks_init_.py", line 3, in
import tehran_stocks.config as db
ModuleNotFoundError: No module named 'tehran_stocks.config'

Empty DataFrame

سلام روز بخیر
من هم با اسم و هم با کد نماد تلاش کردم دیتا بگیرم اما دیتا فریم را به من خالی بر می گرداند .
یکبار هم کل دیتابیس را پاک کردم و پروسه ی نصب را تکرار کردم اما اتفاق جدیدی نیافتاد .
درون دیتابیس را که دیدم متوجه شدم که جدول
stock price
هیچ مقداری داخلش نیست و عملا خالی است. حدس میزنم در مشکل در گرفتن دیتا از سایت باشد
ممنون میشوم راهنمایی کنید

با تشکر

Package importing issue in Jupiter Lab python interface

When I import your designed package in Jupiter Lab 0.34.9 interface of 1.9.2 anaconda navigator, this error has resulted:

ModuleNotFoundError Traceback (most recent call last)
in ()
----> 1 import tehran_stocks

~\Anaconda3\lib\site-packages\tehran_stocks_init_.py in ()
1 import os
2
----> 3 import tehran_stocks.config as db
4 from tehran_stocks.download import (
5 get_all_price,

ModuleNotFoundError: No module named 'tehran_stocks.config'

please see why this issue has happened?
Thanks

Get P/E data

For now Tehran-stock get sectorPe
please get P/e for each item too

دریافت اطلاعات شرکت های جدید اضافه شده در بورس

سلام
چجور میشه کد های جدیدی که بورس اضافه میشن را در یافت کرد؟
برای مثال من اطلاعات را قبل از ورود شستا به بورس دریافت کردم، الان با اینکه از
update_group(39)
هم استفاد ه کردم باز هم اطلاعات شستا را بهم نشون نمی ده.
اصلا اطلاعاتش به بانک اطلاعاتی اضافه نمیشه!!

Error getting new data - date_shamsi

Hi,

After you have added the date_shamsi feature, I couldn't update my dataFrame!
I also tried to upgrade my package, but it seems that the table in the database has no column for date_shamsi

Here is the code:

ticker_id = 35700344742885862
stock = Stocks.query.filter_by(code=str(ticker_id)).first()
stock.update()

the error:

(sqlalchemy.exc.OperationalError('(sqlite3.OperationalError) table stock_price has no column named date_shamsi'),
 '35700344742885862')

and df.tail() is not updated due that error:

SharedScreenshot

Thanks for making such a good python code, good luck. :)

عدم دانلود اطلاعات و ایجاد نکردن آبجکت stock

my code is here: for stock object can not find df atribiute

import tehran_stocks
from tehran_stocks import get_all_price, Stocks, update_group
get_all_price()

Download Finished.

from tehran_stocks import Stocks, db
stock = Stocks.query.filter_by(name='كگل').first() #find by symbol(نماد)
stock.df

Traceback (most recent call last):

  File "<ipython-input-9-7d2dff961c56>", line 1, in <module>
    stock.df

  AttributeError: 'NoneType' object has no attribute 'df'

the close price problem

Hi
At first, I should appreciate your amazing work.
Unfortunately, there is a problem with close prices, most of them are wrong and it can result in a wrong analysis!
I check this for two stocks "بركت" and "ذوب"
Is there any solution for this?
Thank you

Database location

Is your feature request related to a problem? Please describe.
database create in $HOME/tse it is better to save database in script location

گروه زراعت و خدمات وابسته

من نتونستم اطلاعات گروه زراعت و خدمات وابسته رو بگیرم. احتمالا چون group_code این گروه 01 هست و فرمت این ستون int هست درست بازخوانی نمیشه اطلاعات. امیدوارم توی نسخه بعدی اصلاح بشه. در هر صورت عالی. ممنون

AttributeError in google colab

AttributeError: module 'tehran_stocks' has no attribute 'config'
I tried to use tehran_stocks in colab, but I confronted this Error. Please help me how I can resolve it.

Real Time Data

Please add some feature that can see the realtime data for example in open session return now data

No data

I run the code, but all the outputs are empty. It seems that no data is downloaded. For example I get the following output when I run the code about showing group names:

"Download Finished.
Make sure group has some entity on Stocks
[ ]"

Also when I print the data, It shows that nothing has downloaded:

"Empty DataFrame
Columns: [ ]
Index: [ ]"

Any idea about problem?

چرا همه گروه هارو نمیاره

با سلام
من وقتی میخوام گروه هارو برام در بیاره فقط چند تاشو نشون میده.در حالی کی باید حدود صد تا گروه که تو صفحه http://www.tsetmc.com/Loader.aspx?ParTree=111C1213 هست رو نشون بده برام

for r in Stocks.get_group():
print(r)

#Output:
(10, 'استخراج زغال سنگ')
(11, 'استخراج نفت گاز و خدمات جنبي جز اکتشاف')
(13, 'استخراج کانه هاي فلزي')
(14, 'استخراج ساير معادن')
(17, 'منسوجات')
(19, 'دباغي، پرداخت چرم و ساخت انواع پاپوش')
(20, 'محصولات چوبي')
(21, 'محصولات كاغذي')
(22, 'انتشار، چاپ و تکثير')
(23, 'فراورده هاي نفتي، كك و سوخت هسته اي')
(25, 'لاستيك و پلاستيك')
(26, 'توليد محصولات كامپيوتري الكترونيكي ونوري')

Indexes missing; I tried different dictations but still says no results.

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

استخراج نام وکد و کد گروه برای یک سهم

سلام اقای قدسی زاده وقت بخیر
با تشکر بابت ماژول بورس تهران
سوالم اینه که چطور میشه به کل دیتابیس اصلی دسترسی داشت.

در واقع دنبال این هستم که نام سهام و کد سهم و کد گروه سهم رو از کل داده استخراج کنم

دریافت اطلاعات از صفحه اصلی هر نماد

سلام و تشکر از پروژه مفیدتون
یه موردی هست که خیلی لازم میشه و همیشه منو لنگ میذاره دریافت اطلاعات از صفحه اصلی هر نماد هست مثل صف خرید یافروش
یا اطلاعات جدول بالای صفحه که شامل موارد زیر میشه


بازه روز
قیمت مجاز
بازه هفته
بازه سال


تعداد سهام
حجم مبنا
سهام شناور
میانگین حجم ماه


حجم | خرید | فروش
حقیقی
حقوقی
تعداد | خرید | فروش
مجموع
حقیقی
حقوقی


تعداد معاملات
حجم معاملات
ارزش معاملات
ارزش بازار


خرید | معامله | فروش
اولین | پایانی | دیروز

یکی دو مورد رو همین الان هم داریم مثل اخرین قیمت ولی بقیه موارد ظاهرا در کتابخونه موجود نیستن
این کار رو مجبورا من با سلنیوم انجام میدم که برای هر نماد بسیار وقت گیر هست و عملا بعضی وقتها چندین ساعت طول میکشه که خب نهایتا بخاطر زمانش نمیشه ازش استفاده کرد
ممنون میشم ببینید اگر امکانش هست این اطلاعات یکجا برای همه نماد ها استخراج بشه
سپاس فراوان

IndexError: list index out of range

وقتی میخوام دیتا بیس روبسازم این ارور رو میده.چنید بار دیتا بیس رو حذف کردم و دوباره دستور رو زدم.یا ناقص دانلود میکنه یا این پیغامو میده

PS C:\Users\MyName\Desktop\tehran-stocks-master\dist> ts-get init
No database founded.
creating database
DataBase created in: C:\Users\MyName\tse
downloding stock name and details from tccim
may take few minutes
Downloading group ids...
Traceback (most recent call last):7% completed
File "C:\Program Files\Python\Python38\Scripts\ts-get", line 6, in
import tehran_stocks as ts
File "C:\Program Files\Python\Python38\lib\site-packages\tehran_stocks_init_.py", line 19, in
fill_db()
File "C:\Program Files\Python\Python38\lib\site-packages\tehran_stocks\initializer.py", line 21, in fill_db
fill_stock_table()
File "C:\Program Files\Python\Python38\lib\site-packages\tehran_stocks\download\names.py", line 104, in fill_stock_table
_ = [get_stock_detail(s, int(group)) for s in stocks]
File "C:\Program Files\Python\Python38\lib\site-packages\tehran_stocks\download\names.py", line 104, in
_ = [get_stock_detail(s, int(group)) for s in stocks]
File "C:\Program Files\Python\Python38\lib\site-packages\tehran_stocks\download\names.py", line 47, in get_stock_detail
stock["instId"] = re.findall(r"InstrumentID='([\w\d]*)',", r.text)[0]
IndexError: list index out of range

Module import error

installed with pip .
getting No module named 'tehran_stocks' error when trying to import.
I also tried with different os but no luck.

get_all_price() return error

its working well but
get_all_price function return error

progress {100*int((i+1)/len(codes):.2f)}

InterfaceError Traceback (most recent call last)
~/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py in _execute_context(self, dialect, constructor, statement, parameters, *args)
1245 self.dialect.do_execute(
-> 1246 cursor, statement, parameters, context
1247 )

~/.local/lib/python3.6/site-packages/sqlalchemy/engine/default.py in do_execute(self, cursor, statement, parameters, context)
587 def do_execute(self, cursor, statement, parameters, context=None):
--> 588 cursor.execute(statement, parameters)
589

InterfaceError: Error binding parameter 0 - probably unsupported type.

The above exception was the direct cause of the following exception:

InterfaceError Traceback (most recent call last)
~/Documents/Code/Stock/stock.py in
----> 1 get_all_price()

~/.local/lib/python3.6/site-packages/tehran_stocks/download/price.py in get_all_price()
60 for i, code in enumerate(codes):
61 print("progress {100*int((i+1)/len(codes):.2f)}")
---> 62 update_group(code)
63
64 print("Download Finished.")

~/.local/lib/python3.6/site-packages/tehran_stocks/download/price.py in update_group(code)
47 Warning: Stock table should be updated
48 """
---> 49 stocks = db.session.query(Stocks.code).filter_by(group_code=code).all()
50 if not stocks:
51 print("Make sure group has some entity on Stocks")

~/.local/lib/python3.6/site-packages/sqlalchemy/orm/query.py in all(self)
3231 :ref:faq_query_deduplicating
3232 """
-> 3233 return list(self)
3234
3235 @_generative(_no_clauseelement_condition)

~/.local/lib/python3.6/site-packages/sqlalchemy/orm/query.py in iter(self)
3387 if self._autoflush and not self._populate_existing:
3388 self.session._autoflush()
-> 3389 return self._execute_and_instances(context)
3390
3391 def str(self):

~/.local/lib/python3.6/site-packages/sqlalchemy/orm/query.py in _execute_and_instances(self, querycontext)
3412 )
3413
-> 3414 result = conn.execute(querycontext.statement, self._params)
3415 return loading.instances(querycontext.query, result, querycontext)
3416

~/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py in execute(self, object_, *multiparams, **params)
980 raise exc.ObjectNotExecutableError(object_)
981 else:
--> 982 return meth(self, multiparams, params)
983
984 def _execute_function(self, func, multiparams, params):

~/.local/lib/python3.6/site-packages/sqlalchemy/sql/elements.py in _execute_on_connection(self, connection, multiparams, params)
291 def _execute_on_connection(self, connection, multiparams, params):
292 if self.supports_execution:
--> 293 return connection._execute_clauseelement(self, multiparams, params)
294 else:
295 raise exc.ObjectNotExecutableError(self)

~/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py in _execute_clauseelement(self, elem, multiparams, params)
1099 distilled_params,
1100 compiled_sql,
-> 1101 distilled_params,
1102 )
1103 if self._has_events or self.engine._has_events:

~/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py in _execute_context(self, dialect, constructor, statement, parameters, *args)
1248 except BaseException as e:
1249 self._handle_dbapi_exception(
-> 1250 e, statement, parameters, cursor, context
1251 )
1252

~/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py in _handle_dbapi_exception(self, e, statement, parameters, cursor, context)
1474 util.raise_from_cause(newraise, exc_info)
1475 elif should_wrap:
-> 1476 util.raise_from_cause(sqlalchemy_exception, exc_info)
1477 else:
1478 util.reraise(*exc_info)

~/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py in raise_from_cause(exception, exc_info)
396 exc_type, exc_value, exc_tb = exc_info
397 cause = exc_value if exc_value is not exception else None
--> 398 reraise(type(exception), exception, tb=exc_tb, cause=cause)
399
400

~/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py in reraise(tp, value, tb, cause)
150 value.cause = cause
151 if value.traceback is not tb:
--> 152 raise value.with_traceback(tb)
153 raise value
154

~/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py in _execute_context(self, dialect, constructor, statement, parameters, *args)
1244 if not evt_handled:
1245 self.dialect.do_execute(
-> 1246 cursor, statement, parameters, context
1247 )
1248 except BaseException as e:

~/.local/lib/python3.6/site-packages/sqlalchemy/engine/default.py in do_execute(self, cursor, statement, parameters, context)
586
587 def do_execute(self, cursor, statement, parameters, context=None):
--> 588 cursor.execute(statement, parameters)
589
590 def do_execute_no_params(self, cursor, statement, context=None):

InterfaceError: (sqlite3.InterfaceError) Error binding parameter 0 - probably unsupported type.
[SQL: SELECT stocks.code AS stocks_code
FROM stocks
WHERE stocks.group_code = ?]
[parameters: ((10,),)]
(Background on this error at: http://sqlalche.me/e/rvf5)

دیتافریم خالی

با سلام
من کد ها رو به صورتکامل کپی می کنم و به درستی هم اجرا میشه ولی دیتا فریمی که به من میده خالی هست و به جز سطر عناوین مثل تاریخ و غیره چیز دیگه ای نداره
اگه میشه راهنمایی کنید
Screenshot (43)

Stocks آپدیت جدول

با سلام
آقای قدسی ز اده یکی از اشکالات پروژه که امروز متوجه شدم اینه که جدول نمادها
باید در هر آپدیت بروزرسانی بشه که نمیشه.مثلا فیلدهایی مثل :
حجم مبنا،eps,p/e,...
درطول زمان تغییر میکنن و به نظرم بهتره همیشه بروز رسانی بشن.

دومین مشکل هم اینه که برنامه نمادهای دو گروه ۱,۲ رو نمیتونه از سایت دربیاره. نمیدونم خودتون امتخان کردید یا نه؟
البته من توی سورسی که خودم باهاش کار میکنم یه متدی نوشتم که بتونه علاوه بر سایت بورس کدهای اضافی رو از فایل متنی که خودم اضافه میکنم بخونه و اطلاعاتشون رو در بیاره.ولی چون به نظرم راه حل اصولی نیست پول رکوئست ندادم.
این دوتا از مشکلاتیه که فکرمو درگیر کرده.شما چه راه حلی براشون دارید؟

symbol has problem in standard keyboard [BUG]

What is the problem?
Problem i use standard keyboard in linux and try to work with your pakage
when i run bellow line i get data from database (i just copy that from Readme)

stock = Stocks.query.filter_by(name='كگل').first() #find by symbol(نماد)
stock.df 

but if i type that with Persian standard keyboard i can't get data

stock = Stocks.query.filter_by(name='کگل').first() #find by symbol(نماد)
stock.df 

Why that happen?
if you use this site to check ASCII of 'كگل' (save on database)'کگل' (standard keyboard) you found this is different and because of that you can't request data from database

Problem number of stock in Server

OS(vps): . ubuntu 18 in germany
OS(pc): . Arch linux
python version: . 3.6.9
Hey bro , i'm trying to updade stock price . In my pc len(stock_list) 859
But in my vps the value is 357 !!!!
len(stock_list) 357

I dont have problem with price value they are update well but i need all 859 in stock_list.
Sorry for my bad english .

ریز معاملات

سلام
می خواستم بدونم با این نرم افزار می شه ریز معاملات رو هم دریافت کردی؟

وجود نداشتن فایل config

من با سی ام دی این بسته رو نصب میکنم و توی نصب کردن مشکلی ندارم. ولی وقتی میخوام توی پایتون ازش استفاده کنم، میگه که فایل کانفیگ وجود نداره. اگر میشه یه راهنمایی بکنید

دمو

لطفا دمو هم بزارید

روش دیگر برای دانلود قیمت نمادها

سلام آقای قدسی زاده
برای دانلود قیمت سهمها یه روش دیگه استفاده از سابقه نماد در سایت بورسه
members.tsetmc.com/tsev2/data/InstTradeHistory.aspx?i=9211775239375291&Top=9999&A=0
عدد۹۹۹۹۹ تعداد رکوردهای درخواستیه.که میتونیم حاصل تفریق تاریخ امروز از تاریخ آخرین قیمت ثبت شده در دیتابیس رو جاش بذاریم و فقط سابقه روزهای باقی مونده رو بهمون بده
در سایت بورس تهران وقتی تب سابقه نماد رو میزنیم از این لینک برای دانلود سابقه استفاده میکنه.

این روش میتونه جایگزینی برای روشهای قبلی دانلو سابقه قیمت باشه.که برای آپدیت قیمت بجای دانلود کامل دیتا میتونه استفاده بشه.
من این روش رو روی برنامه شما تست کردم و نتیجه گرفتم.منتها باید کدش بهینه سازی بشه چون باید استرینگ قیمت رو پردازش کنه و بصورت دیتافریم بده.کدش کامل شد پول رکوئست میفرستم. خدمتتون.

ببخشید که این ایده رو اینجا نوشتم.کاش جایی داشتیم که در مورد چنین ایده هایی در مورد این پروژه همفکری کنیم

انرژی ۳

سلام
ممنون از کد مفید

ظاهرا انرژی ۳ توی نمادهای گروه ۶۷ نیست، و من کلا نتونستم پیداش کنم .طبعا باید مثل فرابورس هم توی بازار پایه مشاهده می شد هم توی بورس.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.