㈠ 如何用python 爬虫抓取金融数据
获取数据是数据分析中必不可少的一部分,而网络爬虫是是获取数据的一个重要渠道之一。鉴于此,我拾起了Python这把利器,开启了网络爬虫之路。
本篇使用的版本为python3.5,意在抓取证券之星上当天所有A股数据。程序主要分为三个部分:网页源码的获取、所需内容的提取、所得结果的整理。
一、网页源码的获取
很多人喜欢用python爬虫的原因之一就是它容易上手。只需以下几行代码既可抓取大部分网页的源码。
为了减少干扰,我先用正则表达式从整个页面源码中匹配出以上的主体部分,然后从主体部分中匹配出每只股票的信息。代码如下。
pattern=re.compile('<tbody[sS]*</tbody>')
body=re.findall(pattern,str(content)) #匹配<tbody和</tbody>之间的所有代码pattern=re.compile('>(.*?)<')
stock_page=re.findall(pattern,body[0]) #匹配>和<之间的所有信息
其中compile方法为编译匹配模式,findall方法用此匹配模式去匹配出所需信息,并以列表的方式返回。正则表达式的语法还挺多的,下面我只罗列所用到符号的含义。
语法 说明
. 匹配任意除换行符“ ”外的字符
* 匹配前一个字符0次或无限次
? 匹配前一个字符0次或一次
s 空白字符:[<空格> fv]
S 非空白字符:[^s]
[...] 字符集,对应的位置可以是字符集中任意字符
(...) 被括起来的表达式将作为分组,里面一般为我们所需提取的内容
正则表达式的语法挺多的,也许有大牛只要一句正则表达式就可提取我想提取的内容。在提取股票主体部分代码时发现有人用xpath表达式提取显得更简洁一些,看来页面解析也有很长的一段路要走。
三、所得结果的整理
通过非贪婪模式(.*?)匹配>和<之间的所有数据,会匹配出一些空白字符出来,所以我们采用如下代码把空白字符移除。
stock_last=stock_total[:] #stock_total:匹配出的股票数据for data in stock_total: #stock_last:整理后的股票数据
if data=='':
stock_last.remove('')
最后,我们可以打印几列数据看下效果,代码如下
print('代码',' ','简称',' ',' ','最新价',' ','涨跌幅',' ','涨跌额',' ','5分钟涨幅')for i in range(0,len(stock_last),13): #网页总共有13列数据
print(stock_last[i],' ',stock_last[i+1],' ',' ',stock_last[i+2],' ',' ',stock_last[i+3],' ',' ',stock_last[i+4],' ',' ',stock_last[i+5])
㈡ 如何使用Python获取股票分时成交数据
可以使用爬虫来爬取数据,在写个处理逻辑进行数据的整理。你可以详细说明下你的需求,要爬取的网站等等。
希望我的回答对你有帮助
㈢ 如何用python计算某支股票持有90天的收益率
首先你要先获得这支股票90天的数据,可以存在一个arry中。
然后计算收益率 r = (arry[89]-arry[0])/arry[0],如果要计算任意连续90天的话只要循环就可以了。
许多人更喜欢去做短线,因为短线刺激,无法承受长线持股待涨的煎熬,可是假如不会做短线,则可能会导致亏得更快。做T的秘籍大家一定很想知道,今天就给大家讲讲。
我准备了好处给大家,机构精选的牛股大盘点!希望大家不要错过--速领!今日机构牛股名单新鲜出炉!
一、股票做T是什么意思
现在市场上,A股的交易市场模式是T+1,意思就是今天买的股票,只有明天才能卖出。
而股票做T,当天买入的股票在当天卖出,这就是股票进行T+0的交易操作,投资人在可交易的一天通过股票的涨幅和跌停有了股票差价,在股票大幅下跌时赶紧买入,涨得差不多之后再将买入的部分卖出,就是用这种方法赚钱的。
假如说,在昨天我手里还有1000股的xx股票,市价10元/股。今天一大早发现该股居然跌到了9.5元/股,然后趁机买入了1000股。结果到了下午时,这只股票的价格就突然间大幅上涨到一股10.5元,我就急忙地以10.5/股的价格售出1000股,然后获取(10.5-9.5)×1000=1000元的差价,这就是做T。
但是,不是每种股票做T都合适!正常来说,那些日内振幅空间较大的股票,它们是适合去做T的,比如说,每日能有5%的振幅空间。想知道某只股票适不适合的,点开这里去看一下吧,专业的人员会为你估计挑选出最适合你的T股票!【免费】测一测你的股票到底好不好?
二、股票做T怎么操作
怎么才能够把股票做到T?正常情况下分为两种方式,分别为正T和倒T。
正T即先买后卖,投资手里,手里面赚有这款股票,在当天股票开盘的时候下跌到了最低点时,投资者买入1000股,等到股票变高的时候在高点,将这1000股彻底卖出,持有的总股票数还是跟以前一样,T+0的效果这样就能够达到了,又能够享有中间赚取的差价。
而倒T即先卖后买。投资者通过严密计算得出,股票存在下降风险,因此在高位点先卖出手中的一部分股票,接着等股价回落后再去买进,总量仍旧有办法保持不变,然而,收益是会产生的。
比方投资者,他占有该股2000股,而10元/股是当天早上的市场价,觉得持有的股票在短时间内就会有所调整,,于是卖出手中的1500股,等股票跌到一股只需要9.5元时,这只股票差不多就已经能让他们感到满意了,再买入1500股,这就赚取了(10-9.5)×1500=750元的差价。
这时有人就问了,那要如何知道买入的时候正好是低点,卖出的时候正好是高点?
其实有一款买卖点捕捉神器,它能够判断股票的变化趋势,绝对能让你每次都抓住重点,点开链接就能立刻领取到了:【智能AI助攻】一键获取买卖机会
应答时间:2021-09-23,最新业务变化以文中链接内展示的数据为准,请点击查看
㈣ 如何用python代码判断一段范围内股票最高点
Copyright © 1999-2020, CSDN.NET, All Rights Reserved
登录
python+聚宽 统计A股市场个股在某时间段的最高价、最低价及其时间 原创
2019-10-12 09:20:50
开拖拉机的大宝
码龄4年
关注
使用工具pycharm + 聚宽数据源,统计A股市场个股在某时间段的最高价、最低价及其时间,并打印excel表格输出
from jqdatasdk import *
import pandas as pd
import logging
import sys
logger = logging.getLogger("logger")
logger.setLevel(logging.INFO)
# 聚宽数据账户名和密码设置
auth('username','password')
#获取A股列表,包括代号,名称,上市退市时间等。
security = get_all_securities(types=[], date=None)
pd2 = get_all_securities(['stock'])
# 获取股票代号
stocks = list(get_all_securities(['stock']).index)
# 获取股票名称
stocknames = pd2['display_name']
start_date = -01-01'
end_date = -12-31'
def get_stocks_high_low(start_date,end_date):
# 新建表,表头列
# 为:"idx","stockcode","stockname","maxvalue","maxtime","lowvalue","lowtime"
result = pd.DataFrame(columns=["idx", "stockcode", "stockname", "maxvalue", "maxtime", "lowvalue", "lowtime"])
for i in range(0,stocks.__len__()-1):
pd01 = get_price(stocks[i], start_date, end_date, frequency='daily',
fields=None, skip_paused=False,fq='pre', count=None)
result=result.append(pd.DataFrame({'idx':[i],'stockcode':[stocks[i]],'stockname':
[stocknames[i]],'maxvalue':[pd01['high'].max()],'maxtime':
[pd01['high'].idxmax()],'lowvalue': [pd01['low'].min()], 'lowtime':
[pd01['low'].idxmin()]}),ignore_index=True)
result.to_csv("stock_max_min.csv",encoding = 'utf-8', index = True)
logger.warning("执行完毕!
㈤ python的QSTK中,里面股票的历史数据是包含在包里面么,还是通过网络获取
在 Python的QSTK中,是通过 s_datapath 变量,定义相应股票数据所在的文件夹。一般可以通过 QSDATA 这个环境变量来设置对应的数据文件夹。
具体的股票数据来源,例如沪深、港股等市场,你可以使用免费的WDZ程序输出相应日线、5分钟数据到 s_datapath 变量所指定的文件夹中。然后可使用 Python的QSTK中,qstkutil.DataAccess进行数据访问。
㈥ 如何选取过去每个月股票的市值 python
类似,可以修改一下
股票涨跌幅数据是量化投资学习的基本数据资料之一,下面以python代码编程为工具,获得所需要的历史数据。主要步骤有:
(1) #按照市值从小到大的顺序活得N支股票的代码;
(2) #分别对这一百只股票进行100支股票操作;
(3) #获取从2016.05.01到2016.11.17的涨跌幅数据;
(4) #选取记录大于40个的数据,去除次新股;
(5) #将文件名名为“股票代码.csv”。
具体代码如下:
# -*- coding: utf-8 -*-
"""
Created on Thu Nov 17 23:04:33 2016
获取股票的历史涨跌幅,并分别存为csv格式
@author: yehxqq151376026
"""
import numpy as np
import pandas as pd
#按照市值从小到大的顺序活得100支股票的代码
df = get_fundamentals(
query(fundamentals.eod_derivative_indicator.market_cap)
.order_by(fundamentals.eod_derivative_indicator.market_cap.asc())
.limit(100),'2016-11-17', '1y'
)
#分别对这一百只股票进行100支股票操作
#获取从2016.05.01到2016.11.17的涨跌幅数据
#选取记录大于40个的数据,去除次新股
#将文件名名为“股票代码.csv”
for stock in range(100):
priceChangeRate = get_price_change_rate(df['market_cap'].columns[stock], '20160501', '20161117')
if priceChangeRate is None:
openDays = 0
else:
openDays = len(priceChangeRate)
if openDays > 40:
tempPrice = priceChangeRate[39:(openDays - 1)]
for rate in range(len(tempPrice)):
tempPrice[rate] = "%.3f" %tempPrice[rate]
fileName = ''
fileName = fileName.join(df['market_cap'].columns[i].split('.')) + '.csv'
fileName
tempPrice.to_csv(fileName)
㈦ 问一个Python分析股票价格的问题......
你先把价格按日期排序之后变成一个list的话,比如:
price=[70,74, 73, 72, 71,75]
你可以这么办:
operations=[]
isLong=False
for i in range(len(price)-1):
if(not isLong):
if(price[i]<price[i+1]):
print "Go long on day " + str(i)
operations.append(-1);
isLong=True;
else:
operations.append(0);
else:
if(price[i]>price[i+1]):
print "Go short on day " + str(i)
operations.append(1);
isLong=False;
else:
operations.append(0);
if(isLong):
print "Go short on day " + str(len(price)-1)
operations.append(1)
else:
operations.append(0)
ProfitPerShare=0
for i in range(len(price)):
ProfitPerShare+=price[i]*operations[i]
print "Summary profit per share: "+str(ProfitPerShare)
这里面就是说,如果你是空仓,那么如果明天比今天高就买,否则明天买就比今天买更划算;如果你不空仓,那么如果明天比今天价低你就要清仓,否则明天卖就会更划算。然后用一个叫operations的list来记录你每天的操作,-1表示买,0表示没有,1表示卖,所以最后可以计算每股获得的收入price[i]*operations[i]的总和。
㈧ python读取财经数据
提取日期数据基本语法
from WindPy import w
w.start()
当出现.ErrorCode==-103说明没连接上,要start一下
w.wsd(security, fields, startDate = None, endDate= None , options = None)
opion 可选(period, 日期类型, 货币类型,前后复权)
提取财务数据基本语法
w.wss(security, fields, options = None)
提取板块日序列基本语法
w.wses(sectorCode, fields, startDate = None, endDate = None, options = None)
提取板块日截面数据基本语法
w.wsee(sectorCode, fields, options=None)
提取宏观数据基本语法
w.edb(codes, startDate =None, endDate =None, options=None)
1.日期序列基本语法
ts.get_hist_data(stock,start,end)
注意:1.stock不能是集合,只能单个股票 2.需要带上.sz或.sh 3.没有field,只能取出数据后再切除.
2.pro用法
pro.daily(code, start, end, fields)
tushare引用语句
弊端也很明显,一方面不能stock集合输入,一次只能调取一个股票对应数据,另一方面tushare虽是免费试用,但有权限限制。
基本语法
wb.get_data_yahoo(code, start, end)
wb.DataReader(code, 'yahoo', start, end)
没法添加fields, 虽能集合适用,但出来的索引挺奇怪的
推荐使用定义函数或用for循环批量获取数据
总体感觉wind api最舒服,但需要账号,mac也不能直接调用wind api。还是推荐tushare的pro用法。
小白学习中,请指教=v=
㈨ 怎样遍历任意股票历史数据要求使用循环。
下载个大智慧就可以了啊