Python推荐美股,5秒钟内解析TradingView股票推荐!

Python推荐美股,在几秒钟内解析TradingView股票推荐!了解如何使用Python解析任意间隔的实时建议!如何买美股可以参考这篇文章

我之前的一篇文章中,我们讨论了如何解析Yahoo Finance对任何股票提出的最高分析师建议。尽管他们提供了关于股票未来可能移动的验证,但它们仅每月更新一次,并且没有提供有关评级依据的任何信息。

幸运的是,从那时起,我偶然发现了精美的网站TradingView。如果您不熟悉该站点,则他们提供的功能之一是实时建议,建议提前1分钟或长达1个月。这些建议完全基于技术指标,包括移动平均线,震荡器和枢轴,您可以直接在页面上查看计算结果!

因此,我没有每次需要建议时都访问该站点,而是创建了一个简单的解析器,其中包含少于50行的代码,可以做到这一点。

Python推荐美股,在几秒钟内解析TradingView股票推荐!

TradingView简介

在进入编码方面之前,我想快速介绍一下TradingView上这些建议的内容和位置。如果转到此页面,您将看到与我在下面包含的图像相似的图像。该页面包含主要统计信息,例如市盈率,每股收益,市值,股息信息等等。您甚至可以单击“概述”以获取包含比率的综合表,交互式图表和最新新闻。但是,这不是建议所在的位置。

Python推荐美股,5秒钟内解析TradingView股票推荐! 1

如果继续在“技术”页面上向下滚动,将有多个图表,如下图所示,概述了建议和信号背后原因的统计信息。

Python推荐美股,5秒钟内解析TradingView股票推荐! 2
TradingView推荐图表(我们将抓取的内容)
Python推荐美股,5秒钟内解析TradingView股票推荐! 3
TradingView技术指标统计

推荐的范围从强买到强卖,正如您在第二张图片中看到的,它们完全取决于技术指标信号。我们即将建立的算法将分析买入信号,中立信号,卖出信号和整体推荐的数量。下面的GitHub要点包含所有代码!

使用Python推荐美股

# Imports 
import time
import pandas as pd
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

# Parameters
ticker = 'TSLA'
interval = '1M'

# Set up chromedriver
options = Options()
options.add_argument("--headless")
webdriver = webdriver.Chrome(executable_path='chromedriver', options = options)

# Declare list variable
analysis = []

# Error handling
try:
    # Open tradingview's site
    webdriver.get("https://s.tradingview.com/embed-widget/technical-analysis/?locale=en#%7B%22interval%22%3A%22{}%22%2C%22width%22%3A%22100%25%22%2C%22isTransparent%22%3Afalse%2C%22height%22%3A%22100%25%22%2C%22symbol%22%3A%22{}%22%2C%22showIntervalTabs%22%3Atrue%2C%22colorTheme%22%3A%22dark%22%2C%22utm_medium%22%3A%22widget_new%22%2C%22utm_campaign%22%3A%22technical-analysis%22%7D".format(interval, ticker))
    webdriver.refresh()
    time.sleep(1)
    
    # Recommendation
    recommendation_element = webdriver.find_element_by_class_name("speedometerSignal-pyzN--tL")
    analysis.append(recommendation_element.get_attribute('innerHTML'))
    
    # Counters
    counter_elements = webdriver.find_elements_by_class_name("counterNumber-3l14ys0C")
    
    # Sell, Neutral, and Buy Signal Counts
    analysis.append(int(counter_elements[0].get_attribute('innerHTML')))
    analysis.append(int(counter_elements[1].get_attribute('innerHTML')))
    analysis.append(int(counter_elements[2].get_attribute('innerHTML')))
    
    # Set up DataFrame
    df = pd.DataFrame.from_records([tuple(analysis)], columns=['Overall Recommendation', '# of Sell Signals', '# of Neutral Signals', '# of Buy Signals'])
    df['Ticker'] = [ticker]
    print (df.set_index('Ticker').T)

except Exception as e:
    print (f'Could not get the recommendation due to {e}')

建立

如果您没有安装SeleniumPandas,则可以访问它们各自的链接,并在终端中使用pip下载它们!我们还将需要一个chromedriver(模拟的chrome浏览器Selenium控件),您可以在此处下载。

