Beispiel #1
0
def _draw_ema_pipe(axes, kdata, ema, n=22, w=0.10):
    emas = [i for i in ema]
    p = _find_ema_coefficient(
        list(
            CLOSE(kdata)), emas, number=66, percent=0.95) if w == 'auto' else w
    emas_high = [i + i * p for i in emas]
    emas_low = [i - i * p for i in emas]
    emas_len = len(emas)

    PRICELIST(emas).plot(axes=axes,
                         color='b',
                         linestyle='-',
                         label='%s(%s)  %.2f' % (ema.name, n, emas[-1]))
    PRICELIST(emas_high).plot(axes=axes,
                              color='b',
                              linestyle=':',
                              label='U%s(%.2f%%) %.2f' %
                              (ema.name, p * 100, emas_high[-1]))
    PRICELIST(emas_low).plot(axes=axes,
                             color='b',
                             linestyle=':',
                             label='L%s(%.2f%%) %.2f' %
                             (ema.name, p * 100, emas_low[-1]))
    #axes.plot(emas, '-b', label='%s(%s)  %.2f'%(ema.name, n, emas[-1]))
    #axes.plot(emas_high, ':b', label='U%s(%.2f%%) %.2f'%(ema.name, p*100, emas_high[-1]))
    #axes.plot(emas_low, ':b', label='L%s(%.2f%%) %.2f'%(ema.name, p*100, emas_low[-1]))
    fy1 = [i for i in emas_low]
    fy2 = [i for i in emas_high]
    axes.fill_between(range(emas_len), fy1, fy2, alpha=0.2, color='y')
Beispiel #2
0
def draw(stock,
         query=Query(-130),
         n=10,
         filter_n=20,
         filter_p=0.1,
         sg_type="CROSS",
         show_high_low=False,
         arrow_style=1):
    """绘制佩里.J.考夫曼(Perry J.Kaufman) 自适应移动平均系统(AMA)"""
    kdata = stock.getKData(query)

    ax1, ax2 = create_figure(2)
    kdata.plot(axes=ax1)

    cama = AMA(CLOSE(kdata), n=n)
    cama.name = "CAMA"
    cama.plot(axes=ax1, color='b', legend_on=True)

    hama = AMA(HIGH(kdata), n=n)
    hama.name = "HAMA"
    hstd = STDEV(hama, n)
    lama = AMA(LOW(kdata), n=n)
    lama.name = "LAMA"
    lstd = STDEV(lama, n)
    fy1 = list(lama - lstd)[lstd.discard:]
    fy2 = list(hama + hstd)[hstd.discard:]
    ax1.fill_between(range(lstd.discard, len(kdata)),
                     fy1,
                     fy2,
                     alpha=0.2,
                     color='y')

    if show_high_low:
        hama.plot(axes=ax1, color='r', legend_on=True)
        lama.plot(axes=ax1, color='g', legend_on=True)

    if sg_type == 'CROSS':
        fast_op = AMA(n=n)
        slow_op = EMA(n=2 * n)(fast_op)
        sg = SG_Cross(fast_op, slow_op)
        sg.plot(axes=ax1, kdata=kdata)
        ind = slow_op(KDATA(kdata))
        ind.name = "EMA(CAMA)"
        ind.plot(axes=ax1, color='m', legend_on=True)

    elif sg_type == 'SINGLE':
        sg = SG_Single(cama, filter_n=filter_n, filter_p=filter_p)
        sg.plot(axes=ax1, kdata=kdata)

    else:
        print("sg_type only in ('CORSS', 'SINGLE')")

    cer = PRICELIST(cama, 1)
    label = "ER(%s)" % cer[-1]
    cer.plot(axes=ax2,
             color='b',
             marker='o',
             label=label,
             legend_on=False,
             text_on=True)

    c = CLOSE(kdata)
    CVAL(c, 0.8).plot(axes=ax2, color='r', linestyle='--')
    CVAL(c, -0.6).plot(axes=ax2, color='r', linestyle='--')
    CVAL(c, -0.8).plot(axes=ax2, color='r', linestyle='--')
    CVAL(c, 0).plot(axes=ax2, color='k', linestyle='-')
    #ax2.hlines(0.8,0,len(kdata),color='r',linestyle='--')
    #ax2.hlines(-0.6,0,len(kdata),color='r',linestyle='--')
    #ax2.hlines(-0.8,0,len(kdata),color='r',linestyle='--')
    #ax2.hlines(0,0,len(kdata))

    ax1.set_xlim((0, len(kdata)))
    ax_set_locator_formatter(ax1, kdata.getDatetimeList(), query.kType)
    adjust_axes_show([ax1, ax2])
    return show_gcf()
