Python 簡小股票價格讀取程序

本文介绍了一个简单的Python股票价格阅读器,利用lxml模块从Yahoo Finance获取股票数据。通过定位网页元素,程序能获取指定股票的价格信息。由于网站限制,不能大量读取数据,以防IP被封锁。此程序适用于技术分析,依赖股票历史数据进行买卖信号预测。
摘要由CSDN通过智能技术生成

金融問題,好像和中國的股市不相干似的,天天在升。而香港的股市沒有跟隨美國股市帶領,轉向由中資股主導的市場。

然而,股市是很波動的,股市數據也很大量,作為一個普通人,如何穫取自已的所須信息呢?

 


<script type="text/javascript"> </script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"></script>

以下是由python 制作的小小股票價格讀取器,示範用途,功能不完善

程式環境要求

在此就不仔細說如何,安裝lxml modules 了,請查詢其它相關文章

 

在未進行編程時,先到我們的目標,例如Yahoo! Finance,用IE Developer Tool, 或Firefox 的firebug. 快速的讀取源代碼,該價格小格的HTML DOM Tree 識別符號,這有利於我拆解目標網站的資料,如上圖所顯示, 我們找到了 ID Tag,但價格那個元素里沒有ID Tag,怎麼做呢,我們先用ID tag 找到我們要的區域,因為ID Tag 理應在整個HTML 里只有一個,所以,我們可以很準確找到要的元素,然後再用Class 來找就沒什麼問題了。

 

以下是整個程式代碼

  1. import threading
  2. import urllib
  3. import lxml. html
  4. import time
  5.  
  6. class WorkerThread ( threading . Thread ) :
  7.    
  8.     def __init__ ( self ,task ) :
  9.         self . task = task
  10.         threading . Thread . __init__ ( self )
  11.    
  12.     def run ( self ) :
  13.         while True :
  14.             print 'Runging ....'
  15.             if self . task ! = None :
  16.                 url = 'http://hk.finance.yahoo.com/q?s=%s.hk' % task
  17.                 print 'url:%s' % url
  18.                 f = urllib . urlopen ( url )
  19.                 htmlContent = f. read ( )
  20.                 f. close ( )
  21.                 print 'finish read web content'
  22.                 html = lxml. html . fromstring ( htmlContent )
  23.                 box = html. get_element_by_id ( 'quote-bar-latest' )
  24.                 vals = box. find_class ( 'price' )
  25.                 if vals is not None and len ( vals ) > 1:
  26.                     print 'code: %s, Price: %s' % ( self . task ,vals [ 0 ] )
  27.                
  28.                 time . sleep ( 5.0 )
  29.                
  30.    
  31.  
  32. def StartWorker ( taskList = [ ] ) :
  33.     for task in taskList:
  34.         WorkerThread ( task ) . start ( )
  35.    
  36.  
  37. tasks = [ ]
  38. tasks. append ( '0005' )
  39. tasks. append ( '2007' )
  40.  
  41. StartWorker ( tasks )

 

這段代碼,只說明了,我們能通過一些大型網絡讀取股票數據,在某些網站,他們的伺服器是做了一些設置, 我們并不能大量的讀取,不然,會對我的IP 進行封鎖。也許你會問,我要這數據做什麼用呢。在金融界里,有 兩派,一種是依靠技術分析,說的就是用過往股價表現,用特定方程式,估數,股票到達某個價位,就為買入信 號,當然,也有賣出信號。而這類分析,就很依賴股價數據。在往後幾篇,我會完善這個小程式,當然,依然會 使用Python 作為工具



<script type="text/javascript"> </script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"></script>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: Trin指标(也称Arms指标)是一种衡量市场内部强度的技术指标,计算方式为成交量的比率与上涨和下跌股票数的比率的比值。一般来说,当Trin指标的数值低于1.0时,市场偏多,而当Trin指标的数值高于1.0时,市场偏空。 下面是用Python编写计算股票Trin指标的程序: ```python import pandas as pd import yfinance as yf # 获取股票数据 symbol = "AAPL" # 股票代码 start_date = "2020-01-01" # 起始日期 end_date = "2022-02-15" # 结束日期 stock_data = yf.download(symbol, start=start_date, end=end_date) # 计算Trin指标 up_volume = stock_data.loc[stock_data['Close'] > stock_data['Open'], 'Volume'].sum() down_volume = stock_data.loc[stock_data['Close'] < stock_data['Open'], 'Volume'].sum() up_count = stock_data.loc[stock_data['Close'] > stock_data['Open']].shape[0] down_count = stock_data.loc[stock_data['Close'] < stock_data['Open']].shape[0] trin = (up_volume / down_volume) / (up_count / down_count) print("Trin指标:", trin) ``` 上述代码首先使用`yfinance`库获取指定股票的数据,并将其存储在`stock_data`变量中。然后,通过计算上涨和下跌交易日的成交量总和以及上涨和下跌交易日的数量,计算Trin指标的数值,并将其存储在`trin`变量中。最后,输出Trin指标的值。 需要注意的是,Trin指标的计算方法有多种不同的实现方式,具体的计算方法可能会因地区、市场等因素而有所不同。上述代码仅为一种可能的实现方式。 ### 回答2: Trin指标是一种技术分析工具,用于判断市场的超买或超卖情况。它是通过将成交量比值与价格指标结合起来计算的。 要用Python编写程序计算股票的Trin指标,需要以下步骤: 1. 获取股票的交易数据,包括开盘价、收盘价和成交量等信息。 2. 计算股票的典型价格,即每日的(最高价+最低价+收盘价)/3。 3. 计算股票的涨跌比率,即当日上涨股票数目除以下跌股票数目。 4. 计算股票的Trin指标,即将涨跌比率除以成交量的比率。 Trin = 上涨股票数目 / 下跌股票数目 / 成交量 * 1000。 以下是一个简化的Python程序示例: ```python import pandas as pd # 获取股票的交易数据 data = pd.read_csv('股票数据.csv') # 计算股票的典型价格 typical_price = (data['High'] + data['Low'] + data['Close']) / 3 # 计算股票涨跌比率 up_ratio = data['Up_stock_count'] / data['Down_stock_count'] # 计算Trin指标 trin = up_ratio / data['Volume'] * 1000 # 输出结果 print(trin) ``` 这个程序使用了pandas库来读取和处理股票交易数据。在计算涨跌比率和Trin指标时,需要确保数据的质量和准确性,以获得正确的分析结果。 注意:这只是一个简单的示例,实际应用中可能还需要考虑更多的因素和方法来计算Trin指标,并将其与其他指标结合使用以进行更全面的技术分析。 ### 回答3: Trin指标也被称为Arms指标,是用于衡量股票市场的供需关系的一种技术分析工具。它的计算方法如下: 1. 首先,需要获取市场上的成交量数据和涨跌家数数据。 2. 根据成交量数据,计算每个交易日的能量指标。能量指标计算公式为:能量指标 = 上涨家数 / 下跌家数。 3. 根据能量指标,计算每个交易日的Trin指标。Trin指标计算公式为:Trin指标 = (当日成交量 / 能量指标),其中能量指标不可以为0。 以下是使用Python编写计算Trin指标的程序示例: ```python import pandas as pd # 读取成交量数据和涨跌家数数据,假设数据保存在csv文件中 volume_data = pd.read_csv('volume.csv') adv_decl_data = pd.read_csv('adv_decl.csv') # 计算能量指标 energy_index = adv_decl_data['Advances'] / adv_decl_data['Declines'] # 计算Trin指标 trin_index = volume_data['Volume'] / energy_index # 输出Trin指标 print(trin_index) ``` 以上代码中,我们假设成交量数据保存在`volume.csv`文件中,列名为"Volume";涨跌家数数据保存在`adv_decl.csv`文件中,列名分别为"Advances"和"Declines"。我们使用pandas库来读取csv文件,并进行相应的计算和数据处理。 最后,我们通过打印输出计算得到的Trin指标。根据输出结果,我们可以分析Trin指标的趋势,来判断市场的供需关系和可能的价格走势。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值