Python全系列 教程
3567个小节阅读:5930.5k
目录
鸿蒙应用开发
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
总市值,是指在某特定时间内总股本数乘以当时股价得出的股票总价值。沪市所有股
票的市值就是沪市总市值,深市所有股票的市值就是深市总市值。
总市值用来表示个股权重大小或大盘规模大小,对股票买卖没有直接作用,但是很多
情况下走强的是市值大的个股。
小市值股票量化交易策略,即筛选出市值为20亿~30亿元的股票,选取其中市值最小的
3只股票,然后每天开盘买入,持有5个交易日,然后调仓。
xxxxxxxxxx
# 导入函数库
import jqdata
# 初始化函数
def initialize(context):
# 设定沪深300作为基准
set_benchmark('000300.XSHG')
# 开启动态复权模式
set_option('use_real_price', True)
# 设定成交量比例
set_option('order_volume_ratio',1)
'''
set_order_cost()是用来设置佣金/印花税的函数,用来设定每笔交易收取的手续费
第一个参数是OrderCost对象,各项子参数意义如下:
open_tax,买入时印花税(只有股票类标的收取,基金与期货不收)
close_tax,卖出时印花税(只有股票类标的收取,基金与期货不收)
open_commission,买入时佣金
close_commission,卖出时佣金
close_today_commission,平今仓佣金
min_commission,最低佣金,不包含印花税
第二个参数type是类型,'stock'代表股票
'''
set_order_cost(OrderCost(open_tax=0,close_tax=0.001,open_commission=0.0003,close_commission=0.0003,close_today_commission=0,min_commission=5), type='stock')
# 持仓数量
g.stocknum = 3
# 交易日计时器
g.days = 0
# 调仓频率
g.refresh_rate = 5
# 运行函数
run_daily(trade,'every_bar')
# 交易函数
def trade(context):
if g.days % g.refresh_rate == 0:
# 获取持仓列表
sell_list = list(context.portfolio.positions.keys())
# 如果有持仓,则卖出
if len(sell_list) > 0:
for stock in sell_list:
order_target_value(stock,0)
# 分配资金
if len(context.portfolio.positions) < g.stocknum:
num = g.stocknum - len(context.portfolio.positions)
cash = context.portfolio.cash / num
else:
cash = 0
# 选股
stock_list = check_stocks(context)
# 买入股票
for stock in stock_list:
if len(context.portfolio.positions.keys()) < g.stocknum:
order_value(stock,cash)
g.days += 1
else:
g.days += 1
# 过滤停牌股票函数
def filter_paused_stock(stock_list):
# 获取当前时间数据,获取当前单位时间(当天/当前分钟)的涨跌停价, 是否停牌,当天的开盘价等
# get_current_data()返回一个字典,其中key是股票代码
current_data = get_current_data()
return [stock for stock in stock_list if not current_data[stock].paused]
# 选股函数
def check_stocks(context):
# 创建查询对象,并设置查询条件,排序
q = query(
valuation.code,
valuation.market_cap
).filter(
valuation.market_cap.between(20,30)
).order_by(
valuation.market_cap.asc()
)
# 执行查询
df = get_fundamentals(q)
buylist = list(df['code'])
# 过滤停牌股票
buylist = filter_paused_stock(buylist)
return buylist[:g.stocknum]