Beispiel #3
0
def draw2(block,
          query=Query(-130),
          ama1=AMA(n=10, fast_n=2, slow_n=30),
          ama2=None,
          n=10,
          filter_n=20,
          filter_p=0.1,
          sg_type='CROSS',
          show_high_low=True,
          arrow_style=1):
    """绘制佩里.J.考夫曼(Perry J.Kaufman) 自适应移动平均系统(AMA)"""
    sm = StockManager.instance()
    if block.name == 'SZ':
        kdata = sm['sz000001'].getKData(query)
    elif block.name == 'GEM':
        kdata = sm['sz399006'].getKData(query)
    else:
        kdata = sm['sh000001'].getKData(query)

    ax1, ax2, ax3 = create_figure(3)
    kdata.plot(axes=ax1)

    cama = AMA(CLOSE(kdata), n=n)
    cama.name = "CAMA"
    cama.plot(axes=ax1, color='b', legend_on=True)

    hama = AMA(HIGH(kdata), n=n)
    hama.name = "HAMA"
    hstd = STDEV(hama, n)
    lama = AMA(LOW(kdata), n=n)
    lama.name = "LAMA"
    lstd = STDEV(lama, n)
    fy1 = list(lama - lstd)[lstd.discard:]
    fy2 = list(hama + hstd)[hstd.discard:]
    ax1.fill_between(range(lstd.discard, len(kdata)),
                     fy1,
                     fy2,
                     alpha=0.2,
                     color='y')

    if show_high_low:
        hama.plot(axes=ax1, color='r', legend_on=True)
        lama.plot(axes=ax1, color='g', legend_on=True)

    if sg_type == 'CROSS':
        fast_op = AMA(n=n)
        slow_op = EMA(n=2 * n)(fast_op)
        sg = SG_Cross(fast_op, slow_op)
        sg.plot(axes=ax1, kdata=kdata)
        ind = slow_op(KDATA(kdata))
        ind.name = "EMA(CAMA)"
        ind.plot(axes=ax1, color='m', legend_on=True)

    elif sg_type == 'SINGLE':
        sg = SG_Single(cama, filter_n=filter_n, filter_p=filter_p)
        sg.plot(axes=ax1, kdata=kdata)

    else:
        print("sg_type only in ('CORSS', 'SINGLE')")

    a = POS(block, query, SG_Flex(AMA(n=3), 6))
    a.name = "POS(3)"
    a.plot(axes=ax2, color='b', marker='.', legend_on=True)
    a = POS(block, query, SG_Flex(AMA(n=30), 60))
    a.name = "POS(30)"
    a.plot(axes=ax2, color='g', marker='.', legend_on=True)

    c = CLOSE(kdata)
    CVAL(c, 0.8).plot(axes=ax2, color='r', linestyle='--')
    CVAL(c, 0.2).plot(axes=ax2, color='r', linestyle='--')

    if ama1.name == "AMA":
        cer = PRICELIST(cama, 1)
        label = "ER(%s)" % cer[-1]
        cer.plot(axes=ax3,
                 color='b',
                 marker='.',
                 label=label,
                 legend_on=False,
                 text_on=True)
        CVAL(c, 0.8).plot(axes=ax3, color='r', linestyle='--')
        CVAL(c, -0.6).plot(axes=ax3, color='r', linestyle='--')
        CVAL(c, -0.8).plot(axes=ax3, color='r', linestyle='--')
        CVAL(c, 0).plot(axes=ax3, color='k', linestyle='-')
    else:
        ax_draw_macd(ax2, kdata)
    #ax2.set_ylim(-1, 1)

    ax1.set_xlim((0, len(kdata)))
    ax_set_locator_formatter(ax1, kdata.getDatetimeList(), query.kType)
    adjust_axes_show([ax1, ax2])
    return show_gcf()
Beispiel #4
0
def draw(stock, query = Query(-130), 
         n = 10, filter_n = 20, filter_p = 0.1,
         sg_type = "CROSS",
         show_high_low = False,
         arrow_style = 1):
    """绘制佩里.J.考夫曼(Perry J.Kaufman) 自适应移动平均系统(AMA)"""
    kdata = stock.getKData(query)
    
    ax1, ax2 = create_figure(2)
    kdata.plot(axes = ax1)

    cama = AMA(CLOSE(kdata), n = n )
    cama.name = "CAMA"
    cama.plot(axes = ax1, color = 'b', legend_on = True)
    
    hama = AMA(HIGH(kdata), n = n)
    hama.name = "HAMA"
    hstd = STDEV(hama, n)
    lama = AMA(LOW(kdata), n = n)
    lama.name = "LAMA"
    lstd = STDEV(lama, n)
    fy1 = list(lama - lstd)[lstd.discard:]
    fy2 = list(hama + hstd)[hstd.discard:]
    ax1.fill_between(range(lstd.discard,len(kdata)),fy1,fy2,alpha=0.2, color='y' )

    if show_high_low:
        hama.plot(axes = ax1, color = 'r', legend_on = True)
        lama.plot(axes = ax1, color = 'g', legend_on = True)
    
    if sg_type == 'CROSS':
        fast_op = AMA(n = n)
        slow_op = EMA(n = 2*n)(fast_op)
        sg = SG_Cross(fast_op, slow_op)
        sg.plot(axes = ax1, kdata = kdata)
        ind = slow_op(KDATA(kdata))
        ind.name = "EMA(CAMA)"
        ind.plot(axes = ax1, color = 'm', legend_on = True)
                 
    elif sg_type == 'SINGLE':
        sg = SG_Single(cama, filter_n = filter_n, filter_p = filter_p)
        sg.plot(axes = ax1, kdata = kdata)

    else:
        print("sg_type only in ('CORSS', 'SINGLE')")
 
    cer = PRICELIST(cama, 1)
    label = "ER(%s)" % cer[-1]
    cer.plot(axes=ax2, color='b', marker='o', label=label, 
             legend_on=False, text_on=True)
    
    c = CLOSE(kdata)
    CVAL(c, 0.8).plot(axes=ax2,color='r',linestyle='--')
    CVAL(c, -0.6).plot(axes=ax2,color='r',linestyle='--')
    CVAL(c, -0.8).plot(axes=ax2,color='r',linestyle='--')
    CVAL(c, 0).plot(axes=ax2,color='k',linestyle='-')
    #ax2.hlines(0.8,0,len(kdata),color='r',linestyle='--')    
    #ax2.hlines(-0.6,0,len(kdata),color='r',linestyle='--')
    #ax2.hlines(-0.8,0,len(kdata),color='r',linestyle='--')
    #ax2.hlines(0,0,len(kdata))
    
    ax1.set_xlim((0, len(kdata)))
    ax_set_locator_formatter(ax1, kdata.getDatetimeList(), query.kType)
    adjust_axes_show([ax1, ax2])
    return show_gcf()
Beispiel #5
0
def draw2(block, query = Query(-130), 
         ama1 = AMA(n=10, fast_n=2, slow_n=30),
         ama2 = None,
         n = 10, filter_n = 20, filter_p = 0.1,
         sg_type = 'CROSS',
         show_high_low = True,
         arrow_style = 1):
    """绘制佩里.J.考夫曼(Perry J.Kaufman) 自适应移动平均系统(AMA)"""
    sm = StockManager.instance()
    if block.name == 'SZ':
        kdata = sm['sz000001'].getKData(query)
    elif block.name == 'GEM':
        kdata = sm['sz399006'].getKData(query)
    else:
        kdata = sm['sh000001'].getKData(query)
    
    ax1, ax2, ax3 = create_figure(3)
    kdata.plot(axes = ax1)

    cama = AMA(CLOSE(kdata), n = n )
    cama.name = "CAMA"
    cama.plot(axes = ax1, color = 'b', legend_on = True)

    hama = AMA(HIGH(kdata), n = n)
    hama.name = "HAMA"
    hstd = STDEV(hama, n)
    lama = AMA(LOW(kdata), n = n)
    lama.name = "LAMA"
    lstd = STDEV(lama, n)
    fy1 = list(lama - lstd)[lstd.discard:]
    fy2 = list(hama + hstd)[hstd.discard:]
    ax1.fill_between(range(lstd.discard,len(kdata)),fy1,fy2,alpha=0.2, color='y' )
            
    if show_high_low:
        hama.plot(axes = ax1, color = 'r', legend_on = True)
        lama.plot(axes = ax1, color = 'g', legend_on = True)
    
    if sg_type == 'CROSS':
        fast_op = AMA(n = n)
        slow_op = EMA(n = 2*n)(fast_op)
        sg = SG_Cross(fast_op, slow_op)
        sg.plot(axes = ax1, kdata = kdata)
        ind = slow_op(KDATA(kdata))
        ind.name = "EMA(CAMA)"
        ind.plot(axes = ax1, color = 'm', legend_on = True)
                 
    elif sg_type == 'SINGLE':
        sg = SG_Single(cama, filter_n = filter_n, filter_p = filter_p)
        sg.plot(axes = ax1, kdata = kdata)

    else:
        print("sg_type only in ('CORSS', 'SINGLE')")
        
    a = POS(block, query, SG_Flex(AMA(n = 3), 6))
    a.name = "POS(3)"
    a.plot(axes=ax2, color='b', marker='.', legend_on=True)
    a = POS(block, query, SG_Flex(AMA(n = 30), 60))
    a.name = "POS(30)"
    a.plot(axes=ax2, color='g', marker='.', legend_on=True)
    
    c = CLOSE(kdata)
    CVAL(c, 0.8).plot(axes=ax2,color='r',linestyle='--')
    CVAL(c, 0.2).plot(axes=ax2,color='r',linestyle='--')
    
    if ama1.name == "AMA":
        cer = PRICELIST(cama, 1)
        label = "ER(%s)" % cer[-1]
        cer.plot(axes=ax3, color='b', marker='.', label=label, 
                 legend_on=False, text_on=True)
        CVAL(c, 0.8).plot(axes=ax3,color='r',linestyle='--')
        CVAL(c, -0.6).plot(axes=ax3,color='r',linestyle='--')
        CVAL(c, -0.8).plot(axes=ax3,color='r',linestyle='--')
        CVAL(c, 0).plot(axes=ax3,color='k',linestyle='-')
    else:
        ax_draw_macd(ax2, kdata)
    #ax2.set_ylim(-1, 1)
    
    ax1.set_xlim((0, len(kdata)))
    ax_set_locator_formatter(ax1, kdata.getDatetimeList(), query.kType)
    adjust_axes_show([ax1, ax2])
    return show_gcf()