楼主: 量化菜鸟
2303 1

[程序化交易] 【策略源码分享】bias策略加强版 [推广有奖]

  • 0关注
  • 19粉丝

本科生

70%

还不是VIP/贵宾

-

威望
0
论坛币
548 个
通用积分
5.2730
学术水平
13 点
热心指数
14 点
信用等级
8 点
经验
1829 点
帖子
81
精华
0
在线时间
34 小时
注册时间
2015-8-17
最后登录
2017-3-7

楼主
量化菜鸟 发表于 2015-11-28 14:25:52 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
平台JoinQuant(https://www.joinquant.com/

乖离率(BIAS)是测量股价偏离均线大小程度的指标,简称Y值。其主要思想认为,当股价偏离市场平均成本太大时,股价会有一个回归的过程,即价格过高会降低,价格过低会上升。

计算方法
N期BIAS=(当日收盘价-N期平均收盘价)/N期平均收盘价*100%

主要变化
加入了多股票方法,每个单位时间内循环访问每个股票。
加入了仓位管理,将资金平均分配给每个股票,每个股票依然只能是进行满仓空仓操作。
加入了止损,每只股票亏损超过20%,则止损。
加入了胜率统计,在卖的时候判断,盈利则成功,亏损则失败,胜率算法为,成功次数除以成功与失败之和。在日志里输出,此次的胜率是64%。
去除了bias值与股价的对比图,因为是多股票。

改进方向
参数优化
加仓减仓功能
股票资金分配优化


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)
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:IAS Portfolio positions security Portfoli 计算方法 乖离率 收盘价 测量 成本

已有 1 人评分经验 论坛币 收起 理由
fantuanxiaot + 33 + 33 精彩帖子

总评分: 经验 + 33  论坛币 + 33   查看全部评分

沙发
量化菜鸟 发表于 2015-11-28 15:12:52
顶一顶顶一顶顶一顶

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jr
拉您进交流群
GMT+8, 2025-12-31 23:12