此外,只要安装了必要的依赖项,就可以使用任何支持Python的IDE或文本编辑器。我个人建议通过Anaconda下载Visual Studio Code或Spyder 。

让我们进入代码

现在,所有内容都应该安装在您的计算机上,并且您对我们将要抓取的内容有了一个想法,让我们开始编写代码!

首先,我们必须导入程序其余部分所需的依赖项。在这种情况下,我们将需要内置的时间模块,Pandas和Selenium。

时间模块将使我们使程序休眠数秒,以便模拟浏览器可以完全加载。熊猫将允许我们使用收集的数据创建一个DataFrame。最后,我们将需要硒,以便我们可以创建/控制浏览器窗口并抓取JavaScript呈现的信息。

接下来,我们可以创建两个变量,一个用于行情自动收录器,另一个用于我们特别抓取的时间间隔。间隔可以是我包含在下面的代码围栏中的任何间隔。

#===================================================================
# Intervals: 
# 1m for 1 minute
# 15m for 15 minutes
# 1h for 1 hour
# 4h for 4 hours
# 1D for 1 day
# 1W for 1 week
# 1M for 1 month
# ==================================================================

包含导入和参数后,我们可以设置chromedriver。Options类允许我们添加诸如headless之类的参数以自定义模拟浏览器。添加无头表示每次运行该程序时浏览器都不会弹出。我们可以将可执行路径设置为您先前下载chromedriver的路径。在这种情况下,我将其直接下载到我的目录中,但您不必这样做。

我们可以将我们的抓取脚本添加到try / except块中,以捕获破坏程序的错误。首先,我们必须使用webdriver.get(URL)打开浏览器,刷新以正确加载页面的各个方面,然后添加time.sleep(1)来减慢程序速度一秒钟,直到浏览器完全呈现为止。

使用selenium.webdriver中的.find_by_class_name方法,我们可以查明要抓取的确切部分。例如,仅推荐具有以下类别“ speedometerSignal-pyzN — tL”。我们可以通过Chrome DevTools中的inspect元素来检索这些类名。顶部打开DevTools,您可以右键单击要解析的部分,然后按“检查”以得到与下图类似的结果!

Python推荐美股,5秒钟内解析TradingView股票推荐! 4

我们可以使用.get_attribute(’innerHTML’)方法检索“购买”,该方法将存储HTML标记内的文本。

类似地,我们可以通过找到所有相似的类名称,然后使用方法.find_elements_by_class_name来检索买入,中立和卖出信号的数量。由于这一次我们需要的是元素而不是元素,因此此方法将返回具有我们指定的类名的HTML标记列表。

最后,我们可以将所有信号附加到列表中,并使用.from_records方法,可以将数据元组和列列表转换为DataFrame。最后,我们可以通过以下方法来清理它:为代码行添加一列,将该列设置为索引,并为最终产品转置(旋转)DataFrame。

Python推荐美股,5秒钟内解析TradingView股票推荐! 5

现在,在几秒钟内,您应该获得与上图类似的输出。希望该算法将来对您有用。非常感谢您的阅读!

免责声明:本文中的材料纯粹是教育性的,不应视为专业的投资建议。怎样买美股可以参考本站相关文章,股市有风险请自行投资。

本文翻译自:https://towardsdatascience.com/parse-tradingview-stock-recommendations-in-seconds-1f4501303b21

User Review
0 (0 votes)
本站最新优惠

Namesilo优惠:新用户省 $1 域名注册-优惠码:45D%UYTcxYuCloZ 国外最便宜域名!点击了解更多

特别优惠:免费赠送 $100 Vultr主机-限时优惠!英文站必备海外服务器!点击了解更多

VPS优惠:搬瓦工优惠码:BWH3OGRI2BMW 最高省5.83%打开外面世界的一款主机点击了解更多

原创文章,作者:江小编,如若转载,请注明出处:https://jhrs.com/2020/38264.html

扫码关注【江湖人士】公众号,您会获得关于国外被动收入的最新资讯

WA付费会员QQ群:387027533,加这个群需要回答您的WA会员名,待核实后予以通过

普通QQ交流群:178758794,可分享交流建站的各类经验和知识

发表评论

电子邮件地址不会被公开。 必填项已用*标注

7 − 7 =