⑴ 如何编程从免费股票软件中提取实时数据
自己写程序的话,一种方法是从已提供的信息源,例如webservice获取数据。还有种办法就是去连接提供即时信息的网页硬解析。
代码举例如下:
Created on Thu Jul 23 09:17:27 2015
@author: jet
"""
DAY_PRICE_COLS = ['date', 'open', 'high', 'close', 'low', 'volume',
'chg', '%chg', 'ma5', 'ma10', 'ma20',
'vma5', 'vma10', 'vma20', 'turnover']
DAY_PRICE_URL = '%sapi.finance.%s/%s/?code=%s&type=last'
INDEX_KEY = ['SH', 'SZ', 'HS300', 'SZ50', 'GEB', 'SMEB']
INDEX_LIST = {'SH': 'sh000001', 'SZ': 'sz399001', 'HS300': 'sz399300',
'SZ50': 'sh000016', 'GEB': 'sz399006', 'SMEB': 'sz399005'}
INDEX_DAY_PRICE_COLS= ['date', 'open', 'high', 'close', 'low', 'volume',
'chg', '%chg', 'ma5', 'ma10', 'ma20',
'vma5', 'vma10', 'vma20']
K_TYPE_KEY = ['D', 'W', 'M']
K_TYPE_MIN_KEY = ['5', '15', '30', '60']
K_TYPE = {'D': 'akdaily', 'W': 'akweekly', 'M': 'akmonthly'}
MIN_PRICE_URL = '%sapi.finance.%s/akmin?scode=%s&type=%s'
PAGE_TYPE = {'http': 'http://', 'ftp': 'ftp://'}
PAGE_DOMAIN = {'sina': 'sina.com.cn', 'ifeng': 'ifeng.com'}
URL_ERROR_MSG = '获取失败,请检查网络状态,或者API端口URL已经不匹配!'
get_hist_data.py
# -*- coding: utf-8 -*-
"""
Created on Thu Jul 23 09:15:40 2015
@author: jet
"""
import const as ct
import pandas as pd
import json
from urllib2 import urlopen,Request
def get_hist_data(code = None, start = None, end = None, ktype = 'D'):
"""
功能:
获取个股历史交易数据
--------
输入:
--------
code:string
股票代码 比如:601989
start:string
开始日期 格式:YYYY-MM-DD 为空时取到API所提供的最早日期数据
end:string
结束日期 格式:YYYY-MM-DD 为空时取到最近一个交易日数据
ktype:string(default=D, 函数内部自动统一为大写)
数据类型 D=日K线,W=周K线,M=月K线,5=5分钟,15=15分钟
30=30分钟,60=60分钟
输出:
--------
DataFrame
date 日期
open 开盘价
high 最高价
close 收盘价
low 最低价
chg 涨跌额
p_chg 涨跌幅
ma5 5日均价
ma10 10日均价
ma20 20日均价
vma5 5日均量
vma10 10日均量
vma20 20日均量
turnover换手率(指数无此项)
"""
code = code_to_APIcode(code.upper())
ktype = ktype.upper()
url = ''
url = get_url(ktype, code)
print(url)
js = json.loads(ping_API(url))
cols = []
if len(js['record'][0]) == 14:
cols = ct.INDEX_DAY_PRICE_COLS
else:
cols = ct.DAY_PRICE_COLS
df = pd.DataFrame(js['record'], columns=cols)
if ktype in ct.K_TYPE_KEY:
df = df.applymap(lambda x:x.replace(u',', u''))
for col in cols[1:]:
df[col]=df[col].astype(float)
if start is not None:
df = df [df.date >= start]
if end is not None:
df = df[df.date <= end]
df = df.set_index('date')
return df
def code_to_APIcode(code):
"""
功能:
验证输入的股票代码是否正确,若正确则返回API对应使用的股票代码
"""
print(code)
if code in ct.INDEX_KEY:
return ct.INDEX_LIST[code]
else:
if len(code) != 6:
raise IOError('code input error!')
else:
return 'sh%s'%code if code[:1] in ['5', '6'] else 'sz%s'%code
def get_url(ktype, code):
"""
功能:
验证输入的K线类型是否正确,若正确则返回url
"""
if ktype in ct.K_TYPE_KEY:
url = ct.DAY_PRICE_URL % (ct.PAGE_TYPE['http'], ct.PAGE_DOMAIN['ifeng'],
ct.K_TYPE[ktype], code)
return url
elif ktype in ct.K_TYPE_MIN_KEY:
url = ct.MIN_PRICE_URL % (ct.PAGE_TYPE['http'], ct.PAGE_DOMAIN['ifeng'],
code, ktype)
return url
else:
raise IOError('ktype input error!')
def ping_API(url):
"""
功能:
向API发送数据请求,若链接正常返回数据
"""
text = ''
try:
req = Request(url)
text = urlopen(req,timeout=10).read()
if len(text) < 15:
raise IOError('no data!')
except Exception as e:
print(e)
else:
return text
#测试入口
print(get_hist_data('601989','2015-07-11','2015-07-22'))
⑵ 如何用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 = '2015-01-01'
end_date = '2018-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("执行完毕!
⑶ 报错TypeError: 'NoneType' object is not subscriptable寻求解决办法
该错误意味着您正在尝试使用方括号(例如 )访问对象的元素,但该对象支持且不支持此操作。TypeError: 'NoneType' object is not subscriptableobject[index]None
在这种特定情况下,看起来函数正在返回而不是预期的数据框。这可能是由于Tushare API或网络连接出现问题。ts.get_hs300s()None
要修复此错误,您可以尝试以下操作:
查看图共享API文档,以确保您正确使用该函数。get_hs300s()
检查您的网络连接并确保其稳定可靠。
在交互式 Python shell 中使用该函数以查看它是否返回预期的数据框。ts.get_hs300s()
如果函数仍返回 ,请尝试使用其他 API 或数据集来获取所需的股票代码。ts.get_hs300s()None
下面是如何修改代码以处理返回的情况的示例:ts.get_hs300s()None
在这个例子中,我们在尝试访问它的“code”列之前检查变量是否不是。如果数据框是 ,我们通过打印消息来处理这种情况。这可以防止发生错误。hs300NoneNoneTypeError: 'NoneType' object is not subscriptable
回答不易望请采纳
⑷ 解决 pandas_datareader 无法获取雅虎财经数据的问题
pandas_datareader 是重要的 pandas 相关包,原来是 pandas.io.data 方法,用于获取接口数据,比如雅虎财经上的数据或者美联储路易斯安娜分行的数据,但是在最近版本(比如 pandas 0.20)中 pandas.io.data 的方法独立出来称为一个新的包 pandas_datareader 。
雅虎财经和谷歌财经的接口变换频繁。如果用 pip install pandas_datareader ,已经无法得到雅虎财经。
pandas_datareader github Issuse #315 针对的就是雅虎财经接口无法访问的问题, gusutabopb 在 5月21日进行了成功修正,并提供了他修正后的 pandas_datareader 新版本。
该修正版本的安装方法是
安装以后测试获取 google 的股票数据成功。
参考:
Issues with the data reader fetching yahoo finance #315
Error with pulling data from Yahoo Finance
⑸ 混合型\股票型基金有什么办法可以实时查看涨跌走势 和指数型基金一样。
没有办法查看涨跌走势图。
股票说白了就是一种“商品”,和别的商品一样,它的价格也受到它的内在价值(标的公司价值)的控制,而且它的价格无论怎样变化都是围绕之价值周围的。
像普通商品一样,股票的价格波动,供求关系影响着它的价格变化。
和猪肉有一样,当需求的猪肉量大幅度增长,猪肉的供给却跟不上,那猪肉价肯定上升;当市场上的猪肉越来越多,而人们的需求却达不到那么多,供给大于需求,那价格就会下跌。
股票的价格波动表现为:10元/股的价格,50个人卖出,但市场上有100个买,那另外50个买不到的人就会以11元的价格买入,导致股价上涨,否则就会下跌(由于篇幅问题,这里将交易进行简化了)。
平日里,买卖双方的情绪会受到很多事情的影响,进而影响到供求关系的稳定,其中影响比较大的因素有3个,接下来我将给大家进行详细说明。
在这之前,先给大家送波福利,免费领取各行业的龙头股详细信息,涵盖医疗、军工、新能源能热门产业,随时可能被删:【绝密】机构推荐的牛股名单泄露,限时速领!!
一、哪些因素会使得股票出现涨跌变化?
1、政策
国家政策引领着行业和产业,比如说新能源,几年前我国开始对新能源进行开发,针对相关的企业、产业都展开了帮扶计划,比如补贴、减税等。
这就招来大量的市场资金,对于相关行业板块或者上市公司,都会不断的寻找它们,最后引起股票的涨跌。
2、基本面
看长期的趋势,市场的走势和基本面相同,基本面向好,市场整体就向好,比如说疫情期间我国经济优先恢复增长,企业的经营状况变好,股市也会出现回弹的情况。
3、行业景气度
这点是关键所在,不言而喻,股票的涨跌不会脱离行业走势,行业景气度和公司股票的涨幅程度成正比,比如上面说到的新能源。
为了让大家及时了解到最新资讯,我特地掏出了压箱底的宝贝--股市播报,能及时掌握企业信息、趋势拐点等,点击链接就能免费获取:【股市晴雨表】金融市场一手资讯播报
二、股票涨了就一定要买吗?
许多新手刚接触到股票,一看某支股票涨势大好,马上花了几万块投资,后来竟然一路下跌,被套的非常牢。其实股票的变化起伏可以进行短期的人为控制,只要有人持有足够多的筹码,一般来说占据市场流通盘的40%,就可以完全控制股价。学姐觉得如果你还处于小白阶段,把长久持有龙头股进行价值投资放在第一位,防止在短线投资中出现大量损失。吐血整理!各大行业龙头股票一览表,建议收藏!
应答时间:2021-09-23,最新业务变化以文中链接内展示的数据为准,请点击查看
⑹ 如何从tushare中调取十大股东数据
0. 简介
TuShare是一个免费、开源的Python财经数据接口包。主要实现对股票等金融数据从数据采集、清洗加工 到 数据存储的过程,能够为金融分析人员提供快速、整洁、和多样的便于分析的数据,为他们在数据获取方面极大地减轻工作量,使他们更加专注于策略和模型的研究与实现上。考虑到Python pandas包在金融量化分析中体现出的优势,TuShare返回的绝大部分的数据格式都是pandas DataFrame类型。
1. 历史行情
获取个股历史交易数据(包括均线数据),可以通过参数设置获取日k线、周k线、月k线,以及5分钟、15分钟、30分钟和60分钟k线数据。本接口只能获取近3年的日线数据,适合搭配均线数据进行选股和分析。
参数说明:
code:股票代码,即6位数字代码,或者指数代码(sh=上证指数 sz=深圳成指 hs300=沪深300指数 sz50=上证50 zxb=中小板 cyb=创业板)
start:开始日期,格式YYYY-MM-DD
end:结束日期,格式YYYY-MM-DD
ktype:数据类型,D=日k线 W=周 M=月 5=5分钟 15=15分钟 30=30分钟 60=60分钟,默认为D
retry_count:当网络异常后重试次数,默认为3
pause:重试时停顿秒数,默认为0
返回值说明:
date:日期
open:开盘价
high:最高价
close:收盘价
low:最低价
volume:成交量
price_change:价格变动
p_change:涨跌幅
ma5:5日均价
ma10:10日均价
ma20:20日均价
v_ma5:5日均量
v_ma10:10日均量
v_ma20:20日均量
turnover:换手率[注:指数无此项]
(1) #获取全部日k线数据(查看前11行)
⑺ 中国的 Python 量化交易工具链有哪些
万得的Python API,可以用来获取实时数据、历史数据以及下单交易 优点:万得大而全 缺点:下单交易功能不是事件驱动(例如成交回报需要用户去查询,而不是主推)
同花顺iFinD的Python API,类似万得的API 优点:比万得便宜,同花顺的服务态度很好(用户提出新需求后很快就能给出确定的答复或者解决方案)
掘金的量化平台
通联数据的量化平台
QuickFix的Python API(可以用来接国信、方正的FIX接口)
Numpy/Scipy/Matplotlib/Pandas(量化分析)
IPyhon/Spyder(适合做量化分析的IDE环境)
Zipline(策略开发回测)
TuShare财经数据接口 - 可以直接抓取新浪财经、凤凰财经的网站数据,包括行情、基本面、经济数据等等。完全免费,简洁易用,API设计得非常友好,提取的数据格式是Pandas的DataFrame。同时可以获取非高频实时数据(取决于网站更新速度,同事经验大约是15秒),一个极好的非高频股票策略数据解决方案。
恒生电子的量化赢家平台,提供Python接口,链接我点进去后没看到具体的使用教程,希望回头补一下。
米矿ricequant在我提出这个问题时尚只有Java的API,后来也支持了Python,期待2016有新的突破。