Python推荐美股,在几秒钟内解析TradingView股票推荐!了解如何使用Python解析任意间隔的实时建议!如何买美股可以参考这篇文章。
在我之前的一篇文章中,我们讨论了如何解析Yahoo Finance对任何股票提出的最高分析师建议。尽管他们提供了关于股票未来可能移动的验证,但它们仅每月更新一次,并且没有提供有关评级依据的任何信息。
幸运的是,从那时起,我偶然发现了精美的网站TradingView。如果您不熟悉该站点,则他们提供的功能之一是实时建议,建议提前1分钟或长达1个月。这些建议完全基于技术指标,包括移动平均线,震荡器和枢轴,您可以直接在页面上查看计算结果!
因此,我没有每次需要建议时都访问该站点,而是创建了一个简单的解析器,其中包含少于50行的代码,可以做到这一点。
TradingView简介
在进入编码方面之前,我想快速介绍一下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}')
建立
如果您没有安装Selenium或Pandas,则可以访问它们各自的链接,并在终端中使用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,您可以右键单击要解析的部分,然后按“检查”以得到与下图类似的结果!
我们可以使用.get_attribute(’innerHTML’)方法检索“购买”,该方法将存储HTML标记内的文本。
类似地,我们可以通过找到所有相似的类名称,然后使用方法.find_elements_by_class_name来检索买入,中立和卖出信号的数量。由于这一次我们需要的是元素而不是元素,因此此方法将返回具有我们指定的类名的HTML标记列表。
最后,我们可以将所有信号附加到列表中,并使用.from_records方法,可以将数据元组和列列表转换为DataFrame。最后,我们可以通过以下方法来清理它:为代码行添加一列,将该列设置为索引,并为最终产品转置(旋转)DataFrame。
现在,在几秒钟内,您应该获得与上图类似的输出。希望该算法将来对您有用。非常感谢您的阅读!
免责声明:本文中的材料纯粹是教育性的,不应视为专业的投资建议。怎样买美股可以参考本站相关文章,股市有风险请自行投资。
本文翻译自:https://towardsdatascience.com/parse-tradingview-stock-recommendations-in-seconds-1f4501303b21