Beispiel #1
0
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()
Beispiel #2
0
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()
Beispiel #4
0
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()
Beispiel #5
0
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()
Beispiel #6
0
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')
Beispiel #7
0
 def __init__(self):
     # 加载统计模块
     self.trade_stat = tradestat.trade_stat()