请 [注册] 或 [登录]  | 返回主站

量化交易吧 /  量化平台 帖子:3134695 新帖:229

再论高开卖、低开买——以“量化侠”代码为例

量化王者发表于:10 月 7 日 09:57回复(1)

最近,群里又在传着一份据说是量化侠写的“高开卖低开买”策略的代码,JQ官方也在推,称量化侠“数据挖掘揭秘最深A股套路“,因为以前也曾批过一次这样的论调:《我的低开买高开卖》。一时兴起,研究了一下其代码,验证了一下这个思想的可行性。

量化侠原版之漏洞¶

量化侠原版里,有如下两条语句,测试一下:

g.today = context.current_dt.strftime('%Y-%m-%d')
g.start = context.current_dt + datetime.timedelta(-2)
dToday = datetime.datetime(2016,1,4)
dStart = dToday + datetime.timedelta(-2)
dStart.strftime('%Y-%m-%d')
'2016-01-02'

在建仓操作的时候,有如下语句:

# B0、取得最近几天股票价格信息
    grid = get_price(stock, start_date=g.start, end_date=g.today, \
                     fields=['open', 'high', 'low', 'close', 'low_limit', 'paused'])
    # B1、今日低开(即:今开<昨低)、今日未跌停则买入
    if len(grid) > 1 and grid.low[-2] > grid.open[-1] and grid.open[-1] > grid.low_limit[-1]:
        order(stock, int(assign/grid.open[-1]))

测试一下:

stock = '300176.XSHE'
grid = get_price(stock, start_date=dStart, end_date=dToday, \
                         fields=['open', 'high', 'low', 'close', 'low_limit', 'paused'])
grid
open high low close low_limit paused
2016-01-04 29 29.25 26.25 26.25 26.25 0

  2016-1-2至2016-1-4,只有一行数据,于是 len(grid)>1这一条件不满足,就不买入了!
  而事实上300176.XSHE上一个交易日2015-12-31的最低价是29.17,2016-1-4的开盘价是29.00,也没有开盘跌停,按逻辑应该买入,却仅仅因为没有取到上一个交易日的数据而导致len(grid)是1,侥幸逃过了2016年1月4日的熔断!
  要确保能取到上一个交易日的数据,只需要轻轻地改变一下g.start的写法:

g.start = context.previous_date

全部回复

0/140

量化课程

    移动端课程