2、量化交易数据获取
约 12126 字大约 40 分钟
2026-05-30
量化交易数据获取
1.获取股票财务数据
1.财务数据
(1)查询财务数据:get_fundamentals()函数
get_fundamentals(query_object,date=None,statDate=None)注意:date和statDate参数只能传入一个
传入date时,查询指定日期date收盘后所能看到的最近(除市值表外为最近一个季度,市值表为最近一天)的数据
传入statDate时,查询statDate指定的季度或者年份的财务数据
date/statdate: 获取一个字符串(格式类似'2015-10-15')或者datetime对象
query_object: 一个sqlalchemy.orm.query.Query对象,可以通过全局的query 函数获取Query对象
(2)查询对象:query_object
查询数据API,可以是整张表,也可以是表中的多个字段或计算结果
filter: 填写过滤条件,多个过滤条件可用逗号隔开,或and,or
order_by: 填写排序条件
limit: 限制返回的个数
group_by: 分组统计
例如:
查询 ‘000001.XSHE’的全部市值数据
query(valuation).filter(valuation.code=='000001.XSHE')(3)查询多日财务数据:get_fundamentals_continuously()函数
get_fundamentals_ continuously(query_object, end_date=None, count=None, panel=True)end_date: 获取一个字符串(格式类似'2015-10-15')或者datetime对象
count: 获取end_date前count个日期的数据,count须小于500
panel: 默认panel=True,返回一个pandas.Panel; 建议设置panel为False,返回等效的dataframe
代码案例
#查询get_fundamentals_continuously函数
q = query(
valuation.market_cap,
valuation.pe_ratio,
valuation.turnover_ratio,
indicator.eps
).filter(valuation.code.in_(['000001.XSHE','600000.XSHG']))
result = get_fundamentals_continuously(q,end_date='2022-01-01',count=5,panel=False)
print(result)
'''
# 查询平安银行2022年度第二季度的财务数据
query_object = query(
income.statDate,
income.code,
income.basic_eps
).filter(
income.code == '000001.XSHE'
)
result = get_fundamentals(query_object, statDate='2025-09')
print(result)
'''
'''
# 查询平安银行2022年9月1日的总市值
q = query(valuation).filter(valuation.code == '000001.XSHE')
df = get_fundamentals(q, '2022-09-01')
print(df['market_cap'][0])
'''2.获取成分股数据
1.指数成分股
查询指定指数指定日期可交易的成分股列表
get_index_stocks(index_symbol, date=None)
index_symbol: 指数代码
date/statdate: 获取一个字符串(格式类似'2015-10-15)或者datetime对象返回: 返回股票代码的list
2.行业成分股
查询指定行业的所有股票
get_industy_stocks(industry_code, date=None)
industry_code: 行业编码
date/statdate: 获取一个字符串(格式类似'2015-10-15’)或者datetime对象返回: 返回股票代码的list
3.概念成分股
查询指定概念板块的所有股票
get_concept_stocks(concept_code, date=None)
concept_code: 行业编码
date/statdate: 获取一个字符串(格式类似'2015-10-15)或者datetime对象返回: 返回股票代码的list
代码案例
# 1.指数成分股
# 返回沪深300的股票(输出100个)
index_stocks = get_index_stocks('000300.XSHG')
print(index_stocks[0:100])
# 2.行业成分股
# 获取计算机/互联网行业的成分股
industry_stocks = get_industry_stocks('I64')
print(industry_stocks)
# 3.概念成分股
# 获取风电概念板块的成分股
concept_stocks = get_concept_stocks('sc0084', date='2022-06-01')
print(concept_stocks)3.获取标的信息
1.获取所有标的信息
获取平台支持的所有股票、基金、指数、期货、期权信息
get_all_securities(types=[], date=None)
types: security种类,list类型。支持:'stock','fund','index','futures'等
date: 获取一个字符串(格式类似'2015-10-15’)或者datetime对象
返回: 返回dataframe对象
2.获取单个标的信息
获取单个标的信息,包括中文名称,简称,上市日期,退市日期,标的种类等等
get_ security_info(code,date=None)
code: 证券代码
date: 获取一个字符串(格式类似'2015-10-15')或者datetime对象
返回: 返回数据对象
代码案例
# 获取平台所有标的信息,返回前十
print(get_all_securities()[:10])
#获取平台所有ETF信息
print(get_all_securities(types=['etf'],date='2022-09-01')[:10])
# 获取平台单个标的信息
print(get_security_info('000001.XSHE'))
print(get_security_info('000001.XSHE').start_date)
print(get_security_info('000001.XSHE').type)4.获取股票交易数据
1.获取行情数据
获取证券行情数据,可查询多个标的多个数据字段
get_price(security,
start_date=None,
end_date=None,
frequency='daily',
fields=None,
skip_paused=False,
fq='pre',
count=None,
panel=True,
fill_paused=True)security: 一支股票代码或者一个股票代码的list
count:与start_date二选一,不可同时使用。数量,返回的结果集的行数,即表示获取 end_date 之前几个frequency的数据
start_date:与count二选一,不可同时使用。字符串或者datetime对象,开始时间
end_date:同start_date,结束时间
frequence:单位时间长度,几天或者几分钟,现在支持'Xd,'Xm',‘daily(等同于'1d),
fields:字符串list,选择要获取的行情数据字段,默认是None(常用['open','close','high','low','volume','money']这几个标准字段)
skip_paused:是否跳过不交易日期(包括停牌,未上市或者退市后的日期
fq:复权选项(对股票/基金的价格字段、成交量字段及factor字段生效)
panel:获取多标的数据时建议设置panel为False,在pandas 0.25版后,panel被彻底移除
fill_paused:对于停牌股票的价格处理,默认为True;True表示用preclose价格填充;
5.获取龙虎榜数据
获取龙虎榜数据
get_billboard_list(stock_list, start_date, end_date, count)stock_list: 包含股票代码的list,当值为None时,返回指定日期的所有股票
start_date: 开始日期
end_date: 结束日期
count: 交易日数量,可以与end_date同时使用,表示获取end_date前count 个交易日的数据(含end_date当日)
代码案例
# 获取一只股票
# 获取000001.XSHE的股票数据
df = get_price(
security='000001.XSHE',
start_date = '2015-01-01',
end_date = '2015-01-31 23:00:00',
frequency = '1m',
fields = ['open','close']
)
print(df)
#获取多只股票
#获取中证100所有成分股的股票数据
df = get_price(get_index_stocks('000903.XSHG'),panel = False)
# 只打印第一行的数据
print(df[0:1])
# 只打印平安银行的数据
print (df.loc[df['code']=='000001.XsHE'])
#获取龙虎榜数据
#获取2022-09-01前2个交易日的龙虎榜数据
df = get_billboard_list(stock_list=None,end_date='2022-09-01',count=2)
print(df)
print(df[['code','abnormal_name','sales_depart_name','rank']][:10])量化选股
1.量化选股概况
1.量化选股概况
量化选股
利用数量化的方法选择股票组合,期望该股票组合能够获得超越基准收益率的投资行为
技术面选股
利用各种技术理论或技术指标来分析和预测股票的未来价格趋势
基本面选股
通过对一家上市公司在发展过程中面临的外部因素和自身因素进行分析,对其未来的发展前景进行预测,判断该上市公司的股票是否值得买进
2.量化选股注意事项
分配多股,减少单股重仓的情况(我们选出的是股票的组合)
全面研究个股基本面,增强个股判断逻辑和支撑
主动投资而非被动投资
只是提高胜率的工具之一
3.代码案例
'''
白马股选股策略 极简易懂版
选股5条件:
1. 总市值 > 50亿
2. 上市满750天,剔除次新股
3. 流通比例 > 95% 全流通
4. 销售毛利率 > 20%
5. ROE > 20%
规则:按市值从大到小排序,持有前20只,每100个交易日调仓
'''
import datetime
from datetime import timedelta
# 初始化:策略启动只跑一次
def initialize(context):
set_benchmark('000300.XSHG') # 对标沪深300
set_option('use_real_price', True) # 动态复权
set_option('order_volume_ratio', 1)
# 交易手续费设置
cost = OrderCost(
open_tax=0,
close_tax=0.001,
open_commission=0.003,
close_commission=0.003,
close_today_commission=0,
min_commission=5
)
set_order_cost(cost, type='stock')
# 全局参数
g.stock_num = 20 # 持仓20只
g.day_count = 0 # 交易日计数
g.turn_cycle = 100 # 每100天调仓
run_daily(trade, 'every_bar')
# 核心选股:严格对应5条条件
def get_white_horse_stocks(context):
# 构造查询字段 + 过滤条件
q = query(
indicator.code,
valuation.market_cap, # 总市值(亿元)
valuation.circulating_market_cap, # 流通市值(亿元)
indicator.gross_profit_margin, # 销售毛利率
indicator.roe # 净资产收益率ROE
).filter(
valuation.market_cap > 50, # 条件1:总市值>50亿
valuation.circulating_market_cap > valuation.market_cap*0.95,# 条件2:流通比例>95%
indicator.gross_profit_margin > 20, # 条件3:毛利率>20%
indicator.roe > 20 # 条件4:ROE>20%
).order_by(valuation.market_cap.desc()).limit(100) # 市值从大到小
# 获取选股结果
df = get_fundamentals(q)
stock_list = list(df['code'])
# 条件5:剔除上市不足750天次新股
stock_list = filter_new_stock(stock_list, context.current_dt, 750)
# 剔除停牌股
stock_list = filter_paused_stock(stock_list)
# 只取前20只
return stock_list[:20]
# 过滤停牌股票
def filter_paused_stock(stock_list):
current_data = get_current_data()
return [s for s in stock_list if not current_data[s].paused]
# 剔除次新股:上市不满指定天数不要
def filter_new_stock(stock_list, now_date, need_days):
res = []
for stock in stock_list:
# 获取上市日期
list_date = get_security_info(stock).start_date
# 计算界限日期:当前日期往前推need_days天
limit_date = (now_date - timedelta(days=need_days)).date()
# 上市早于界限日期 = 满足上市天数要求
if list_date < limit_date:
res.append(stock)
return res
# 交易主函数
def trade(context):
# 到达调仓周期,执行换股
if g.day_count % g.turn_cycle == 0:
# 选出最新白马股列表
target_stocks = get_white_horse_stocks(context)
# 当前持仓
hold_stocks = list(context.portfolio.positions.keys())
# 卖出:不在新名单里的老股票
for s in hold_stocks:
if s not in target_stocks:
order_target_value(s, 0)
# 剩余资金平均分配
cash_per_stock = context.portfolio.available_cash / g.stock_num
# 买入新入选股票
for s in target_stocks:
if s not in context.portfolio.positions:
order_value(s, cash_per_stock)
# 重置计数
g.day_count = 1
else:
# 非调仓日,计数+1
g.day_count += 12.营收因子选股
1.财务因子介绍
财务因子:
评价企业的基本面情况,通常包括成长类因子,规模类因子,价值类因子以及质量类因子;
- 成长类因子:
在财务因子选股中,常用的方法是选用成长类因子进行选股。成长类因子包括营收因子与利润因子
- 规模类因子:
规模类因子反映公司规模情况,主要用于体现市值大小对投资收益的影响。
规模类因子包括总市值,流通市值,总股本,流通股本
- 价值类因子:
价值投资是一个久经考验的投资策略,惯例是购买那种相对低价的股票,转换成在基本面标准度量股息账面价值、利润、现金流或其他公司价值的方法。值类因子包括市净率,市销率,以及市盈率;
- 质量类因子:
质量类因子指与股票的财务质量、资本结构相关的因子。质量类因子包括净资产收益率,以及总资产净利率;
2.营收因子与利润因子
营收因子:
营收因子包括营业收入同比增长率、营业收入环比增长率、营业总收入;
利润因子:
利润因子包括净利润同比增长率、净利润环比增长率、营业利润率、销售净利润、销售毛利率;
3.营收因子详述
营收因子同比增长率:
(当期营业收入-上期营业收入) / 上期营业收入 * 100%
上期营业收入一般指上一年度/季度/月度同期营业收,此处指上一年度的同期营业收入。
get_fundamentals(
query(indicator.inc revenue year_on_year).filter(查询条件}),
date={查询日期}
)营收因子环比增长率:
(本期营业收入的值-上一期营业收入的值)/上一期营业收入的值 * 100%
环比增长率是针对上一期的,而同比增长率是相对于上一年度同一期的
get_fundamentals(
query(indicator.inc_revenue_annual).filter({查询条件}),
date={查询日期}
)营业总收入:
主营业务收入+其他业务收入
net_profit to_total_revenue
get_fundamentals(
query(indicator.net_profit_to_total_revenue).filter({查询条件}),
date={查询日期)
)小结
财务类因子
营收因子与利润因子
营收因子详述
代码示例
3.利润因子
1.净利润同比增长率
净利润指企业的税后利润
(当期净利润-上期净利润)/上期净利润绝对值*100%
上期净利润指上一年度的同期净利润
get_fundamentals(
query(indicator.inc_net_profit_year_on_year).filter({查询条件}),
date={查询日期)
)2.净利润环比增长率
(本期净利润-上一期净利润)/上一期净利润*100%
环比增长率是针对上一期的,而同比增长率是相对子上一年度同一期的
get_fundamentals(
query(indicator.inc_net_profit_annual).filter({查询条件}),
date={查询日期)
)3.营业利润率
指经营所得的营业利润占销售净额的百分比,或占投入资本额的百分比
营业利润/全部业务收入*100%
get_fundamentals(
query(indicator.operation_profit_to_total_revenue).filter({查询条件}),
date={查询日期)
)4.销售净利润
指企业实现净利润与销售收入的对比关系,用以衡量企业在一定时期的销售收入获取的能力
净利润/销售收入*100%
get_fundamentals(
query(indicator.net_profit_margin).filter({查询条件}),
date={查询日期)
)5.销售毛利润
净利润扣税,毛利润不扣税
毛利是销售净收入与产品成本的差,销售毛利率是毛利占销售净值的百分比
(销售净收入-产品成本)/销售净收入
get_fundamentals(
query(indicator.gross_profit_margin).filter({查询条件}),
date={查询日期)
)6.代理案例
print("--净利润同比增长率大于300的股票代码----------------------------------------------")
# 净利润同比增长率大于300的股票代码
query_object = query(
indicator.code,
indicator.inc_net_profit_year_on_year
).filter(
indicator.inc_net_profit_year_on_year > 300
).order_by(
indicator.inc_net_profit_year_on_year.desc()
)
df = get_fundamentals(query_object, date='2022-09-01')
print(df)
print("--净利润环比增长率大于500的股票代码----------------------------------------------")
# 净利润环比增长率大于500的股票代码
query_object = query(
indicator.code,
indicator.inc_net_profit_annual
).filter(
indicator.inc_net_profit_annual > 500
).order_by(
indicator.inc_net_profit_annual.desc()
)
df = get_fundamentals(query_object, date='2022-09-01')
print(df)
print("--营业利润率大于200的股票代码----------------------------------------------")
# 营业利润率大于200的股票代码
query_object = query(
indicator.code,
indicator.operation_profit_to_total_revenue
).filter(
indicator.operation_profit_to_total_revenue > 200
).order_by(
indicator.operation_profit_to_total_revenue.desc()
)
df = get_fundamentals(query_object, date='2022-09-01')
print(df[:5])
print("--营业净利润率最高的5只股票代码----------------------------------------------")
# 营业净利润率最高的5只股票代码
query_object = query(
indicator.code,
indicator.net_profit_margin
).order_by(
indicator.net_profit_margin.desc()
)
df = get_fundamentals(query_object, date='2022-09-01')
print(df[:5])
print("--销售毛利润最高的5只股票代码----------------------------------------------")
# 营业净利润率大于200的股票代码
query_object = query(
indicator.code,
indicator.gross_profit_margin
).order_by(
indicator.gross_profit_margin.desc()
)
df = get_fundamentals(query_object, date='2022-09-01')
print(df[:5])小结
净利润同比增长率
净利润环比增长率
营业利润率
销售净利润
销售毛利润
代码示例
4.规模类因子
1.规模类因子介绍
规模类因子:
规模类因子反映公司规模情况,主要用于体现市值大小对投资收益的影响;
指标:
规模类因子包括总市值、流通市值、总股本、流通股本;
2.总市值
在某特定时间内股票总价值,总股本数*股价
总市值用来表示个股权重大小或大盘的规模大小
get_fundamentals(
query(valuation.market_cap).filter({查询条件}),
date={查询日期)
)3.流通市值
在某特定时间内当时可交易流通股票总价值,可交易的流通股股数*股价
流通市值占总市值的比重(流通盘比例)越大,说明股票的市场价格越能反应出公司的真实价值
get_fundamentals(
query(valuation.market_cap).filter({查询条件}),
date={查询日期)
)4.总股本
指公司已发行的普通股股份总数(包含A股、B股和H股的总股本),单位万股
A股:普通人可以买到的股票
B股:非人民币结算,一般是美元
H股:港股
get_fundamentals(
query(valuation.capitalization).filter({查询条件}),
date={查询日期)
)5.流通股本
指公司已发行的境内上市流通、以人民币兑换的股份总数,即A股市场的流通股本,单位万股
get_fundamentals(
query(valuation.circulating_cap).filter({查询条件}),
date={查询日期)
)6.代码示例
小结
规模类因子介绍
总市值
流通市值
总股本
流通股本
代码示例
5.价值类因子
1.价值类因子介绍
价值类因子:
即价值投资,是一种久经考验的投资策略。
通过购买那种相对低价的股票,转换成在基本面标准度量股息、账面价值、利润、现金流或其他公司价值的方法
指标:
价值类因子包括市净率、市销率、(动态/静态)市盈率;
2.市净率(PB)
每股市价/每股净资产
市净率可用于股票投资分析,一般来说市净率较低的股票,投资价值较高。相反,则投资价值较低。
在判断投资价值时还要考虑当时的市场环境以及公司经营情况、赢利能力等因素
get_fundamentals(
query(valuation.pb_ratio).filter({查询条件}),
date={查询日期}
)互联网行业,市净率一般比较高,超过30,市净率太低,公司也不是很好;
3.市销率(PS)
股价/每股销售额
在国内证券市场,运用这一指标来选股可以剔除那些市盈率很低但主营业务没有核心竞争力而主要是依靠非经营性损益而增加利润的股票(上市公司)。该项指标既有助于考察公司收益基础的稳定性和可靠性,又能有效把握其收益的质量水平
get_fundamentals(
query(valuation.ps_ratio).filter({查询条件}),
date={查询日期}
)4.(动态/静态)市盈率
动态市盈率:
动态市盈率是指还没有真正实现的下一年度的预测利润的市盈率
动态市盈率=股票现价/未来每股收益的预测值
静态市盈率:
静态市盈率(即广泛意义上的市盈率)表示该公司需要累积多少年的盈利才能达到如今的市价水平
静态市盈率=股票现价/每股收益
市盈率指标数值越小说明投资回收期越短,风险越小
get_fundamentals(
query(valuation.pcf_ratio, valuation.pe_ratio).filter({查询条件}),
date={查询日期}
)5.代码案例
print("--市净率小于1.5,总市值大于8000亿的股票代码----------------------------------------------")
# 市净率小于1.5,总市值大于8000亿的股票代码
query_object = query(
valuation.code,
valuation.pb_ratio,
valuation.market_cap
).filter(
valuation.market_cap > 8000,
valuation.pb_ratio < 1.5
).order_by(
valuation.pb_ratio.desc()
)
df = get_fundamentals(query_object, date='2022-09-01')
print(df[:5])
print("--市净率小于1.5,市销率小于0.5的股票代码----------------------------------------------")
# 市净率小于1.5,总市值大于8000亿的股票代码
query_object = query(
valuation.code,
valuation.pb_ratio,
valuation.ps_ratio
).filter(
valuation.ps_ratio < 0.5,
valuation.pb_ratio < 1.5
).order_by(
valuation.pb_ratio.asc()
)
df = get_fundamentals(query_object, date='2022-09-01')
print(df[:5])
print("--动态市盈率小于6,市销率小于0.5,静态市盈率在3-5的股票代码,按静态市盈率排序--")
# 动态市盈率小于6,市销率小于0.5,静态市盈率在3-5的股票代码,按静态市盈率排序
query_object = query(
valuation.code,
valuation.pcf_ratio,
valuation.pe_ratio,
valuation.ps_ratio
).filter(
valuation.ps_ratio < 0.5,
valuation.pcf_ratio < 6,
valuation.pe_ratio > 3,
valuation.pe_ratio < 5
).order_by(
valuation.pe_ratio.asc()
)
df = get_fundamentals(query_object, date='2022-09-01')
print(df[:5])小结
价值类因子介绍
市净率(PB)
市销率(PS)
(动态/静态)市盈率
6.质量类因子
1.质量类因子介绍
质量类因子介绍:
质量类因子指与股票的财务质量、资本结构相关的因子。影响质量因子的因素大致包括:公司的盈利能力、盈利稳定性、资本结构成长性、会计质量、派息/摊薄、投资能力等
指标:
质量类因子包括净资产收益率、总资产净利率
2.净资产收益率
税后利润/所有者权益(净资产)x100%
净资产收益率是企业税后利润除以净资产得到的百分比率,该指际反映股东权益的收益水平,用以衡量企业运用自有资本的效率。指标值越高,说明投资带来的收益越高
get_fundamentals(
query(indicator.roe).filter({查询条件}),
date={查询日期}
)3.总资产净利率
净利润/平均资产总额x100%
总资产净利率反映的是公司运用全部资产所获得利润的水平,
即公司每占(用1元的资产平均能获得多少元的利润。
总资产净利率越高,表明公司投:入产出水平越高,资产运营越有效,成本费用的控制水平越高
get_fundamentals(
query(indicator.roa).filter({查询条件}),
date={查询日期}
)4.代码示例
print("--净资产收益率大于50的股票代码,降序排列----------------------------------------------")
# 净资产收益率大于50的的股票代码,降序排列
query_object = query(
indicator.code,
indicator.roe
).filter(
indicator.roe > 50
).order_by(
indicator.roe.desc()
)
df = get_fundamentals(query_object, date='2026-01-01')
print(df[:10])
print("--总资产净利率大于10的股票代码,降序排列----------------------------------------------")
# 总资产净利率大于10的的股票代码,降序排列
query_object = query(
indicator.code,
indicator.roa
).filter(
indicator.roa > 10
).order_by(
indicator.roa.desc()
)
df = get_fundamentals(query_object, date='2026-01-01')
print(df[:10])总结
质量类因子介绍
净资产收益率(越高越好)
总资产净利率(越高越好)
代码示例
量化择时
1.量化择时
1.量化择时基本概念
量化择时:
量化择时就是利用数量化的方法,通过对各种宏观微观指标的量化分析,试图找到影响大盘走势的关键信息,并且对未来走势进行预测。通俗来说,就是采用量化的方式判断买点和卖点
常用方法:
常用的量化择时方法有趋势量化择时、市场情绪量化择时;
2.量化择时常用方法
趋势择时:
基本思想来自于技术分析,技术分析认为趋势存在延续性,因此只要找到趋势方向,跟随操作即可。趋势择时的主要指标有MA、MACD、DMA等
市场情绪择时:
利用投资者的热情程度来判断大势方向,当情绪热烈时,大盘可能会继续涨;当投资者情绪低迷,大盘可能继续下跌。常用方法:调查问卷、开户人数、搜索指数、报告评级、融资融券数据、舆情数据等
3.技术指标理论
三个假设:
技术指标的理论基础基于三项市场假设:市场行为涵盖一切信息、价格沿趋势移动、历史会重演
技术指标:
技术指标是技术分析中使用最多的一种方法,通过考虑市场行为的多个方面建立一个数学模型,并给出完整的数学计算公式,从而得到一个体现证券市场的某个方面内在实质的数字,即所谓的技术指标值;
4.技术指标分类
趋向指标:
技术趋向指标是识别和追踪有趋势的图形类指标,其特点是不试图捕顶和测底,如均线指标、MACD指标等
反趋向指标:
反趋向指标又称为振荡指标,是识别和追踪趋势运行的转折点的图形类指标,其特点是具有强烈的捕顶和捉底的意图,对市场转折点较敏感,如随机指标KDJ、强弱指标RSI等
压力支撑指标:
压力支撑指标,又称通道指标,是通过顶部轨道线和底部轨道线,试图捕捉行情的顶部和底部的图形类指标,其特点是具有明显的压力线,也有明显的支撑线,如布林带BOLL指标、XS薛斯通道指标
量价指标:
量价指标就是通过成交量变动来分析捕捉价格未来走势的图形类指标,其特点是分析成交量与价格涨跌的关系,如OBV能量潮指标、VOL成交量指标等
小结
量化择时基本概念(通过量化找到买点和卖点)
量化择时分类(趋势择时、市场情绪择时)
技术指标理论
技术指标分类
2.趋向指标(上)
1.趋向指标介绍
定义:
趋向指标(DMI)又称动向指标。其基本原理是通过分析股价在上升及下跌过程中的均衡,即供需关系受价格的变动由均衡到失衡的循环过程,从而提供对趋势判断的依据
原理:
在大多数指标中都是以每一日的收盘价走势及升幅、跌幅的累计数来计算出不同的分析数据,其不足之处在于忽略了每一日的高价低价的波动幅度。而DMI指标则是把每日的高低波动的幅度因素计算在内,来分析预测未来的走势
2.MACD
即平滑异同移动平均线,是由美国投资家杰拉尔德·阿佩尔在20世纪70年代末提出的,主要表示经过平滑处理后均线的差异程度。一般用来研判股票价格变化的方向、强度和趋势

快线DIFF上穿慢线DEA,红柱出现的第一天,称为金叉,是买进持有的时机
快线DIFF下穿慢线DEA,绿柱出现的第一天,称为死叉,是卖出空仓的时机
实现方式:
from jqlib.technical_analysis import *
MACD(security_list, check_date, SHORT, LONG, MID)
security_list: 股票列表
check_date: 要查询数据的日期
SHORT: 快线[短周期均线]
LONG: 慢线[长周期均线】
MID: 计算signalperiod天的macd的EMA均线
示例
MACD(security_list='000001.XSHE',check_date='2022-09-01',SHORT=12,LONG=26,MID=9)
返回
DIF,DEA和MACD的值
字典(dict): 键(key)为股票代码,值(value)为数据3.EMV
即简易波动指标。股票中间价的相对波动幅度是以相对成交除以相对振幅作为衡量股票中间价波动百分比的基数。EMV值增加代表成交量增加,这是价格上升阶段的正常信号。EMV下跌代表了缩量下降,这也是价格下跌阶段的正常信号
1.A=(今日最高+今日最低)/2
B=(前日最高+前日最低)/2
C=今日最高-今日最低
2.EM=(A-B)*C/今日成交额
3.EMV=N日内EM的累和
4.MAEMV=EMV的M日的简单移动平均
5.参数N为14,参数M为9
当EMV从底部到顶部穿过0轴时,买入
当EMV从上到下穿过0轴时,卖出
代码:
from jqlib.technical analysis import *
EMV(security_list, check_date, N, M, unit = '1d', include_now = True, fq_ref_date = None)
security_list: 股票列表
check_date: 要查询数据的日期
N: N日内EM累加和
M: MAEMV(即EMV的M日简单移动平均)
常见的参数N为14,参数M为9
unit: 统计周期,默认为'1d'
include_now: 是否包含当前周期,默认为True
fq_ref_date: 复权基准日,默认为None
示例
EMV(security_list, check_date=' 2022-09-01' , N= 14, M =9, unit = '1d',
include_now =True,fq_ref_date = None)
返回
EMV和MAEMV的值
字典(dict): 键(key)为股票代码,值(value)为数据4.UOS
即终极波动指标。UOS指标是一种多方位功能的指标,除了趋势确认及超买超卖方面的作用之外,它的“突破”讯号不仅可以提供最适当的交易时机之外,更可以进一步加强指标的可靠度
TH=今日最高价和昨日收盘价的较大值
TL=今日最低价和昨日收盘价的较小值
ACC1=(收盘价-TL)的N1日累和/(TH-TL的N1日累和)
- ACC2=(收盘价-TL)的N2日累和/(TH-TL的N2日累和)
- ACC3=(收盘价-TL)的N3日累和/(TH-TL的N3日累和)
UOS=(ACC1N2N3+ACC2N1N3+ACC3N1N2)100/(N1N2+N1N3+N2N3)
MAUOS=UOS的M日指数平滑移动平均
参数N1=7,N2=14,N3=28,M=6
UOS短线抄底:UOS上穿50
UOS短线卖顶:UOS下穿65
UOS中长期抄底:UOS上穿35
UOS中长期卖顶:UOS下穿70
from jqlib.technical analysis import *
UOS(security_list, check_date, N1 = 7, N2 = 14, N3 = 28, M= 6, unit = '1d', include_ now = True, fq_ref_ date = None)
security_list:股票列表
check_date:要查询数据的日期
N1: 统计的天数N1
N2: 统计的天数N2
N3: 统计的天数N3
M: 统计天数M
unit: 统计周期,默认为'1d'
include_now: 是否包含当前周期,默认为True
fq_ref _date: 复权基准日,默认为None
示例
UOS(security,check_date='2022-09-01',N1=7,N2=14,N3=28,M=6)
返回
终极指标和MAUOS的值
字典(dict):键(key)为股票代码,值(value)为数据5.代码示例
from jqlib.technical_analysis import *
#获得MACD
print("--MACD---------------------------------------------------------")
security = '000001.XSHE'
DIF,DEA,_MACD = MACD(
security_list=security,
check_date='2022-09-01',
SHORT=12,
LONG=26,
MID=9
)
print(DIF)
print(DEA)
print(_MACD)
# 获得多只股票的EMV
print("--EMV---------------------------------------------------------")
security_list = ['000001.XSHE','000002.XSHE','601211.XSHG']
EMV, MAEMV = EMV(
security_list=security_list,
check_date='2022-09-01',
N=14,
M=9
)
print(EMV)
print(MAEMV)
# 获得单只股票的UOS
print("--UOS---------------------------------------------------------")
security_list = ['000001.XSHE']
UOS, MAUOS = UOS(
security_list=security_list,
check_date='2022-09-01',
N1=7,
N2=14,
N3=28,
M=6
)
print(UOS)
print(MAUOS)小结
趋向指标介绍
MACD (股价变化的方向、强度、趋势;金叉和死叉的判断)
EMV (简易波动指标,股票中间价带来的相对振幅)
UOS (终极波动指标)
代码示例
3.趋向指标(中)
1.GDX 鬼道线
即鬼道线,它反应的是中心线于收盘价的乖离,对趋势线做了平滑和修正处理,更精确的反应了股价运行规律

AA赋值: (2*收盘价+最高价+最低价)4-收盘价的N日简单移动平均的绝对值/收盘价的N日简单移动平均
输出济安线: 以AA为权重收盘价的动态移动平均
输出压力线: (1+M/100)*JAX
输出支撑线: (1-M/100)*JAX当股价上升到压力线时,卖出
当股价下跌到支撑线时,买进
2.JS 加速线
即加速线,通过当前股价与一段时间以前的股价相对比来测量股价涨跌的速度来确定其运行的快慢的指标
JS指标包含四条曲线,分别是JS以及三条JS不同周期的简单移动平均线,一般情况下,分别取值5日、10日、20日的简单移动平均。具体的计算公式如下:
JS=100*(收盘价-N日前的收盘价)/(N*N日前的收盘价);
MAJS1=JS的5日简单移动平均;
MAJS2=JS的10日简单移动平均;
MAJS3=JS的20日简单移动平均;
这里的N日,一般取值为5日。当JS线向下交叉JSMA线,卖出
当JS线向上交叉JSMA线,买进
实现方式:
from jqlib.technical analysis import *
JS(security_list, check date, N = 5, M1 = 5, M2 = 10, M3 = 20, unit = '1d', include now = True, fq_ref date = None)
security_list: 股票列表
check_date: 要查询数据的日期
N: 统计的天数N 5
M1: 统计的天数M1 5
M2: 统计的天数M2 10
M3: 统计的天数M3 20
示例
JS(security, check_date='2022-09-01', N=5, M1=5, M2=10, M3=20)
返回
JS、 MAJS1、 MAJS2和MAJS33.代码示例
from jqlib.technical_analysis import *
#获得多只股票的GDX指标
print("--获得多只股票的GDX指标------------------------------------")
security_list = ['000001.XSHE','000002.XSHE','601211.XSHG']
JAX,YLX,ZCX = GDX(security_list,check_date='2022-09-01',N=14,M=9)
for stock in security_list:
print(stock)
print('济安线的值为: {}'.format(JAX[stock]))
print('压力线的值为: {}'.format(YLX[stock]))
print('支撑线的值为: {}'.format(ZCX[stock]))
#获得单只股票的JS指标
print("--获得单只股票的JS指标------------------------------------")
security = '000001.XSHE'
_JS,MAJS1,MAJS2,MAJS3 = JS(security,check_date='2022-09-01',N=5,M1=5,M2=10,M3=20)
print('_JS的值为: {}'.format(_JS))
print('MAJS1的值为: {}'.format(MAJS1))
print('MAJS2的值为: {}'.format(MAJS2))
print('MAJS3的值为: {}'.format(MAJS3))4.小结
GDX鬼道线
JS加速线
代码示例
4.趋向指标(下)
1.MA
即移动平均线指标,具有趋势特性。越长期的移动平均线,越能表现稳定的特性。移动平均线是一种趋势追踪工具,便于识别趋势已经终结或者反转,新的趋势是否正在形成。国内常用5日、10日、30日、60日、120日、250日线

葛兰碧法则
买进信号:
平均线从下降逐渐转为走平,而价格从下方突破平均线,为买进信号
价格虽然跌破平均线,但是又立刻回升到平均线上,此时平均线仍然持续上升,仍为买进信号
价格趋势走在平均线上,价格下跌并未跌破平均线且立刻反转上升,也是买进信号
价格突然暴跌,跌破平均线,且远离平均线,则有可能反弹上升,也为买进时机
卖出信号:
平均线从上升逐渐转为盘局或下跌,而价格向下跌破平均线,为卖出信号
价格虽然向上突破平均线,但是又立刻回跌至平均线下,此时平均线仍然持续的下降,仍为卖出信号
价格趋势走在平均线下,价格上升并未突破平均线且立刻反转下跌,也是卖出信号
价格突然暴涨,突破平均线,且远离平均线,则有可能反弹回跌,也为卖出时机
实现方式
from jqlib.technical_analysis import *
MA(security_list, check date, timeperiod=5, unit = '1d', include now = True, fq_ ref date = None)
security_list: 股票列表
check_date: 要查询数据的日期
timeperiod: 统计X日均线
示例
MA(security_list, check_date=' 2022-09-01' ,timeperiod = 5)
返回
MA
字典(dict):键(key)为股票代码,值(value)为数据2.VMA
即变异平均线,指每个交易日股票的开盘价、收盘价、最高价和最低价除以4的平均值。在股市中,当股价高于vma时,意味着股市较为强势,当股价低vma于时,就意味着股市处于弱势

**二条以上平均线向上交叉时,**进买
**二条以上平均线向下交叉时,**卖出
实现方式
from jqlib.technical analysis import *
VMA(security_list, check_date, timeperiod = 12, unit = '1d',include_now = True, fq_ref_date = None)
security_list: 股票列表
check_date: 要查询数据的日期
timeperiod: 统计X日均线示例
VMA(security_list, check_date=' 2022-09-01' ,timeperiod = 12)
返回
VMA
字典(dict): 键(key)为股票代码,值(value)为数据
常见多条VMA均线中进行比较,一般为6、12、24、72日VMA均线3.代码示例
from jqlib.technical_analysis import *
#获得一只股票三天的5、10、20日均线
security = '000001.XSHE'
check_dates = ['2022-09-05','2022-09-06','2022-09-07']
for check_date in check_dates:
MA5 = MA(security,check_date=check_date,timeperiod=5)
MA10 = MA(security,check_date=check_date,timeperiod=10)
MA20 = MA(security,check_date=check_date,timeperiod=20)
print(check_date,'5 日均线:',MA5[security])
print(check_date,'10日均线:',MA10[security])
print(check_date,'20日均线:',MA20[security])
#获得一只股票三天的6/12/24/72日均线
print("--获得一只股票三天的6/12/24/72日均线---------------------")
security = '000001.XSHE'
check_dates = ['2022-09-05','2022-09-06','2022-09-07']
for check_date in check_dates:
_VMA6 = VMA(security,check_date=check_date,timeperiod=6)
_VMA12 = VMA(security,check_date=check_date,timeperiod=12)
_VMA24 = VMA(security,check_date=check_date,timeperiod=24)
_VMA72 = VMA(security,check_date=check_date,timeperiod=72)
print(check_date,'6日变均线:',_VMA6[security])
print(check_date,'12日变均线:',_VMA12[security])
print(check_date,'24日变均线:',_VMA24[security])
print(check_date,'72日变均线:',_VMA72[security])小结
MA(移动平均线)
葛兰比法则
VMA(变异平均线)
代码示例
5.反趋向指标
1.RSI
即相对强弱指标,是期货市场和股票市场中最为著名的摆动指标。显示的是股价向上波动的蝇度点总的波动幅度的百分,如果其数值大,就表示市场处于强势状态,如果数值小,则表示市场处于弱势比,
计算公式:
N日RSI =A (A+B) x100
A=N日内收盘涨幅之和
B=N日内收盘跌幅之和(取正值)
由上再算式可知RSI指标的技术含义,即以向上的力量与向下的力量进行比校。
若向上的力量这大,则计算出来的指标上升;若向下的力量较大,则指标下降,由此测算出市场走势的强弱。应用:
RSI>80为超买,RSI<20为超卖
RSI以50为中界线,大于50为多头行情,小于50为空头行情
RSI在80以上形成M头或头肩顶形态时,为向下反转信号
RSI在20以下形成W底或头肩底形态时,视为向上反转信号
RSI向上突破其高点连线时,买进;RSI向下跌破其低点连线时,卖出
实现方式:
from jqlib.technical analysis import *
RSI(security_list, check_date, N1=6, unit = '1d', include_now = True,fq_ref date = None)
security_list: 股票列表
check_date: 要查询数据的日期
N1: 统计天数的值 一般为 6示例
RSI(security_list, check_date=' 2022-09-01' ,N1=6)
返回
RSI
字典(dict):键(key)为股票代码,值(value)为数据
2.WR
威廉指标(简称W%R),它由拉瑞威廉首先发表。威廉指数主要用于研究股价的波动,通过分析股价波动变化中的峰与谷决定买卖时机,是用来分析市场短期行情走势的技术指标(用于短线指标)
计算公式:
W&R=(N日内最高价-当日收盘价) / (N日内最高价-N日内最低价)
应用:
当威廉指数线高于80,市场处于超卖状态,行情即将见底,买进
当威廉指数线低于20,市场处于超买状态,行情即将见顶,卖出
实现方式:
from jqlib.technical analysis import *
WR(security_list, check date, N = 10, N1 = 6, unit = '1d', include _now= True, fq_ref date = None)
security_list: 股票列表
check_date: 要查询数据的日期
N,N1: 统计天数的值示例
WR(security_list, check_date=' 2022-09-01' ,N=14,N1=28)
返回
WR和MAWR字典(dict): 键(key)为股票代码,值(value)为数据
3.KDJ
随机指标(KDJ)在设计中充分考虑价格波动的随机振幅与中短期波动的测算,使其短期测市功能比移动平均线更加准确有效,在市场短期超买超卖的预测方面又比相对强弱指标敏感。
应用:
K,D,J 均大于80,属于超买区,回档几率大
K,D,J 均小于30,属于超卖区,反弹几率大
K在20左右向上交叉D时,视为买进信号
K在80左右向下交叉D时,视为卖出信号
J>100时,股价易反转下跌;J<0时,股价易反转上涨
KDJ波动于50左右的任何信号,其作用不大
代码实现:
from jqlib.technical analysis import *
KDJ(security_list, check_date, N =9, M1=3, M2=3, unit = '1d',include_ now = True, fq_ref date = None)
security_list: 股票列表
check_date: 要查询数据的日期
N: 计算RSV的参数
M1: 计算K的M1日移动平均值
M2: 计算D的M1日移动平均值示例
KDJ(security_list, check_date=' 2022-09-01' ,N =9, M1=3, M2=3)
返回
K、D、J
字典(dict):键(key)为股票代码,值(value)为数据

4.代码实战
from jqlib.technical_analysis import *
#获取多只股票的RSI值
print("--获取多只股票的RSI值----------------------------------------------")
security_list = ['000001.XSHE','000002.XSHE','601211.XSHG']
_RSI = RSI(security_list,check_date='2022-09-01',N1=6)
for stock in security_list:
print(stock,'2022-09-01日RSI的值为:',_RSI[stock])
#获取单只股票的WR值
print("--获取单只股票的WR值----------------------------------------------")
security = '600031.XSHG'
check_dates = ['2022-10-31','2022-11-01','2022-11-02','2022-11-03']
for check_date in check_dates:
_WR,_MAWR = WR(security,check_date=check_date,N=10,N1=3)
print(check_date,'WR值为:',_WR[security])
print(check_date,'MAWR值为:',_MAWR[security])
#获得单只股票的多日KDJ指标值
print("--获得单只股票的多日KDJ指标值----------------------------------------------")
security = '000001.XSHE'
check_dates = ['2022-09-05','2022-09-06','2022-09-07']
for check_date in check_dates:
_K, _D, _J = KDJ(security,check_date=check_date,N=9,M1=3,M2=3)
print(check_date,'_K值为:',_K[security])
print(check_date,'_D值为:',_D[security])
print(check_date,'_J值为:',_J[security])小结
RSI
WR
KDJ
代码示例
6.压力支撑指标
1.BOLL(布林线指标)
即布林线指标,由约翰·布林先生创造,其利用统计原理,求出股价的标准差及其信赖区间,从而确定股价的波动范围及未来走势,利用波带显示股价的安全高低价位,因而也被称为布林带。其上下限范围不固定,随股价的滚动而变化
中间线=20日均线
Up线=20日均线+2SD(20日收市价)
Down线=20日均线-2SD(20日收市价)
应用:
股价上升穿越布林线上限时,回档机率大
股价下跌穿越布林线下限时,反弹机率大
布林线震动波带变窄时,表示变盘在即
代码实现:
from jqlib.technical analysis import*
Bollinger_Bands(security_list, check_date, timeperiod=20, nbdevup=2,nbdevdn=2, unit = '1d', include_now = True, fq_ref date = None)
timeperiod: X日均线
nbdevup: 计算上轨线时所用的指标,中轨线+X倍的标准差
nbdevdn: 计算下轨线时所用的指标,中轨线-X倍的标准差
示例
Bollinger_Bands(security_list, c
返回
上轨线UB、中轨线MB、下轨线LB
字典(dict):键(key)为股票代码,值(value)为数据

2.MIKE(麦克指标)
麦克指标,其英文全称是“Mike Base”,是一种股价波动幅度大小而变动的压力支撑指标,设有初级、中级、强力三种不同级别的支撑和压力,用图标方式直接显示压力、支撑的位置
1、先求出真实值TPY
TPY=3(最高价+最低价+收盘价)
TPY一TPX之N天平均值
2、MIKE指标有三条初级、中级、强力压力、分别为WR、MR、SR.
WR=TPY+[TPY一(12天最低价)]
MR=TPY+(12天最高价一12天最低价)
SR=2x12天最高价一12天最低价
3、MIKE指标有三条初级、中级、强力压力、分别为WS、MS、Ss。
WS=TPY一(12天最高价一TPY)
MS=TPY一(12天最高价一12天最低价)
SS=2x12天最低价一12天最高价
应用:
MIKE指标共有六条曲线,上方三条压力线,下方三条支撑线
当股价脱离盘整,朝下跌的趋势前进时,股价下方三条“下限”为其支撑参考价
当股价脱离盘整,朝上涨的趋势前进时,股价上方三条“上限”为其压力参考价
当股价往压力线方向涨升时,其下方支撑线不具参考价值
当股价往支撑线方向下跌时,其上方压力线不具参考价值
实现方式
from jqlib.technical_analysis import *
MIKE(security_list, check_date, timeperiod = 10, unit = '1d',include_now = True, fq_ref date = None)
security_list: 股票列表
check_date: 要查询数据的日期
timeperiod: 统计天数的值
示例
MIKE(security_list, check_date=' 2022-09-01' ,timeperiod=10)
返回
STOR MIDR WEKR WEKS MIDS STOS 的值
字典(dict):键(key)为股票代码,值(value)为数据

3.XS(薛斯通道)
薛斯通道指标是判断股价运行区间及相应的压力、支撑的趋势性指标。属于短线指标之一。由美国薛斯所创。在薛斯通道中股价实际上是被短期小通道包容着在长期道中上下运行,基本买卖策略是当短期小通道接近长期大通道时,预示着趋势的近期反转。
应用:
在上沿接近时趋势向下反转可捕捉短期卖点
在下沿接近时趋势向上反转可捕捉短期买点
实现代码:
from jqlib.technical_analysis import *
XS(security_ list, check_date, timeperiod = 13, unit = '1d', include_ now= True, fq_ref date = None)
security_list: 股票列表
check_date: 要查询数据的日期
timeperiod: 统计天数的值
示例
XS(security_list, check_date=' 2022-09-01' ,timeperiod=13)
返回
SUP SDN LUP LDN 的值
字典(dict):键(key)为股票代码,值(value)为数据

4.代码示例
from jqlib.technical_analysis import *
#获得单只股票三天的BOLL指标值
print("--获得单只股票三天的BOLL指标值-----------------------------------")
security = '600031.XSHG'
check_dates = ['2022-10-31','2022-11-01','2022-11-02']
for check_date in check_dates:
upper,middle,lower = Bollinger_Bands (security, check_date=check_date, timeperiod=20,
nbdevup=2, nbdevdn=2, unit='1d', include_now=True, fq_ref_date=None)
print(check_date,f'{security}上轨道线值为:',upper[security])
print(check_date,f'{security}中轨道线 值为:',middle[security])
print(check_date,f'{security}下轨道线为:',lower[security])
#获得单只股票两天的MIKE指标值
print("--获得单只股票三两天的MIKE指标值-----------------------------------")
security = '600031.XSHG'
check_dates = ['2022-10-31','2022-11-01']
for check_date in check_dates:
storl,midrl,wekrl,weksl,midsl,stosl = MIKE(security, check_date=check_date ,timeperiod=10)
print(check_date,f'{security}的storl值为:',storl[security])
print(check_date,f'{security}的midrl值为:',midrl[security])
print(check_date,f'{security}的wekrl为:',wekrl[security])
print(check_date,f'{security}的weksl为:',weksl[security])
print(check_date,f'{security}的midsl为:',midsl[security])
print(check_date,f'{security}的stosl为:',stosl[security])
#获得单只股票多日的XS指标值
print("--获得单只股票多日的XS指标值-----------------------------------")
security = '000001.XSHE'
check_dates = ['2022-10-31','2022-11-01']
for check_date in check_dates:
SUP,SDN,LUP,LDN = XS(security,check_date=check_date,timeperiod=13)
print(check_date,f'{security}的SUP 值为:',SUP[security])
print(check_date,f'{security}的SDN值为:',SDN[security])
print(check_date,f'{security}的LUP 为:',LUP[security])
print(check_date,f'{security}的LDN为:',LDN[security])小结
BOLL(布林线指标)
MIKE(麦克指标)
XS(薛斯通道)
代码示例
7.量价指标
1.OBV(能量潮指标)
能量潮指标是葛兰维于上世纪60年代提出的。OBV线系依据成交量的变化统计绘制而成。
OBV线为股市短期波动的重要判断方法,但运用OBV线应配合股价趋势予以研判分析
今日OBV = 昨日OBV+sgn*今天的成交量
其中,sgn是符号函数(正负1),其数值由下式决定:
sgn=+1,今日收盘价>昨日收盘价
sgn=-1,今日收盘价<昨日收盘价
这里的成交量指的是成交股票的手数,不是成交金额。
sng=+1时,其成交量计入多方的能量
sng=-1时,其成文量计入空方的能量
计算OBV时的初始值可自行确定,一般用第一日的成交量代替。
应用:
股价一顶比一顶高,而OBV一顶比一顶低,暗示头部即将形成
股价一底比一底低,而OBV一底比一底高,暗示底部即将形成
OBV突破其N字形波动的高点次数达5次时,为短线卖点
OBV跌破其N字形波动的低点次数达5次时,为短线买点
OBV不能单独使用,必须与股价曲线结合使用才能发挥作用
代码实现:
from jqlib.technical analysis import *
OBV(security_list, check_date, timeperiod=30, unit = '1d',include_now = True, fq_ ref_date = None)
security_list: 股票列表
check_date: 要查询数据的日期
timeperiod: 统计天数的值
示例
OBV(security_list, check_date=' 2022-09-01' ,timeperiod=30)
返回
OBV
字典(dict):键(key)为股票代码,值(value)为数据

2.VOL(成交量指标)
即成交量指标,成交量是指个股或大盘的成交总手,在形态上用一根立式的柱子来表示。左面的坐标值与柱子的横向对应处,就是当日当时的成交总数。如当天收盘价高于或等于当天的开盘价,成交柱呈红色;反之,成交柱呈绿色
VOL=EnVi/N
其中,i=1,2,3,.......n;
N=选定的时间参数,如10或30;
Vi:i日成交量。
应用:
1.当前股价处在盘整的行情的时候,成交量突然增加的话,股价短时间内突破的可能性较高
2.当成交量出现了连续三条或者更多的成交量的时候,说明当前市场买卖频繁,股价下跌的可能性比较的小
3.股价在上涨了一定的时间后,成交量依然是大幅上涨,但是最后收尾的时候,趋势阴线或者是比较小的阳线收尾的时候,说明当前上涨的支撑力量已经衰退,股价走势会在短时间内发生反转(庄家撤退,散户买入)
代码实现:
from jqlib.technical analysis import *
VOL(security list, check_date, M1=5, M2=10, unit = '1d', include_now= True, fq ref date = None)
security_list: 股票列表
check_date: 要查询数据的日期
M1,M2: 统计M1、M2日平均移动指数MAVOL的值
示例
VOL(security_list, check_date=' 2022-09-01' ,M1=5,M2=10)
返回
VOL、 MAVOL1 和MAVOL2
字典(dict):键(key)为股票代码,值(value)为数据

3.代码示例
from jqlib.technical_analysis import *
#获得多只股票多日的OBV(能量潮)指标值
print("--获得多只股票多日的OBV(能量潮)指标值--------------------------")
security_list = ['000001.XSHE','000002.XSHE','601211.XSHG']
check_dates = ['2022-10-31','2022-11-01']
for check_date in check_dates:
for security in security_list:
_OBV = OBV (security, check_date=check_date, timeperiod=30)
print(check_date,f'{security}的OBV值为:', _OBV[security])
#获得多只股票多日的VOL(成交量指标)指标值
print("--获得多只股票多日的VOL(成交量指标)指标值--------------------------")
security_list = ['000001.XSHE','000002.XSHE']
check_dates = ['2022-10-31','2022-11-01']
for check_date in check_dates:
for security in security_list:
_VOL,MAVOL1,MAVOL2 = VOL (security, check_date=check_date, M1=5, M2=10)
print(check_date,f'{security}的VOL值为:',_VOL[security])
print(check_date,f'{security}的MAVOL1为:',MAVOL1[security])
print(check_date,f'{security}的MAVOL2为:',MAVOL2[security])小结
OBV(能量潮指标)
VOL(成交量指标)
代码示例
第45