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

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

Open
HamidMousavi opened this issue Apr 17, 2020 · 3 comments

Comments

@HamidMousavi
Copy link
Contributor

HamidMousavi commented Apr 17, 2020

من کد پروژه شمارو خوندم.همه چی عالیه.فقط یه مشکلی داره اینه که برنامه میاد سابقه قیمت رو کامل دانلود میکنه و اگه رکورد جدیدی بر اساس تاریخ بود اضافه میکنه به دیتابیس.ولی با این وضعیت اگه برنامه بخواد هر روز آپدیت قیمت انجام بده ترافیک زیادی مصرف میشه.مثلا فرض کنید برنامه من بخواد از دیتای هر روز بورس استفاده کنه و آنالیزش کنه.اینجوری باید هر روز حدود 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 مگابایت میشه.

@ghodsizadeh
Copy link
Owner

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

@HamidMousavi
Copy link
Contributor Author

من روی ورژن 0.8.0.2 که روی پایپی هست کار میکنم ولی نسخه موجود در گیت هاب با اون فرق داره.اگه امکانش باشه اون نسخه رو روی گیت هاب بذارید تا از روی اون فورک کنم.اگه لازم میدونید من کل سورسم رو که تغییراتی روش دادم رو براتون فرستم.

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

یه پیشنهاد دارم:اگه بشه یه گره تلگرامی جهت همفکری روی پروژه ایجاد بشه به نظرم مفید باشه.

@ghodsizadeh
Copy link
Owner

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants