识别三只乌鸦K线形态

三只乌鸦的K线介绍

特征

  1. 连续出现三根阴线,每天的收盘价均低于上一日的收盘
  2. 三根阴线前一天的市场趋势应该为上涨
  3. 三根阴线累计需要达到一定跌幅
  4. 收盘价接近每日的最低价位
  5. 每日的开盘价都在上根K线的实体部分之内;
  6. 第一根阴线的实体部分,最好低于上日的最高价位

含义

  • 市场抛压重
  • 日线级别上的3连跌,使周K线走坏,破坏中线趋势
  • 下跌导致市场筹码被打散,主力需要整理重新收集筹码

算法

  • 有效三只乌鸦描述众说纷纭,这里放宽条件,只考虑1和2
  • 根据前4日数据判断
  • 3根阴线累计跌幅达到一定百分比(此条件可选)
#该函数会在每天开始交易前被调用一次
def before_trading_start(context):  
    log.info("---------------------------------------------")
    log.info("==> Trading Date: %s" % str(context.current_dt))

    # 盘前就判断三黑鸦状态,判断的数据为前4日开票收盘价格,此处使用沪深300做参照
    g.find_3_black_crows = is_3_black_crows('000300.XSHG')
    if g.find_3_black_crows:
        log.info("==> 前4日已经构成三黑鸦形态")
    pass

def is_3_black_crows(stock):

    h = attribute_history(stock, 4, '1d', ('close','open'), df=False, fq=None)
    h_close = h['close']
    h_open = h['open']

    if len(h_close) < 4 or len(h_open) < 4:
        return False

    # 一阳三阴
    if h_close[-4] > h_open[-4] and (h_close[-1] < h_open[-1] and h_close[-2]< h_open[-2] and h_close[-3] < h_open[-3]):
        #三日累计跌幅超过1.5%(可选条件)
        #and h_open[-3] / h_close[-1] - 1 > 0.015:
        return True
    return False

2016年回测结果: