克隆策略

金叉死叉策略

当短期均线上穿长期均线,出现金叉,买入

当短期均线下穿长期均线,出现死叉,卖出

1. 主要参数

In [1]:
# 股票选择
instruments = ['600519.SHA']  
# 开始时间
start_date = '2012-05-29'  
# 结束时间
end_date = '2017-11-08'

2. 策略回测主体

In [2]:
# 初始化账户
def initialize(context):
    context.set_commission(PerOrder(buy_cost=0.0003, sell_cost=0.0013, min_cost=5)) # 设置手续费,买入成本为万分之三,卖出为千分之1.3
    context.short_period = 5 # 短期均线
    context.long_period = 50 # 长期均线 

def handle_data(context, data):
    
    # 长期均线值要有意义,需要在50根k线之后
    if context.trading_day_index <  context.long_period:   
        return
    
    k = instruments[0] # 标的为字符串格式
    sid = context.symbol(k) # 将标的转化为equity格式
    price = data.current(sid, 'price') # 最新价格
 
    short_mavg = data.history(sid, 'price',context.short_period, '1d').mean() # 短期均线值
    long_mavg = data.history(sid, 'price',context.long_period, '1d').mean() # 长期均线值

    cash = context.portfolio.cash  # 现金
    cur_position = context.portfolio.positions[sid].amount # 持仓
    
    # 交易逻辑
    # 如果短期均线大于长期均线形成金叉,并且没有持仓,并且该股票可以交易
    if short_mavg > long_mavg and cur_position == 0 and data.can_trade(sid):  
        context.order(sid, int(cash/price/100)*100) # 买入
    # 如果短期均线小于长期均线形成死叉,并且有持仓,并且该股票可以交易
    elif short_mavg < long_mavg and cur_position > 0 and data.can_trade(sid):  
        context.order_target_percent(sid, 0) # 全部卖出
     

3.回测接口

In [3]:
m=M.trade.v3(
    instruments=instruments,
    start_date=start_date,
    end_date=end_date,
    initialize=initialize,
    handle_data=handle_data,
    order_price_field_buy='open', # 以开盘价买入
    order_price_field_sell='open', # 以开盘价卖出
    capital_base=1000000, # 本金
    )
[2017-11-09 11:00:42.311280] INFO: bigquant: backtest.v7 开始运行..
[2017-11-09 11:00:53.642338] INFO: Performance: Simulated 1327 trading days out of 1327.
[2017-11-09 11:00:53.643773] INFO: Performance: first open: 2012-05-29 13:30:00+00:00
[2017-11-09 11:00:53.644724] INFO: Performance: last close: 2017-11-08 20:00:00+00:00
  • 收益率456.59%
  • 年化收益率38.54%
  • 基准收益率54.82%
  • 阿尔法0.33
  • 贝塔0.31
  • 夏普比率1.54
  • 收益波动率22.2%
  • 信息比率1.11
  • 最大回撤17.44%
[2017-11-09 11:00:57.790053] INFO: bigquant: backtest.v7 运行完成[15.478802s].