综合风控:如何通过条件止损+补仓+精炼买入/卖出信号 (副本)
由small_q创建,最终由small_q 被浏览 11 用户
作者:woshisilvio
导语
对于部分中长线策略来说,并不是当天买入股票,第二天必须卖出,其持仓天数可能要长达5-10天及以上。除了止损之外,还要对部分看好的股票进行补仓,在个股的处理逻辑上会更多样化,也更加复杂。实际交易中我们除了需要大盘风控应对大盘下行的风险之外,可能还要有一套针对个股进行择时的方法。 因此,我们这一期Meetup将结合上一期三种构建大盘风控指标的方法 ,将 一些日常用的个股操作逻辑汇总结合大盘风控与个股择时的方法,糅合在一起做一个综合型策略案例。
主要方法
- 特征表达式 构造大盘风控表达式
- 特征表表式 构造个股择时表达式
- 数据连接与排列操作
- 主函数中的数据读取,对补仓逻辑的编写
- 数据准备函数 读取持仓个股的状态
- 盘前处理函数可以对未撮合的订单做处理
效果
- 在可视化画布中,可以对大盘风控和个股择时的表达式进行更改
- 在回测引擎-主函数中可以用来判断当日大盘情况,次日决定是否空仓/卖出持仓 ;
- 在回测引擎-主函数中可以判断当日个股的资金流,量价,形态数据,决定是否执行卖出操作/补仓
- 在回测引擎-数据准备函数函数中可以传入当日的个股的资金流,量价,形态数据,
- 在回测引擎-盘前处理函数对持仓股票进行判断:涨停不卖,是否保留持仓
构建步骤
①把指数当日用来判断风控的数据通过特征抽取模块构造出来
用指数的成交量(3.5日ma线死叉作为 全仓卖出风控的依据
bm_0=where(mean(volume, 5)-mean(volume, 10)<0,1,0)
②把个股当日当日用来做择时判断通过特征表达式抽取出来
当日的资金流超大单数据
cond8=mf_net_amount_xl_0
收盘价是否大于20日均线,用来做20日均线止损
cond13=where(close_0>mean(close_0, 20), 1, 0)
收盘价是否小于10日均线大于20日均线-用来判断是否低吸补仓
cond14=where((close_0>mean(close_0, 20))&(close_0<mean(close_0, 10)), 1, 0)
③把两个数据拼接,并且把可视化模块中的大盘风控的数据块与个股择时的数据块 一同传入回测引擎
④把传入进来的数据在主函数中挨个读取并进行计算
为了防止数据为空传入时报错,可以做一个容错处理
收盘价是否小于10日均线大于20日均线,用来判断是否低吸补仓
#try:
cond14=ranker_prediction.cond14.values print(cond14)
#except:
print('当天 cond14有数据缺失,请检查!',today_date)
下面是止盈止损补仓编写,把前面在可视化画布中读取到的数据进行判断:是否满足进行止损或者补仓的条件?
例如:
读取 cond8 当日资金流的数据
zjl=ranker_prediction[ranker_prediction.instrument==i].cond8 #print('资金流',zjl)
读取 cond13 当日是否跌破20日均线-发生止损的数据 --如果收盘价>ma20 返回1,收盘价<ma20返回0
zhisun_20=ranker_prediction[ranker_prediction.instrumenti].cond13
print('止损线-20日均线',zhisun_20)
读取 cond14 收盘价是否小于10日均线大于20日均线-用来判断是否低吸补仓的数据
bucang10_20=ranker_prediction[ranker_prediction.instrumenti].cond14 #print('补仓线-10日线-20日均线',bucang10_20)
⑥把刚才个股的数据传入 买入函数单元中,可以进行买入前的择时 (可以对资金流,形态,量价数据做限制)。
⑦ 把 持仓中个股的资金流数据 通过数据准备函数传入
通过这一系列的操作,我们可以针对个股择时进行更加精细化的处理,精炼买入和卖出的信号,让策略的买入逻辑整体变得更严谨,同时更有层次感。
讲解视频
https://www.bilibili.com/video/BV1oS4y1P7rZ/
策略源码
https://bigquant.com/experimentshare/a3052767fd9149ad9107dda00299ad24
\