策略分享

移动止损功能

由crisvalentine创建,最终由iquant 被浏览 311 用户

【旧版提示】此文档为旧版本,相关信息可参考新文档:

https://bigquant.com/wiki/doc/114-YCE9b0Z1h3#h-%E7%AD%96%E7%95%A5%E4%BB%8B%E7%BB%8D

版本v1.0

在开发策略时,经常使用个股的固定点位/百分比止盈止损功能。

本策略以买入后最高价下跌10%止损为例,介绍移动止损功能的实现步骤:

  1. 新建AI可视化模板策略

  2. 在回测/模拟模块m19的属性栏中进入“主函数”代码框,在函数体最前面插入移动止损的相关代码,详见策略

    初始化变量stoploss_stock用来记录移动止损卖出的股票,

    针对持仓的股票计算买入以来的最高价,并计算最新价相比最高价的回撤百分比,如果下跌超过10%就止损卖出,同时将股票添加到stoploss_stock变量:

  3. 在回测/模拟模块m19的属性栏中进入“主函数”代码框,在函数体中找到“# 2. 生成卖出订单”位置,

    在上方初始化 sell_stock 列表用来记录轮仓卖出的股票;

    在下方轮仓卖出代码 context.order_target(context.symbol(instrument), 0) 前加入判断语句:

    #如果已经移动止损卖出过则不再轮仓卖出,以防止出现空头持仓 if instrument in stoploss_stock:

    continue

  4. 在回测/模拟模块m19的属性栏中进入“主函数”代码框,在函数体中找到“# 3. 生成买入订单”位置,将原有的buy_instruments一行代码改为如下:

获取所有排序结果股票列表

buy_list = list(ranker_prediction.instrument)

不再买入已经移动止损和轮仓卖出的股票,以防止出现空头持仓

buy_instruments = [i for i in buy_list if i not in sell_stock + stoploss_stock][:len(buy_cash_weights)]

https://bigquant.com/experimentshare/28c779fc4d864fb786fcdf664207f824

\

{link}