3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
首先需要特别说明的是,根据 JoinQuant 官方公告,一创聚宽已于 2023-12-29 停止维护,聚宽目前没有提供任何形式的实盘及交易通道服务。以下解答主要针对 JoinQuant 平台上的模拟交易环境。
不会自动清仓。
当您在 JoinQuant 平台上点击“关闭交易”或停止运行某个模拟交易策略时,系统仅仅是停止了该策略代码的继续执行。您账户中当前持有的股票(例如那 50 只股票)依然会保留在您的模拟账户中,系统不会自动帮您卖出。
如果您不想手动去卖出这 50 只股票,最简单的方法是在您决定“关闭交易”之前,修改一下策略代码,让策略帮您执行一键清仓,等清仓完成后,您再点击“关闭交易”。
您可以将策略的 handle_data 或 market_open 函数临时修改为以下清仓逻辑:
# 导入聚宽函数库
import jqdata
def initialize(context):
# 每天开盘时运行清仓函数
run_daily(clear_all_positions, time='09:30')
def clear_all_positions(context):
# 获取当前账户中所有的持仓标的
positions = context.portfolio.positions
# 如果没有持仓,直接返回
if len(positions) == 0:
log.info("当前无持仓,无需清仓。")
return
# 遍历所有持仓并卖出
for security in positions:
# 检查是否有可卖出的仓位(避免停牌或T+1限制导致报错)
if positions[security].closeable_amount > 0:
# 使用 order_target 将目标持仓设为 0,即全部卖出
order_target(security, 0)
log.info("执行清仓,卖出: %s" % security)
else:
log.info("标的 %s 当前无可用可卖仓位(可能受T+1或停牌限制)。" % security)