جمع آوری داده های نماد سهام در طی چند سال می تواند به شما امکان تجزیه و تحلیل سری زمانی را در مورد قیمت سهام دهد. در این نکته ما به نحوه بارگیری قیمت سهام برای همه سهام در طی یک دوره زمانی مشخص نگاه می کنیم و داده ها را برای تجزیه و تحلیل در سرور SQL بارگذاری می کنیم.
راه حل
یکی از متداول ترین سؤالات بین متخصصان داده در صنعت مالی این است که چگونه می توانم داده های تاریخی و حجم را برای بسیاری از نمادهای امنیتی از مالی یاهو جمع آوری کنم (https://finance. yahoo.com/). سایت مالی یاهو جالب است زیرا داده های سری زمانی آزاد را در مورد ده ها هزار اوراق بهادار از چندین بازار در سراسر جهان ارائه می دهد.
این نکته نحوه وارد کردن داده های سری زمانی یاهو را به یک جدول سرور SQL نشان می دهد.
- داده ها از طریق یک اسکریپت جمع آوری می شوند که از یک رابط ویژه برنامه نویسی پایتون برای جمع آوری سری های زمانی از یاهو مالی و سایر منابع اینترنتی استفاده می کند.
- خروجی از برنامه Python یک فایل CSV است که یک اسکریپت T-SQL در جدول سرور SQL وارد می کند.
برخی از منابع برای جمع آوری نمادهای تیکت
Yahoo Finance مقدار زیادی از داده های سری زمانی تاریخی را در مورد نمادها برای اوراق بهادار حفظ می کند ، اما دانستن همه نمادهای ردیابی شده ساده نیست.
Investexel.net یک فایل کتاب کار اکسل را با بسیاری از نمادهای امنیتی منتشر کرد. داده های لیست نماد آنها در سپتامبر 2017 جمع آوری شده است. به دانش من ، وب سایت از آن زمان لیست رایگان و در دسترس عموم خود را به روز نکرده است.
شرکت Eoddata داده های روزانه و همچنین تاریخچه قیمت و حجم تاریخی را برای نمادهای تیک تیک از مبادلات اصلی در سراسر جهان فراهم می کند. این نکته فرایندی را برای جمع آوری نمادهای تیک از Eoddata و سپس بارگیری داده های سری زمانی از Finance Yahoo برای نمادها نشان می دهد. شما یاد می گیرید که چگونه داده های سری زمانی را برای کمی بیش از 8000 نماد از مبادلات AMEX ، NASDAQ و NYSE که توسط Eoddata ردیابی شده اند ، جمع آوری کنید.
در اینجا یک صفحه نمایش از سایت Eoddata وجود دارد که از آن می توانید لیست آن از نمادهای Ticker را برای یک مبادله بارگیری کنید. جعبه انتخاب Exchange به شما امکان می دهد از بسیاری از مبادلات بین المللی ، از جمله سه مبادله مورد استفاده در این نکته استفاده کنید (بورس اوراق بهادار NASDAQ ، بورس اوراق بهادار نیویورک و بورس اوراق بهادار آمریکا). با کلیک بر روی لینک لیست نماد بارگیری ، یک فایل txt را با نماد و ستون های توضیحات برای نمادهای تیک در تبادل انتخاب شده بارگیری می کند.

در اینجا گزیده ای از لیست نمادها از داخل Notepad ویندوز آمده است. تصویر صفحه قبل و تصویر زیر ده نماد اول را به ترتیب حروف الفبا از بورس NASDAQ نشان می دهد، اما لیست کاملی از نمادها را برای دانلود یک بورس نشان می دهد. برای انجام دانلود باید عضویت استاندارد داشته باشید، اما برای عضویت استاندارد هزینه ای دریافت نمی شود.

پس از اینکه نتایج را از eoddata دانلود کردم، ستون دیگری را برای نشان دادن صرافی که نماد از آن انتخاب شده است اضافه کردم. ردیف های داده های نماد بر اساس حروف الفبا بر اساس نماد در مبادله مرتب شدند. دانلودهایی که با این نکته در دسترس هستند شامل یک فایل csv به نام EchangeSymbols. csv می باشد. شما می توانید از تکنیک دلخواه خود برای تجزیه ستون های داده های دانلود و بارگیری نتایج در جدول SQL Server استفاده کنید. این نکته به یک جدول SQL Server به نام ExchangeSymbols اشاره می کند که از فایل پر شده است. در متن کد این نکته، جدول در طرح dbo پایگاه داده for_csv_from_python قرار دارد.
در اینجا گزیده ای از دو مجموعه ده ردیفی از جدول SQL Server برای نمادهای دانلود شده است. تا زمانی که دانلود انجام شد، 8856 نماد توسط eoddata در سه صرافی ردیابی شدند.
- فهرست نمادها در تصویر زیر بیش از 2000 ردیف اول در جدول ExchangeSymbols گسترش می یابد. نمادها با AABA شروع می شوند و از طریق KZIA در بورس NASDAQ اجرا می شوند. این اولین مجموعه از نمادها است.
- دومین فهرست نمادها از eoddata (که در زیر گزیده نشده است) برای مطابقت با داده های سری زمانی Yahoo Finance با KZR در بورس NASDAQ شروع می شود و از طریق HCI در بورس نیویورک گسترش می یابد.
- فهرست سوم نمادها از eoddata (در زیر گزیده ای از آن نیست) برای مطابقت با Yahoo Finance با HCP در بورس نیویورک شروع می شود و از طریق UWM در بورس اوراق بهادار Amex گسترش می یابد.

یک اسکریپت پایتون برای ایجاد یک فایل csv با داده های قیمت و حجم تاریخی Yahoo Finance
این بخش یک اسکریپت پایتون را برای استخراج داده های قیمت و حجم تاریخی از Yahoo Finance برای هر یک از سه مجموعه نمادهای اشاره شده در بخش قبل، ارائه و توصیف می کند. پیشرفت های این نکته نسبت به نکته قبلی در درجه اول برای رسیدگی به عدم تطابق نمادها بین eoddata و Yahoo Finance و داده های نامناسب در یک یا چند ستون از مقادیر داده سری زمانی است. این بخش همچنین گزیده هایی از خروجی اسکریپت را نمایش می دهد تا نحوه تعامل کد با منابع داده اش را روشن کند.
داده های سری زمانی مالی یاهو در اولین تاریخ تجارت در سال 2009 آغاز می شود و تا 7 اکتبر 2019 اجرا می شود. هر ردیف داده های سری زمانی شامل یک نماد ، تاریخ معاملاتی ، ارزش قیمت (باز ، بالا ، پایین و نزدیک است) ، و یک مقدار حجم. داده های مالی یاهو در هر سه مجموعه نماد از 15 میلیون ردیف فراتر می رود! با این حال ، فرآیند کلی برای جمع آوری داده های سری زمانی نسبتاً سریع اجرا می شود و اجرای آن آسان است.
گلوله های زیر شما را از طریق فیلمنامه طی می کنند.
- فیلمنامه با چند خط نظر شروع می شود (آنها با #شروع می شوند). به طور کلی ، هر بلوک کد در اسکریپت قبل از یک یا چند خط اظهار نظر که خلاصه عملکرد کد است ، مقدم است.
- بیانیه واردات برای pandas_datareader. data به یک برنامه افزودنی برای پایتون پیوند می زند که مخصوصاً برای پردازش داده های جدولی مناسب است ، مانند مواردی که در شات صفحه نمایش قبلی نمایش داده می شود. DataReader وسیله ای برای وارد کردن داده ها از منابع مختلف داده های وب پستی از جمله Finance Yahoo ارائه می دهد. بیانیه واردات نام مستعار وب را به DataReader اختصاص می دهد.
- بیانیه واردات دوم به ماژول داخلی Python DateTime اشاره می کند ، که تکنیک هایی را برای پردازش مقادیر تاریخ و زمان ارائه می دهد.
- نام file_out ثابت رشته "yahoo_prices_volumes_for_exchangesymbols_from_01012009_07102019. csv" است.
- پس از جمع آوری پرونده CSV توسط اسکریپت ، نام پرونده به صورت دستی برای مجموعه منبع نمادها دوباره نامگذاری می شود. به عنوان مثال ، نام پرونده برای اولین مجموعه از نمادها به ‘yahoo_prices_volumes_for_exchangesymbols_from_01012009_07102019_aaba_kzia. csv 'اصلاح شده است.
- یک امتحان ... به جز بیانیه در بیشترین ساختار کد در حلقه است.
- در بلوک آزمایش ، انواع عملیات زیر انجام می شود.
- یک تماس DataReader سعی می کند بلوک مقادیر سری زمانی را برای نماد کنونی کنونی بخواند.
- اگر خواندن موفقیت آمیز باشد ، کد بعدی مقادیر بازگشت را به یک شیء DataFrame وارد می کند.
- پردازش اضافی قبل از قرار دادن مقادیر برگشتی در پرونده CSV انجام می شود.
- روش TO_CSV برای DataFrame یک فایل CSV را با محتویات DataFrame جمع می کند. مقدار حالت برای نماد Ticker تعیین می کند که آیا یک ردیف هدر قبل از اولین ردیف مقادیر سری زمانی برای یک نماد وجود دارد یا خیر.
- ردیف هدر شامل نام ستون برای داده های سری زمانی است. ردیف هدر بلافاصله قبل از ردیف اول داده های سری زمانی برای اولین نماد در مجموعه ای از نمادها ظاهر می شود.
- نمادهای دیگر بعد از نماد اول قبل از مقادیر سری زمانی خود ، ردیف هدر را نشان نمی دهند.
- عبارت PATH_OUT+FILE_OUT نام مسیر و پرونده را برای پرونده CSV تعریف می کند.
- خرابی در هر نقطه در بلوک آزمایش باعث می شود که کد بلوک آزمایشی تکمیل نشود و کنترل را به جز بلوک منتقل کند.
- قوانین زیر قوانین پردازش خطا را تعریف می کند.
- وقوع یک استثناء در قسمت بالای بند به جز بند چاپ می شود.
- اگر عدم خواندن یک بلوک از مقادیر سری زمانی برای یک نماد تیک واجد شرایط برای تلاش دیگر باشد ، پس این نتیجه ویژه وارد می شود و انتقال را به بلوک آزمایش کنترل می کند.
- اگر خرابی برای دهمین تلاش خواندن باشد ، مقدار J به 0 تنظیم می شود. کنترل همچنین به بالای حلقه در حالی که برای تلاش برای خواندن داده ها برای نماد تیکت بعدی منتقل می شود ، انتقال می یابد.
نرم افزار مفید تریدر...
ما را در سایت نرم افزار مفید تریدر دنبال می کنید
برچسب :
نویسنده : احمد شاملو
بازدید : 72
تاريخ : چهارشنبه
23 فروردين
1402 ساعت: 11:10