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

قابلیت آپدیت دیتای تاریخی دانلود شده #169

Open
sfmqrb opened this issue May 13, 2022 · 8 comments
Open

قابلیت آپدیت دیتای تاریخی دانلود شده #169

sfmqrb opened this issue May 13, 2022 · 8 comments
Labels
enhancement New feature or request

Comments

@sfmqrb
Copy link
Collaborator

sfmqrb commented May 13, 2022

مشکلی که دارید چی هست؟
امکان بروزرسانی تاریخجه سهام به پکیج اضافه شود.
در حال حاضر صرفا دانلود مجدد مقدور است. اما با روشهایی می شود دیتای تاریخی مورد نیاز چند روز اخیر را فقط درخواست داده و بعد به فایل csv مربوطه بیفراییم.

راه حل
می توانیم از لینک استفاده کنیم

@sfmqrb sfmqrb added the enhancement New feature or request label May 13, 2022
@sfmqrb
Copy link
Collaborator Author

sfmqrb commented Aug 10, 2022

اینو یه همت بکنیم بزنیم؟ @Glyphack

@Glyphack
Copy link
Owner

آره ایده‌ی خوبیه

@alised
Copy link
Contributor

alised commented Sep 18, 2022

سلام @Glyphack @sfmqrb

ایده خوبی است البته قرار بود در صورت امکان بتوان از منابع دیگری داده سهام را دریافت کنیم. یکی هم برنامه tsetmc client بود نسخه پایتون آن را میتوانید از اینجا ببینید:
https://github.com/alised/tse-index
مزایاش اینه که میشه مثلا دیتای ۵۰ نماد را با یک درخواست و همزمان دریافت کرد (فکر کنم حداکثر ۱۰۰ تا باشه یا بستگی به حجم دیتای برگشتی دارد دقیق خاطرم نیست) برای بروزرسانی هم که بر اساس تاریخ آخرین روز معاملاتی و دیتای آخرین روز هر سهم عمل می کند.
اگر ایده ای برای مرج کردن و گنجاندن آن در این ماژول دارید بفرمایید.

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

@Glyphack
Copy link
Owner

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

اگر بشه که همین تابع history رو از https://github.com/alised/tse-index
استفاده کنیم مشکلی نداره بنظرم چون همون کد یه جا باشه راحت‌تر هست تا دوتا جا.

صرفا باید توی تابع دانلود یه لاجیک اضافه کنیم که آپدیت کنه دیتا رو اگر دانلودی از قدیم موجوده که با تاریخ الان یکی نیست

@alised
Copy link
Contributor

alised commented Sep 18, 2022

@Glyphack
نباید از تاریخ الان استفاده کنیم توی تی اس ای هم میشه تاریخ آخرین روز معاملاتی را در آورد یا مثلا از دیتای شاخص کل استفاده کنیم ببینیم آخرین بروزرسانیش مربوط به کی است توی نرم افزار کلاینت از این آدرس تاریخ آخرین روز را میشه گرفت (توجه داشته باشید که دیتا ساعت ۵ عصر به بعد بروز میشود)
http://service.tsetmc.com/tsev2/data/TseClient2.aspx?t=LastPossibleDeven
الان خروجی این را میده
20220914;20220914

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

اینم اضافه کنم که برنامه دو متد سوپ و گت دارد که من توی ماژولی که فرستادم فقط روش سوپ را پیاده کردم چون تعداد بیشتری سهم را میتوان در یک درخواست ارسال کرد و از زیپ داده هم پشتیبانی می کند ولی در متد گت طول آدرس به ۲۰۴۸ محدود است.
در هر صورت بجز متد دریافت داده برای بقیه میتوان از متد گت هم استفاده کرد که من لینک برخی از آنها را ارسال کردم. حداقل برای بررسی و مشاهده ریسپانس راحت تر است:

if instrument list == "*":
("بروز رسانی اطلاعات در حد فاصل ساعت هشت صبح تا یک بعد از ظهر روزهای شنبه تا چهارشنبه امکان پذیر نمی باشد. \nجهت مشاهده لیست فعلی نمادها روی دکمه مرحله بعد کلیک کنید.");

=========================================================================
http://service.tsetmc.com/tsev2/data/TseClient2.aspx?t=ClosingPrices&a={inscode},0,0;{inscode2},0,0
http://service.tsetmc.com/tsev2/data/TseClient2.aspx?t=Instrument&a=0
http://service.tsetmc.com/tsev2/data/TseClient2.aspx?t=InstrumentAndShare&a=0&a2=0
http://service.tsetmc.com/tsev2/data/TseClient2.aspx?t=LastPossibleDeven

@sfmqrb
Copy link
Collaborator Author

sfmqrb commented Apr 30, 2023

این به نظرم ایشوی خیلی مهمیه @Glyphack @alised
به نظرم سرعت دریافت دیتا تاریخی خوبه و نیازی به بهبود با استفاده از بقیه اندپوینت ها نیست
میشه همین پیاده سازی حال خاضر رو تغییر داد
همون طور که @alised گفت کافیه اخرین روز معاملاتی بازار رو بگیریم. با روزهای پایانی داخل csv ها قیاس کنیم. برای نمادهایی که این اختلاف غیر صفره دیتای روزهای اخیر رو بگیریم و داخل csv با فرمت مخصوص ستون‌های هر کدوم سطر های جدید رو اضافه کنیم.

@Glyphack
Copy link
Owner

Glyphack commented May 2, 2023

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

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

@alised
Copy link
Contributor

alised commented May 14, 2023

متاسفانه ایجاد درخواستهای متعدد همزمان نه تنها مشکل را رفع نمی کند بلکه مشکلات جدیدی هم ایجاد می کند مثل ریجکت شدن درخواست و حتی بن شدن آیپی. بنابراین نمی توان از یک حد مشخص سرعت دریافت دیتا را بیشتر کرد. همه روشهایی که در حال حاضر در پلاگین وجود دارد برای بروزرسانی دیتا مستلزم ایجاد ریکوئست مجزا برای هر نماد است.
به نظرم میشه از این پلاگین برای بروزرسانی استفاده کرد:
https://github.com/alised/tse-index
تا آخر هفته نگاه میکنم ببینم میشه با تغییرات کم پیاده اش کرد.

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

No branches or pull requests

3 participants