立即打开
平台JoinQuant(https://www.joinquant.com/)
乖离率(BIAS)是测量股价偏离均线大小程度的指标,简称Y值。其主要思想认为,当股价偏离市场平均成本太大时,股价会有一个回归的过程,即价格过高会降低,价格过低会上升。
计算方法
N期BIAS=(当日收盘价-N期平均收盘价)/N期平均收盘价*100%
主要变化
加入了多股票方法,每个单位时间内循环访问每个股票。
加入了仓位管理,将资金平均分配给每个股票,每个股票依然只能是进行满仓空仓操作。
加入了止损,每只股票亏损超过20%,则止损。
加入了胜率统计,在卖的时候判断,盈利则成功,亏损则失败,胜率算法为,成功次数除以成功与失败之和。在日志里输出,此次的胜率是64%。
去除了bias值与股价的对比图,因为是多股票。
改进方向
参数优化
加仓减仓功能
股票资金分配优化
# 定义一个全局变量, 保存要操作的证券
def initialize(context):
# 选择股票
context.stocks = ['601328.XSHG&# 39;,'600036.XSHG&# 39;,'600196.XSHG&# 39;,'600010.XSHG&# 39;]
set_universe(context.stocks)
#平均分配股票的可用资金
g.max_use_cash=context.portfolio.cash/len(context.stocks)
# 设置变量,记录操作成功与失败次数
g.win=0.0
g.lose=0.0
# 每个单位时间(如果按天回测,则每天调用一次,如果按分钟,则每分钟调用一次)调用一次
def handle_data(context, data):
# 循环股票池
for security in context.stocks:
# 得到该股票当前价格
current_price = data[security].price
# 得到十三日均价
avg = data[security].mavg(13)
#计算bias值
bias = (current_price-avg)/avg
# 计算持仓成本
current_avgcost = context.portfolio.positions[security].avg_cost
#计算当前股票的盈利状况
if context.portfolio.positions[security].amount > 0:
r_ratio=(current_price-current_avgcost)/current_avgcost
else:
r_ratio=0
# 如果bias值小于-0.06,且仓位为空,则买入
if bias < -0.06 and context.portfolio.positions[security].amount == 0:
# 计算可以买多少只股票
amount = int(g.max_use_cash / current_price)
# 下入买入单
order(security, amount)
# 如果bias值大于0.06,且仓位非空,则卖出
elif (r_ratio<-0.2 or bias > 0.06) and context.portfolio.positions[security].amount > 0:
# 卖出所有股票,使这只股票的最终持有量为0
orderfail=order_target(security, 0)
if orderfail!=None:#防止订单无效,如停牌、没钱买等
# 统计胜率
if r_ratio > 0:
g.win=g.win+1;
else:
g.lose=g.lose+1;
#计算操作次数
times=g.win+g.lose
# 取得当前时间
date = context.current_dt.strftime("%Y-%m-%d&# 34;)
#在最后一个单位时间,在日志中输出成功次数,失败次数,与胜率
if times>0 and date==&# 39;2015-09-30':
print(g.win,g.lose,g.win/times)
扫码加我 拉你入群
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
全部回复
扫码加我 拉你入群
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
相关推荐
栏目导航
热门文章
推荐文章
扫码加好友,拉您进群