def initialize(context): log_section('initialize', '初始化', sep=False) # 设置系统参数 set_sys() # 设置常数 set_const() # 设置策略参数 set_param() # 设置过滤器 set_filter() # 设置止损器 set_stop_loss() # 设置缓存参数 set_cache() # 加载统计模块 g.trade_stat = tradestat.trade_stat() # 打印自定义信息 # log.info('') # 打印策略参数 log_param() # 打印使用的过滤器 log_filter() # 打印使用的止损器 log_stop_loss()
def set_params(): g.upper_ratio_range = 1.03 g.lower_ratio_range = 0.98 g.macd_divergence_ratio = {} g.stop_loss = 0.93 g.tailing_stop_loss = 0.95 g.stock_domain = '000002.XSHG' #399400.XSHE g.benchmark = '000300.XSHG' # 加载统计模块 g.trade_stat = tradestat.trade_stat()
def initialize(context): log.info("==> initialize @ %s", str(context.current_dt)) # 设置手续费率是:买入时佣金万分之三,卖出时佣金万分之三加千分之一印花税, 每笔交易佣金最低扣5块钱 set_commission(PerTrade(buy_cost=0.0003, sell_cost=0.0013, min_cost=5)) # set_order_cost(OrderCost({open_tax=0, colse_tax=0.001, open_commission=0.0003, close_commission=0.0003, close_today_commission=0, min_commission=5}), type="stock") # 设置基准指数:沪深300指数 '000300.XSHG' set_benchmark('000300.XSHG') # 设定滑点为百分比 # 没有调用set_slippage函数, 系统默认的滑点是PriceRelatedSlippage(0.00246) #set_slippage(PriceRelatedSlippage(0.004)) # 使用真实价格回测(模拟盘推荐如此,回测请注释) set_option('use_real_price', True) # 加载统计模块 g.trade_stat = tradestat.trade_stat() # 配置策略参数 # 此配置主要为之前的小市值策略,保证之前的收益回撤 # 如果想要更改,最好新建个函数,调整参数测试其他策略 # 10日调仓 # 关闭大盘三乌鸦及高低价止损 # 关闭个股止盈止损 # 关闭选股评分 set_param() # 调仓日计数器,单位:日 g.day_count = 0 # 缓存股票持仓后的最高价 g.last_high = {} # 如下参数不能更改 if g.is_market_stop_loss_by_price: # 记录当日是否满足大盘价格止损条件,每日盘后重置 g.is_day_stop_loss_by_price = False # 缓存三黑鸦判断状态 g.is_last_day_3_black_crows = False if g.is_market_stop_loss_by_3_black_crows: g.cur_drop_minute_count = 0 if g.is_rank_stock: if g.rank_stock_count > g.pick_stock_count: g.rank_stock_count = g.pick_stock_count if g.is_stock_stop_loss or g.is_stock_stop_profit: # 缓存当日个股250天内最大的3日涨幅,避免当日反复获取,每日盘后清空 g.pct_change = {} if g.is_market_stop_loss_by_28_index: g.minute_count_28index_drop = 0 # 打印策略参数 log_param()
def initialize(context): log.info("==> initialize @ %s", str(context.current_dt)) # 设置手续费率 set_commission(PerTrade(buy_cost=0.0003, sell_cost=0.0013, min_cost=5)) # 设置基准指数:沪深300指数 '000300.XSHG' set_benchmark('000300.XSHG') # 设定滑点为百分比 # 没有调用set_slippage函数, 系统默认的滑点是PriceRelatedSlippage(0.00246) #set_slippage(PriceRelatedSlippage(0.004)) # 使用真实价格回测(模拟盘推荐如此,回测请注释) set_option('use_real_price', True) # 加载统计模块 g.trade_stat = tradestat.trade_stat() # 配置策略参数 # 此配置主要为之前的小市值策略,保证之前的收益回撤 # 如果想要更改,最好新建个函数,调整参数测试其他策略 set_param() # 调仓日计数器,单位:日 g.day_count = 0 # 缓存股票持仓后的最高价 g.last_high = {} #定义股票池 # 如下参数不能更改 if g.is_market_stop_loss_by_price: # 记录当日是否满足大盘价格止损条件,每日盘后重置 g.is_day_stop_loss_by_price = False # 缓存三黑鸦判断状态 g.is_last_day_3_black_crows = False if g.is_market_stop_loss_by_3_black_crows: g.cur_drop_minute_count = 0 if g.is_rank_stock: if g.rank_stock_count > g.pick_stock_count: g.rank_stock_count = g.pick_stock_count if g.is_stock_stop_loss or g.is_stock_stop_profit: # 缓存当日个股250天内最大的3日涨幅,避免当日反复获取,每日盘后清空 g.pct_change = {} if g.is_market_stop_loss_by_28_index: g.minute_count_28index_drop = 0 if g.is_equity_curve_protect: # 记录当日是否满足资金曲线保护条件,每日盘后重置 g.is_day_curve_protect = False g.time1 = time.time() file = StringIO(read_file('pre_result_csv.csv')) #print(StringIO(file)) g.data_ = pd.read_csv(file,index_col = 0) # 打印策略参数 log_param()
def set_params(): g.upper_ratio_range = 1.05 g.lower_ratio_range = 1 g.macd_divergence_ratio = {} g.stop_loss = 0.95 g.tailing_stop_loss = 0.95 g.stock_domain = '000002.XSHG' #399400.XSHE 000002.XSHG g.benchmark = '000300.XSHG' g.trading_hour = 14 g.trading_minute = 46 # 加载统计模块 g.trade_stat = tradestat.trade_stat()
def initialize(context): log.info("==> initialize @ %s", str(context.current_dt)) # 设置手续费率 set_commission(PerTrade(buy_cost=0.0003, sell_cost=0.0013, min_cost=5)) # 设置基准指数:沪深300指数 '000300.XSHG' set_benchmark('000300.XSHG') # 使用真实价格回测(模拟盘推荐如此,回测请注释) set_option('use_real_price', True) g.period = 10 # 调仓频率,单位:日 g.day_count = 0 # 调仓日计数器,单位:日 # 配置选股参数 g.selected_stock_count = 100 # 备选股票数目 g.buy_stock_count = 5 # 买入股票数目 # 配置是否根据市盈率选股 # 此回测如果不按pe选股,收益更高,回撤也稍大,个人取舍 g.select_by_pe = True if g.select_by_pe: g.max_pe = 200 g.min_pe = 2 g.filter_gem = True # 配置是否过滤创业板股票 g.filter_blacklist = False # 配置是否过滤黑名单股票,回测建议关闭,模拟运行时开启 # 输出各类参数 log.info("调仓日频率: %d 日" % (g.period)) log.info("备选股票数目: %d" % (g.selected_stock_count)) log.info("购买股票数目: %d" % (g.buy_stock_count)) log.info("是否根据PE选股: %s" % (g.select_by_pe)) if g.select_by_pe: log.info("最大PE: %s" % (g.max_pe)) log.info("最小PE: %s" % (g.min_pe)) log.info("是否过滤创业板股票: %s" % (g.filter_gem)) log.info("是否过滤黑名单股票: %s" % (g.filter_blacklist)) if g.filter_blacklist: log.info("当前股票黑名单:%s" % str(get_blacklist())) # 加载统计模块 g.trade_stat = tradestat.trade_stat() # 每天下午14:52执行 run_daily(do_handle_data, '14:52')
def __init__(self): # 加载统计模块 self.trade_stat = tradestat.trade_stat()