小白量化《穿云箭集群量化》(5)抄底雷达策略
雷达能够提前发现远处敌我动向。雷达是现代战争不可或缺的装备。
证券市场中分三类人,先知先觉者,后知后觉者,不知不觉者。先知先觉者往往是市场主力,他们拥有信息和资金的实力,说能战胜主力,是痴人说梦。后知后觉者是聪明的投资者,他们不想战胜主力,往往判断主力意图,主力吃肉,他们喝汤。不知不觉者往往自认聪明,总想战胜主力,他们关注政治,关注经济,了解上中下游产业,关注各种新科技,低碳经济,新能源,元宇宙等,既劳神,又伤身。就当花钱上了一个全才博士。后知后觉者发现在选股和择时买卖时,发生金叉和死叉信号往往慢半拍。如果能提前发现主力动向,就能提前埋伏买入,等待主力拉升抬轿。
幸好穿云箭量化平台通过大数据分析,能够在价格下跌末端发现主力收集筹码,及时发出抄底雷达信号。只要你选择好的股票池,抄底雷达信号发出后不久,股票价格就会开始上涨,享受主力拉升股价,享受坐轿乐趣,同时你的财富也再增值。
抄底雷达成功率60%以上,下面看看抄底雷达信号。
从上图我们可以发现,抄底雷达都在阴线上发出信号。如果抄底失败,可能会造成损失而止损。
因此我们不以信号为买信号,只做先决条件,采用常用KDJ作为买入信号,如果与抄底雷达信号共振,我们就立即买入。下面我们写一个回测策略测试一下回测效果。
策略名='回测_抄底雷达回测'
导入 pandas 命名为 pd
导入 time
导入 HP_tdx 命名为 htdx #小白量化行情模块
导入 HP_global 命名为 hg #建立高级全局数据域hg
从 HP_formula 导入 * #小白量化公式模块
从 HP_factor 导入 * #小白量化因子公式及Alpha公式模块
导入 HP_factor 命名为 hf #小白量化因子公式及Alpha公式模块
导入 HP_formula 命名为 gs #小白量化公式模块
导入 HP_quant 命名为 hpq #穿云箭量化模块
从 HP_quant 导入 * #穿云箭量化模块
导入 HP_tdxgs 命名为 tgs #公式运行模块
mygs=tgs.Tdxgs()
函数 初始化(context):
#context.istest=True
context.zh='xiaoba' #账户
context.zhlx='回测' #账户类型,2个汉字
context.firstcash=1000000.00 #初始现金
context.cash=context.firstcash
context.portfolio.available_cash=context.firstcash
set_maxdays(500)
# 设置我们要操作的股票池
g.stocks=hpq.get_universe()
hpq.log.info('----策略环境信息-----')
输出('量化模块版本: ',hpq.ver)
输出('量化模块最后修改日期: ',hpq.mdate)
输出('svrip: ',hpq.svrip)
输出('svrport: ',hpq.svrport)
输出('\n----开始运行策略-----\n')
输出('策略名:'+策略名)
qhcsj2=time.strftime('%Y%m%d %H:%M:%S',time.localtime(time.time()))
输出('开始运行时间:'+qhcsj2)
# 设定沪深300作为基准
set_benchmark((1,'000001'))
# 开启动态复权模式(真实价格)
set_option('use_real_price', 真)
hg.seemsg=假
htdx.TdxInit(ip='139.159.239.163',port=7709)
hg.hqsl=1 #行情数量
#hg.sdhq=1 #闪电行情
g.MAX=50
g.hd=0.003 #滑点
g.zzs=-0.05 #止损
g.amount=500 #买入数量
g.gs='''{自编指标公式,最好用专家系统公式}
N:=9;
M1:=3;
M2:=3;
RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;
K:SMA(RSV,M1,1);
D:SMA(K,M2,1);
J:3*K-2*D;
BUY:=IF(J>REF(J,1),1,0)*IF(REF(J,1)<REF(J,2),1,0);
'''
##中文Python学习交流群934165481
##微信电话18578755056
# 每个单位时间(如果按天回测,则每天调用一次,如果按分钟,则每分钟调用一次)调用一次
函数 盘中运行(context, data):
序列循环 m,security 在其中 context.universe[0]:
df=data[security].df
如果 len(df)<1:
继续
price = data[security].close
close=price
high= data[security].high
low= data[security].low
pre_close=data[security].pre_close #前收盘
#value = context.portfolio.positions[security].value
acc_avg_cost = context.portfolio.positions[security].acc_avg_cost #买入成本价
amos=context.portfolio.positions[security].closeable_amount #可卖数量
amos2=context.portfolio.positions[security].total_amount #总数量
#如果可卖数量大于0,做止盈和止损处理
如果 amos>0:
#响尾蛇导弹-自动回撤止盈和自动止损功能
sell=hf.autosell(security,price=price,cost=acc_avg_cost,withdraw=0.3,stoploss=-0.05,minp=0.01,t=999) #追踪收盘价
如果 sell==2: #止损
p5=round(price*(1-g.hd),2)
x=order_target(security,0,p=p5)
hpq.log.info(context.current_dt+ " 止损卖出: %s ,数量:%d,卖出价格:%.2f,成交资金:%0.2f"%(security,amos,p5,amos*p5))
否则如果 sell==1: #止盈
p5=round(price*(1-g.hd),2)
x=order_target(security,0,p=p5)
hpq.log.info(context.current_dt+ " 止盈卖出: %s ,数量:%d,卖出价格:%.2f,成交资金:%0.2f"%(security,amos,p5,amos*p5))
继续
否则如果 amos2>0 : #有持仓
继续
mydf=gs.initmydf(df) ##初始化mydf表
mygs.loaddf(mydf) #加载行情数据
mydf=mygs.execgs(g.gs) #运行指标公式
mydf['cdld']=hf.cdld(mydf) ##抄底雷达
mydf['cdld2']=COUNT(mydf['cdld'],20) #过去20周期内有信号发出
如果 mydf['BUY'].iloc[-1]>0 并且 (amos2==0 或者 amos==0) 并且 mydf['cdld2'].iloc[-1]>0:
price2=price*(1+g.hd)
x=order_target(security,g.amount,p=price2)
如果 x !=空:
hpq.log.info(context.current_dt+" 买入: %s ,数量:%d,买入价格:%.2f,成交资金:%0.2f"%(security,x.amount,price,x.amount*price))
上图是回测结果。
理论只要股票池未来有70%股票上涨,策略盈利很容易。用户主要工作是选好的股票池。
中文Python穿云箭量化平台支持中文Python语法,提供了完整的Python股票软件开发源代码。新版本支持自编指标公式脚本编写策略回测,并有一键生成Python交易策略功能,提供多空雷达,抄底雷达,响尾蛇导弹,巡航到导弹等交易技术。提供期货行情,期货CTP接口,提供MT5交易接口,提供miniQMT接口,以及彩票模块。支持问财选股,支持语音报盘,微信通知等。
用户可以根据自己需求设计出满足自己要求的 自动化交易工具。
超越自己是我的每一步!我的进步就是你的进步!