繁簡切換您正在訪問的是FX168財經網,本網站所提供的內容及信息均遵守中華人民共和國香港特別行政區當地法律法規。

FX168财经网>人物频道>帖子

基于Morningstar二八轮动小市值优化版 v2

作者/1xxxxxxxx 2019-05-09 18:33 0 来源: FX168财经网人物频道

非常感谢@Morningstar 大神提供原版本代码。这里主要修改了源代码结构,更方便后期修改,未改动代码含义。

update

2016.12.09
  • 修正个股止损代码,请自行复制替换

    之前使用的中文逗号

    # func_register(g.stop_loss_minute,stop_loss_by_stock,'个股止损')# func_register(g.stop_loss_minute,stop_profit_by_stock,'个股止盈')

    缓存参数忘了修改了,现在可以了

    def _get_pct_change(security, n, m):
      '''
      获取个股前n天的m日增幅值序列
      增加缓存避免当日多次获取数据
      '''
      pct_change = None
      if security in g.cache['pct_change'].keys():
          pct_change = g.cache['pct_change'][security]  else:
          h = attribute_history(security, n, unit='1d',
                                fields=('close'), skip_paused=True)
          pct_change = h['close'].pct_change(m)  # 3日的百分比变比(即3日涨跌幅)  g.cache['pct_change'][security] = pct_change  return pct_change
2016.12.05
  • 更新filter_new方法,没有整合进回测代码

def filter_new(stock_list, context, data):'''
    过滤新股
    '''delta = 60start_date = context.current_dt.date() - datetime.timedelta(delta)return [stock for stock in stock_list if get_security_info(stock).start_date < start_date]

VERSION

  • author: @Cath

  • author_origin: @Morningstar

  • date: 2016.12.03

summary

  • 依据 Morningstar 二八轮动小市值优化版 v2.0.7 (https://www.joinquant.com/post/1667?tag=algorithm) 修改而成

  • 首个版本,旨在模块化源代码,实现完美*原版本回测效果

  • 修改部分函数变量命名,次级函数(utils函数除外)均以_开头

  • 默认开启性能分析

  • 注释没有做完全修正

  • 策略参数只改动了一处,调仓计数改为4天

代码结构

  • 引入外部模块

  • 主体函数

  • pick & filter

  • stop loss

  • trade

  • utils

  • log

主体函数

  • 包含全部预制函数,已注释掉未使用部分

    initialize
    process_initialize
    after_code_changed
    before_trading_start
    after_trading_end
    handle_data
    handle_data相关函数
    定时运行模块

  • reset_day_param方法在盘前调用

initialize

  • setreset方法

pick & filter

  • 选股仅依赖过滤器,筛选出stock_list后,使用buy_stock_count截取

  • 现有过滤器如下:

    filter_paused
    filter_st
    filter_gem
    filter_limitup
    filter_limitdown
    filter_by_growth_rate
    filter_blacklist
    filter_new
    filter_by_query
    filter_by_rank  

  • 因为query查询数据库相对比较慢,目前把所有数据库查询筛选放在filter_by_query

  • 过滤器会依照_filter_register顺序执行,先后顺序会影响速度,filter_by_rank必须放在最后

  • 当前顺序为原版本顺序,为了回测速度进行妥协。实测效果,将filter_by_query放在评分前更好,采取全评分效果最佳,但速度非常慢

stop loss

  • 止盈和止损最终都会触发卖出操作,所以这里均以stop_loss指代

  • 止损器分为dayminute两种,day级别方法会在每日调仓时间执行,minute级别方法会每分钟调用

  • 指数止损器会触发全部平仓操作,依照原版本方式,暂停当天交易

trade

  • 新增_order方法,买卖指定数量

  • 平仓时,使用position.closeable_amount代替_order_target_value(security, 0),提高成交成功率

utils

  • 改进了get_close_price方法,获取前n日内的第一个close数据,以保证计算涨幅的相对准确

  • 新增func_register方法,注册过滤器、止损器等

log

  • 新增log_section方法,记录日志小节

  • 新增log_filterlog_stop_loss方法,记录过滤器和止损器

分享到:
举报财经168客户端下载

全部回复

0/140

投稿 您想发表你的观点和看法?

更多人气分析师

  • 张亦巧

    人气2208文章4145粉丝45

    暂无个人简介信息

  • 张迎妤

    人气1904文章3305粉丝34

    个人专注于行情技术分析,消息面解读剖析,给予您第一时间方向...

  • 指导老师

    人气1864文章4423粉丝52

    暂无个人简介信息

  • 李冉晴

    人气2320文章3821粉丝34

    李冉晴,专业现贷实盘分析师。

  • 梁孟梵

    人气2184文章3177粉丝39

    qq:2294906466 了解群指导添加微信mfmacd

  • 王启蒙现货黄金

    人气312文章3419粉丝8

    本人做分析师以来,并专注于贵金属投资市场,尤其是在现货黄金...

  • 金泰铬J

    人气2328文章3925粉丝51

    投资问答解咨询金泰铬V/信tgtg67即可获取每日的实时资讯、行情...

  • 金算盘

    人气2696文章7761粉丝125

    高级分析师,混过名校,厮杀于股市和期货、证券市场多年,专注...

  • 金帝财神

    人气4760文章8329粉丝119

    本文由资深分析师金帝财神微信:934295330,指导黄金,白银,...

FX168财经

FX168财经学院

FX168财经

FX168北美