امیر بسترخاکی
امیر بسترخاکی
خواندن ۲ دقیقه·۳ سال پیش

اسکرپر(خزاشگر) و یک نمونه اسکرپر برای دریافت شاخصهای تحلیل های تکنیکال در بازارهای مالی

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

در این مقاله کوتاه ما همین کار را با نوشتن یک اسکرپرscraper ساده با پایتون برای دریافت داده های اندیکاتوری تحلیل تکنیکال و میانگین متحرک و pivot point و فیبوناچی و ... (ساعتی) بیت کوین از سایت Investing[.]com انجام دادیم و ممکن است برای برخی کاربردی و جذاب باشد.این داده ها میتوانند ورودی اتوماتیک یک ربات شخصی تلگرام یا داده های ورودی یک الگوریتم معاملاتی هوش مصنوعی و یا بروزرسانی دیتابیس باشد(داده‌کاوی، تحلیل داده، تحلیل آماری و موارد دیگر)

اگر با اسکرپرینگ آشنا نیستید به طور خلاصه:

وب اسکرپ به فرایند استفاده از ربات ها برای استخراج محتوا و داده ها از یک وبسایت گفته میشود.وب اسکرپینگ Web scraping علاوه برمحتوا می تواند عناصر کد های HTML را نیز استخراج کند.

در تصویر پایین کاربرد وب اسکرپرها به طور خلاصه نشان داده شده است.

کاربردهای وب اسکریپنگ
کاربردهای وب اسکریپنگ


پس به طور خلاصه در این پروژه کوتاه ما داده های "تحلیل تکنیکال اندیکاتوری" و "پیوت پوینت" و "فیبوناچی" و "میانگین متحرک" ساعتی را در محیط گوگل کولب اسکرپ کردیم.(اسکرین شات کامل کد در پیوست)

نصب و فراخوانی لایببری های مورد استفاده و خصوصا BeautifulSoup

!pip install requests
!pip install BeautifulSoup
!pip install python-dotenv
!pip install pandas
!pip install matplotlib

و

import os
import requests
from bs4 import BeautifulSoup as soup
from urllib.request import urlopen, Request
from dotenv import load_dotenv
load_dotenv()
import pandas as pd
import matplotlib
%matplotlib inline

و

# Setup a web scraper for BTC to pull technical indicators based on HOURLY data from Investing.com (for other timeframes use selenium scraper notebook)
url = (&quothttps://www.investing.com/crypto/bitcoin/btc-usd-technical&quot)
req = Request(url,headers={'User-Agent': 'Mozilla/5.0'})
webpage = urlopen(req).read()
html = soup(webpage, &quothtml.parser&quot)

برای دریافت پیوت پوینت و فیبوناچی و نواحی مقاومت و حمایت و... ساعتی:

# Obtain data from the hourly Pivot points table
btc_pivot_points = pd.read_html(str(html), attrs = {'class': 'genTbl closedTbl crossRatesTbl'})[0]
btc_pivot_points
خروجی کد بالا
خروجی کد بالا


و برای دریافت شاخص های اندیکاتوری تحلیل تکنیکال ساعتی:

# Obtain hourly technical data
btc_technicals = pd.read_html(str(html), attrs = {'class': 'genTbl closedTbl technicalIndicatorsTbl smallTbl float_lang_base_1', 'id':'curr_table'})[0]
btc_technicals
خروجی کد بالا
خروجی کد بالا

دریافت میانگین متحرک(Moving Average) بر اساس داده های ساعتی:

# Obtain moving averages based on hourly data
btc_moving_averages = pd.read_html(str(html), attrs = {'class':'genTbl closedTbl movingAvgsTbl float_lang_base_2','id':'curr_table'})[0]
btc_moving_averages
خروجی کد بالا
خروجی کد بالا

شما میتوانید همین کار را به عنوان تمرین برای دریافت داده های اتریوم و سایر کریپتوکارنسی ها یا سهم های فارکس و نزدیک هم انجام دهید.در صورت گنگ بودن حتما داکیومنت های لایببری BeautifulSoup و ...را بررسی کنید.

منبع:

https://www.analyticsvidhya.com/blog/2021/11/a-tool-for-investor-the-art-of-web-scraping/


پیوست:

اسکرین شات کد در گوگل کولب
اسکرین شات کد در گوگل کولب


بیت‌کوینتحلیل تکنیکالفین‌تکپایتون
فعال اکوسیستم استارتاپی | تجربه فعالیت در حوزه های security و E-health و Fintech | مورج و علاقه مند به مدل استارتاپ استودیو و استارتاپ فکتوری
شاید از این پست‌ها خوشتان بیاید