در برخی موارد برای بررسی داده های مالی از دید اندیکاتورهای پرکاربرد نیازی به تسلط زیاد به کدنویسی و فروموله کردن اندیکاتورها نیست و به سادگی این داده ها با 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 = ("https://www.investing.com/crypto/bitcoin/btc-usd-technical")
req = Request(url,headers={'User-Agent': 'Mozilla/5.0'})
webpage = urlopen(req).read()
html = soup(webpage, "html.parser")
برای دریافت پیوت پوینت و فیبوناچی و نواحی مقاومت و حمایت و... ساعتی:
# 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 و ...را بررسی کنید.
منبع:
پیوست: