بیاموزید که چگونه توصیه های زمان واقعی را برای هر بازه ای با پایتون تجزیه کنید!
در یکی از مقالات قبلی من ، ما به نحوه تجزیه و تحلیل توصیه های تحلیلگر برتر از یاهو مالی برای هر سهام پرداختیم. در حالی که آنها اعتبارسنجی را ارائه می دادند که در آینده سهام ممکن است در آینده حرکت کند ، آنها فقط یک بار در ماه به روز می شدند و هیچ اطلاعاتی در مورد دلیل منطقی در این رتبه ارائه نمی دادند.
خوشبختانه ، از آن زمان ، من به TradingView Site فوق العاده گیر افتاده ام. اگر با سایت آشنا نیستید ، یکی از ویژگی های ارائه شده آنها توصیه های زمان واقعی برای 1 دقیقه جلوتر یا تا 1 ماه پیش رو است. این توصیه ها صرفاً مبتنی بر شاخص های فنی از جمله میانگین حرکت ، نوسان ساز و محوری است و می توانید محاسبات را مستقیماً در صفحه مشاهده کنید!
بنابراین به جای بازدید از سایت هر بار که می خواستم توصیه ای داشته باشم ، این تجزیهگر ساده را با کمتر از 50 خط کد ایجاد کردم که می تواند همین کار را انجام دهد.
آشنایی با TradingView
قبل از اینکه به جنبه برنامه نویسی وارد شوم ، می خواهم به سرعت در مورد آنچه و این توصیه ها در TradingView قرار دارند ، لمس کنم. اگر به این صفحه بروید ، چیزی شبیه به تصویری را که در زیر آورده ام مشاهده خواهید کرد. این صفحه شامل آمار کلیدی مانند نسبت قیمت به درآمد ، درآمد هر سهم ، کلاه بازار ، اطلاعات سود سهام و موارد دیگر است. حتی می توانید برای بدست آوردن یک جدول جامع و پر از نسبت ها و همچنین یک نمودار تعاملی و اخبار اخیر ، روی اجمالی کلیک کنید. با این حال ، این جایی نیست که توصیه ها در آن قرار دارند.
اگر به پیمایش در صفحه تکنیک ها ادامه دهید ، چندین نمودار مانند نمونه زیر وجود خواهد داشت که توصیه ها و آمار استدلال پشت سیگنال را تشریح می کند.
این توصیه ها از خرید قوی تا فروش قوی متغیر است و همانطور که در تصویر دوم مشاهده می کنید ، آنها کاملاً به سیگنال های نشانگر فنی وابسته هستند. الگوریتمی که به زودی در حال ساختن آن خواهیم بود تعداد سیگنال های خرید ، سیگنال های خنثی ، فروش سیگنال و توصیه کلی را تجزیه می کند. GitHub Gist در زیر شامل تمام کد است!
Scraping TradingView با استفاده از پایتون
برپایی
در صورت نصب سلنیوم یا پاندا ، می توانید به لینک های مربوطه آنها مراجعه کرده و آنها را با استفاده از PIP در ترمینال خود بارگیری کنید! ما همچنین به یک Chromedriver (کنترل های شبیه سازی شده کروم Selenium) نیاز خواهیم داشت و برای بارگیری آن با استفاده از پایتون می توانید از بسته WebDriver-Manager که در PYPI نیز یافت می شود ، استفاده کنیم.
علاوه بر این ، می توانید از هر ویرایشگر IDE یا متن که از پایتون پشتیبانی می کند ، تا زمانی که وابستگی های لازم را نصب کنید ، استفاده کنید. من شخصاً توصیه می کنم کد استودیو ویژوال یا Spyder را از طریق آناکوندا بارگیری کنید.
بیایید وارد کد شویم
اکنون که همه چیز را باید روی دستگاه شما نصب کرد و شما ایده ای برای آنچه که ما در حال خراش خواهیم بود ، بگذارید وارد کد شویم!
اول ، ما باید وابستگی هایی را که برای بقیه برنامه نیاز داریم وارد کنیم. در این حالت ، ما به ماژول زمان داخلی ، پاندا و سلنیوم نیاز خواهیم داشت.
ماژول زمان به ما امکان می دهد تا برنامه را برای چند ثانیه بخوابیم تا مرورگر شبیه سازی شده بتواند به طور کامل بارگیری شود. پاندا به ما این امکان را می دهد تا با داده هایی که جمع می کنیم ، یک DataFrame ایجاد کنیم. سرانجام ، ما به سلنیوم احتیاج خواهیم داشت تا بتوانیم یک پنجره مرورگر ایجاد و کنترل کنیم و اطلاعات ارائه شده توسط جاوا اسکریپت را خراش دهیم.
در مرحله بعد ، ما می توانیم دو متغیر ایجاد کنیم ، یکی برای تیک و دیگری برای فاصله زمانی که ما به ویژه در حال خراش دادن هستیم. فاصله می تواند هر یک از مواردی باشد که من در حصار کد زیر گنجانده ام.
پس از وارد کردن واردات و پارامترها ، می توانیم Chromedriver را تنظیم کنیم. کلاس گزینه ها به ما امکان می دهد استدلالهایی مانند Headless را برای سفارشی کردن مرورگر شبیه سازی شده اضافه کنیم. اضافه کردن بدون سر به مرورگر می گوید هر بار که برنامه را اجرا می کنید ظاهر نشود. ما می توانیم مسیر اجرایی را به مسیری که قبلاً Chromedriver را بارگیری کرده اید تنظیم کنیم. در این حالت ، من آن را مستقیماً در فهرست خود بارگیری کردم اما شما مجبور نیستید.
ما می توانیم اسکریپت خراش خود را در داخل یک آزمایش/به جز بلوک اضافه کنیم تا از شکستن برنامه خود خطاهای خود را بدست آوریم. ابتدا باید مرورگر را با استفاده از WebDriver. get (url) باز کنیم ، برای بارگیری تمام جنبه های صفحه به درستی ، و سپس اضافه کردن زمان. sleep (1) اضافه کنیم تا یک ثانیه برنامه را کند کند تا مرورگر کاملاً ارائه شود.
با استفاده از روش . find_by_class_name در selenium. webdriver ، می توانیم بخش های دقیقی را که می خواهیم خراش دهیم مشخص کنیم. به عنوان مثال ، فقط این توصیه کلاس زیر "Speedometersignal-pyzn-tl" را دارد. ما می توانیم این نام های کلاس را با بازرسی Element در Chrome Devtools بازیابی کنیم. Top DevTools را باز کنید ، می توانید بر روی بخشی که می خواهید تجزیه کنید ، کلیک راست کنید و سپس "بازرسی" را فشار دهید تا نتیجه مشابهی با تصویر زیر بدست آورید!
ما می توانیم "خرید" را با استفاده از روش . get_attribute ("ierhtml") بازیابی کنیم که متنی را که در برچسب HTML قرار دارد ، ذخیره می کند.
به طور مشابه ، ما می توانیم با پیدا کردن یک نام کلاس که بین همه آنها مشابه است و سپس با استفاده از روش . find_element_by_class_name ، تعداد خرید ، خنثی و فروش سیگنال ها را بازیابی کنیم. از آنجا که این بار ما خواستار عناصر هستیم ، نه یک عنصر ، این روش لیستی از برچسب های HTML را که نام کلاس را که مشخص می کنیم ، باز می گرداند.
در آخر ، ما می توانیم تمام سیگنال ها را به یک لیست اضافه کنیم و با استفاده از روش . from_records ، می توانیم یک قطعه از داده های خود را تبدیل کنیم و لیستی از ستون ها را به یک DataFrame تبدیل کنیم. سرانجام ، ما می توانیم با اضافه کردن یک ستون برای تیک ، تنظیم آن ستون به عنوان شاخص ، و انتقال (چرخش) DataFrame برای محصول نهایی خود را تمیز کنیم.
اکنون در عرض چند ثانیه ، باید یک خروجی مشابه با تصویر بالا دریافت کنید. امیدوارم این الگوریتم در آینده برای شما مفید باشد. از خواندن این مطلب متشکریم!
سلب مسئولیت: مطالب موجود در این مقاله صرفاً آموزشی است و نباید به عنوان مشاوره سرمایه گذاری حرفه ای در نظر گرفته شود. با اختیار خود سرمایه گذاری کنید.
اگر از این مقاله لذت بردید ، به جامعه سرمایه گذاری رایگان من در زمینه بی نظیر بپیوندید و برخی از مقاله های دیگر من را در زیر ببینید!
فارکس وکسب درامد...
ما را در سایت فارکس وکسب درامد دنبال می کنید
برچسب :
نویسنده : آرش اصل زاد
بازدید : <-PostHit->
تاريخ : جمعه
11 فروردين
1402 ساعت: 15:19