按集合竞价选股编写聚宽代码
时间: 2023-08-26 11:03:50 浏览: 283
joinquant聚宽平台--集合竞价选股-个股盘口评级 看多看空(源码).txt
5星 · 资源好评率100%
好的,以下是一个简单的按集合竞价选股的聚宽代码示例:
```python
# 导入所需库
import jqdata
# 初始化函数,设定基准等等
def initialize(context):
# 设定股票池
g.stocks = get_stock_pool()
# 设置手续费与滑点
set_commission(slippage=Slippage(), commission=Commission())
# 定义股票池函数
def get_stock_pool():
# 获取所有A股股票
stocks = list(get_all_securities(['stock']).index)
# 过滤掉ST股票和上市时间不足一年的股票
q = query(
valuation.code
).filter(
valuation.code.in_(stocks),
# 排除ST股票
valuation.is_st == False,
# 上市时间超过一年
valuation.list_date < (context.current_dt - datetime.timedelta(days=365))
)
stocks = [s for s in get_fundamentals(q).iloc[:,0]]
# 返回剩余股票
return stocks
# 定义选择股票函数
def select_stocks(context):
# 获取当日集合竞价涨跌幅前50%的股票
q = query(
valuation.code
).filter(
valuation.code.in_(g.stocks),
# 当日集合竞价涨跌幅前50%
valuation.change_pct > 0
).order_by(
valuation.change_pct.desc()
).limit(
len(g.stocks) // 2
)
stocks = [s for s in get_fundamentals(q).iloc[:,0]]
# 返回选出的股票
return stocks
# 定义调仓函数
def rebalance(context):
# 清空现有持仓
for stock in context.portfolio.positions:
order_target(stock, 0)
# 选择新的股票
stocks = select_stocks(context)
# 平均分配资金买入选中的股票
if stocks:
weight = 1.0 / len(stocks)
for stock in stocks:
order_target_percent(stock, weight)
```
这个示例代码中,我们首先定义了一个 `get_stock_pool()` 函数来获取所有A股股票,并过滤掉了ST股票和上市时间不足一年的股票。然后,在 `initialize()` 函数中,我们调用了这个函数来设定股票池。接着,在 `select_stocks()` 函数中,我们获取当日集合竞价涨跌幅前50%的股票,作为选股结果。最后,在 `rebalance()` 函数中,我们清空现有持仓,然后买入选中的股票,让资金平均分配到每个股票的头寸上。
阅读全文