def ax_draw_macd(axes, kdata, n1=12, n2=26, n3=9): """绘制MACD :param axes: 指定的坐标轴 :param KData kdata: KData :param int n1: 指标 MACD 的参数1 :param int n2: 指标 MACD 的参数2 :param int n3: 指标 MACD 的参数3 """ macd = MACD(CLOSE(kdata), n1, n2, n3) bmacd, fmacd, smacd = macd.getResult(0), macd.getResult(1), macd.getResult(2) text = 'MACD(%s,%s,%s) DIF:%.2f, DEA:%.2f, BAR:%.2f'%(n1,n2,n3,fmacd[-1],smacd[-1],bmacd[-1]) axes.text(0.01,0.97, text, horizontalalignment='left', verticalalignment='top', transform=axes.transAxes) total = len(kdata) x = [i-0.2 for i in range(total)] x1 = [x[i] for i,d in enumerate(bmacd) if d>0] y1 = [i for i in bmacd if i>0] x2 = [x[i] for i,d in enumerate(bmacd) if d<=0] y2 = [i for i in bmacd if i<=0] axes.bar(x1,y1, width=0.4, color='r', edgecolor='r') axes.bar(x2,y2, width=0.4, color='g', edgecolor='g') axt = axes.twinx() axt.grid(False) axt.set_yticks([]) fmacd.plot(axes=axt, linestyle='--', legend_on=False, text_on=False) smacd.plot(axes=axt, legend_on=False, text_on=False) for label in axt.get_xticklabels(): label.set_visible(False)
def kplot(kdata, new=True, axes=None, colorup='r', colordown='g', width=0.6, alpha=1.0): """绘制K线图 :param KData kdata: K线数据 :param bool new: 是否在新窗口中显示,只在没有指定axes时生效 :param axes: 指定的坐标轴 :param colorup: the color of the rectangle where close >= open :param colordown: the color of the rectangle where close < open :param width: fraction of a day for the rectangle width :param alpha: the rectangle alpha level, 透明度(0.0~1.0) 1.0为不透明 """ if not kdata: print("kdata is None") return if not axes: axes = create_figure() if new else gca() OFFSET = width/2.0 rfcolor = matplotlib.rcParams['axes.facecolor'] for i in range(len(kdata)): record = kdata[i] open, high, low, close = record.openPrice, record.highPrice, record.lowPrice, record.closePrice if close>=open: color = colorup lower = open height = close-open rect = Rectangle(xy=(i-OFFSET, lower), width=width, height=height, facecolor=rfcolor, edgecolor=color) else: color = colordown lower = close height = open-close rect = Rectangle(xy=(i-OFFSET, lower), width=width, height=height, facecolor=color, edgecolor=color) vline1 = Line2D(xdata=(i, i), ydata=(low, lower), color=color, linewidth=0.5, antialiased=True) vline2 = Line2D(xdata=(i, i), ydata=(lower+height, high), color=color, linewidth=0.5, antialiased=True) rect.set_alpha(alpha) axes.add_line(vline1) axes.add_line(vline2) axes.add_patch(rect) title = get_draw_title(kdata) axes.set_title(title) last_record = kdata[-1] color = 'r' if last_record.closePrice>kdata[-2].closePrice else 'g' text = u'%s 开:%.2f 高:%.2f 低:%.2f 收:%.2f 涨幅:%.2f%%' % ( last_record.datetime.number/10000, last_record.openPrice, last_record.highPrice, last_record.lowPrice, last_record.closePrice, 100*(last_record.closePrice-kdata[-2].closePrice)/kdata[-2].closePrice) axes.text(0.99,0.97, text, horizontalalignment='right', verticalalignment='top', transform=axes.transAxes, color=color) axes.autoscale_view() axes.set_xlim(-1, len(kdata)+1) ax_set_locator_formatter(axes, kdata.getDatetimeList(), kdata.getQuery().kType)
def ax_draw_sys_signal(axes, kdata, sys, style=2): """ """ refdates = kdata.getDatetimeList() date_index = dict([(d, i) for i, d in enumerate(refdates)]) ylim = axes.get_ylim() height = ylim[1] - ylim[0] if style == 1: arrow_buy = dict(arrowstyle="->") arrow_sell = arrow_buy else: arrow_buy = dict(facecolor='red', frac=0.5) arrow_sell = dict(facecolor='blue', frac=0.5) buy_request = sys.getBuyTradeRequest() sell_request = sys.getSellTradeRequest() text_request = '' if buy_request.valid: text_request = u'建议买入 止损: %.2f' % (buy_request.stoploss) color = 'r' if sell_request.valid: text_request = u'建议卖出 来源: %s' % (getSystemPartName(sell_request.part)) color = 'b' if buy_request.valid or sell_request.valid: axes.text(0.99, 0.03, text_request, horizontalalignment='right', verticalalignment='bottom', transform=axes.transAxes, color=color) dates = sys.getTradeRecordList() for d in dates: if not date_index.has_key(d.datetime): continue pos = date_index[d.datetime] krecord = kdata[pos] if d.business == BUSINESS.BUY: axes.annotate('SG', (pos, krecord.lowPrice - height * 0.01), (pos, krecord.lowPrice - height * 0.1), arrowprops=arrow_buy, horizontalalignment='center', verticalalignment='bottom', color='red') elif d.business == BUSINESS.SELL: text = getSystemPartName(d.part) axes.annotate(text, (pos, krecord.highPrice + height * 0.01), (pos, krecord.highPrice + height * 0.1), arrowprops=arrow_sell, horizontalalignment='center', verticalalignment='top', color='blue') else: None
def ibar(indicator, new=True, axes=None, legend_on=False, text_on=False, text_color='k', label=None, width=0.4, color='r', edgecolor='r', zero_on=False, *args, **kwargs): """绘制indicator柱状图 :param Indicator indicator: Indicator实例 :param axes: 指定的坐标轴 :param new: 是否在新窗口中显示,只在没有指定axes时生效 :param legend_on: 是否打开图例 :param text_on: 是否在左上角显示指标名称及其参数 :param text_color: 指标名称解释文字的颜色,默认为黑色 :param str label: label显示文字信息,text_on 及 legend_on 为 True 时生效 :param zero_on: 是否需要在y=0轴上绘制一条直线 :param width: Bar的宽度 :param color: Bar的颜色 :param edgecolor: Bar边缘颜色 :param args: pylab plot参数 :param kwargs: pylab plot参数 """ if not indicator: print("indicator is None") return if not axes: axes = create_figure() if new else gca() if not label: label = "%s %.2f" % (indicator.long_name, indicator[-1]) py_indicatr = [ None if x == constant.null_price else x for x in indicator] x = [i-0.2 for i in range(len(indicator))] y = py_indicatr axes.bar(x, py_indicatr, width=width, color=color, edgecolor=edgecolor, *args, **kwargs) if legend_on: leg = axes.legend(loc='upper left') leg.get_frame().set_alpha(0.5) if text_on: if not axes.texts: axes.text(0.01,0.97, label, horizontalalignment='left', verticalalignment='top', transform=axes.transAxes, color=text_color) else: temp_str = axes.texts[0].get_text() + ' ' + label axes.texts[0].set_text(temp_str) if zero_on: ylim = axes.get_ylim() if ylim[0]<0<ylim[1]: axes.hlines(0,0,len(indicator)) axes.autoscale_view() axes.set_xlim(-1, len(indicator)+1)
def ax_draw_macd2(axes, ref, kdata, n1=12, n2=26, n3=9): """绘制MACD。 当BAR值变化与参考序列ref变化不一致时,显示为灰色, 当BAR和参考序列ref同时上涨,显示红色 当BAR和参考序列ref同时下跌,显示绿色 :param axes: 指定的坐标轴 :param ref: 参考序列,EMA :param KData kdata: KData :param int n1: 指标 MACD 的参数1 :param int n2: 指标 MACD 的参数2 :param int n3: 指标 MACD 的参数3 """ macd = MACD(CLOSE(kdata), n1, n2, n3) bmacd, fmacd, smacd = macd.getResult(0), macd.getResult(1), macd.getResult(2) text = 'MACD(%s,%s,%s) DIF:%.2f, DEA:%.2f, BAR:%.2f' % ( n1, n2, n3, fmacd[-1], smacd[-1], bmacd[-1] ) axes.text( 0.01, 0.97, text, horizontalalignment='left', verticalalignment='top', transform=axes.transAxes ) total = len(kdata) x = [i - 0.2 for i in range(0, total)] y = bmacd x1, x2, x3 = [x[0]], [], [] y1, y2, y3 = [y[0]], [], [] for i in range(1, total): if ref[i] - ref[i - 1] > 0 and y[i] - y[i - 1] > 0: x2.append(x[i]) y2.append(y[i]) elif ref[i] - ref[i - 1] < 0 and y[i] - y[i - 1] < 0: x3.append(x[i]) y3.append(y[i]) else: x1.append(x[i]) y1.append(y[i]) axes.bar(x1, y1, width=0.4, color='#BFBFBF', edgecolor='#BFBFBF') axes.bar(x2, y2, width=0.4, color='r', edgecolor='r') axes.bar(x3, y3, width=0.4, color='g', edgecolor='g') axt = axes.twinx() axt.grid(False) axt.set_yticks([]) fmacd.plot(axes=axt, linestyle='--', legend_on=False, text_on=False) smacd.plot(axes=axt, legend_on=False, text_on=False) for label in axt.get_xticklabels(): label.set_visible(False)
def mkplot(kdata, new=True, axes=None, colorup='r', colordown='g', ticksize=3): """绘制美式K线图 :param KData kdata: K线数据 :param bool new: 是否在新窗口中显示,只在没有指定axes时生效 :param axes: 指定的坐标轴 :param colorup: the color of the lines where close >= open :param colordown: the color of the lines where close < open :param ticksize: open/close tick marker in points """ if not kdata: print("kdata is None") return if not axes: axes = create_figure() if new else gca() for t in range(len(kdata)): record = kdata[t] open, high, low, close = record.openPrice, record.highPrice, record.lowPrice, record.closePrice color = colorup if close>=open else colordown vline = Line2D(xdata=(t, t), ydata=(low, high), color=color, antialiased=False) oline = Line2D(xdata=(t, t), ydata=(open, open), color=color, antialiased=False, marker=TICKLEFT, markersize=ticksize) cline = Line2D(xdata=(t, t), ydata=(close, close), color=color, antialiased=False, markersize=ticksize, marker=TICKRIGHT) axes.add_line(vline) axes.add_line(oline) axes.add_line(cline) title = get_draw_title(kdata) axes.set_title(title) last_record = kdata[-1] color = 'r' if last_record.closePrice>kdata[-2].closePrice else 'g' text = u'%s 开:%.2f 高:%.2f 低:%.2f 收:%.2f' % (last_record.datetime.number/10000, last_record.openPrice, last_record.highPrice, last_record.lowPrice, last_record.closePrice) axes.text(0.99,0.97, text, horizontalalignment='right', verticalalignment='top', transform=axes.transAxes, color=color) axes.autoscale_view() #axes.set_xlim(0, len(kdata)) ax_set_locator_formatter(axes, kdata.getDatetimeList(), kdata.getQuery().kType)
def ax_draw_macd2(axes, ref, kdata, n1=12, n2=26, n3=9): """绘制MACD。 当BAR值变化与参考序列ref变化不一致时,显示为灰色, 当BAR和参考序列ref同时上涨,显示红色 当BAR和参考序列ref同时下跌,显示绿色 :param axes: 指定的坐标轴 :param ref: 参考序列,EMA :param KData kdata: KData :param int n1: 指标 MACD 的参数1 :param int n2: 指标 MACD 的参数2 :param int n3: 指标 MACD 的参数3 """ macd = MACD(CLOSE(kdata), n1, n2, n3) bmacd, fmacd, smacd = macd.getResult(0), macd.getResult(1), macd.getResult(2) text = 'MACD(%s,%s,%s) DIF:%.2f, DEA:%.2f, BAR:%.2f'%(n1,n2,n3,fmacd[-1],smacd[-1],bmacd[-1]) axes.text(0.01,0.97, text, horizontalalignment='left', verticalalignment='top', transform=axes.transAxes) total = len(kdata) x = [i-0.2 for i in range(0, total)] y = bmacd x1,x2,x3 = [x[0]],[],[] y1,y2,y3 = [y[0]],[],[] for i in range(1, total): if ref[i]-ref[i-1]>0 and y[i]-y[i-1]>0: x2.append(x[i]) y2.append(y[i]) elif ref[i]-ref[i-1]<0 and y[i]-y[i-1]<0: x3.append(x[i]) y3.append(y[i]) else: x1.append(x[i]) y1.append(y[i]) axes.bar(x1,y1, width=0.4, color='#BFBFBF', edgecolor='#BFBFBF') axes.bar(x2,y2, width=0.4, color='r', edgecolor='r') axes.bar(x3,y3, width=0.4, color='g', edgecolor='g') axt = axes.twinx() axt.grid(False) axt.set_yticks([]) fmacd.plot(axes=axt, linestyle='--', legend_on=False, text_on=False) smacd.plot(axes=axt, legend_on=False, text_on=False) for label in axt.get_xticklabels(): label.set_visible(False)
def ax_draw_macd(axes, kdata, n1=12, n2=26, n3=9): """绘制MACD :param axes: 指定的坐标轴 :param KData kdata: KData :param int n1: 指标 MACD 的参数1 :param int n2: 指标 MACD 的参数2 :param int n3: 指标 MACD 的参数3 """ macd = MACD(CLOSE(kdata), n1, n2, n3) bmacd, fmacd, smacd = macd.getResult(0), macd.getResult(1), macd.getResult(2) text = 'MACD(%s,%s,%s) DIF:%.2f, DEA:%.2f, BAR:%.2f' % ( n1, n2, n3, fmacd[-1], smacd[-1], bmacd[-1] ) axes.text( 0.01, 0.97, text, horizontalalignment='left', verticalalignment='top', transform=axes.transAxes ) total = len(kdata) x = [i - 0.2 for i in range(total)] x1 = [x[i] for i, d in enumerate(bmacd) if d > 0] y1 = [i for i in bmacd if i > 0] x2 = [x[i] for i, d in enumerate(bmacd) if d <= 0] y2 = [i for i in bmacd if i <= 0] axes.bar(x1, y1, width=0.4, color='r', edgecolor='r') axes.bar(x2, y2, width=0.4, color='g', edgecolor='g') axt = axes.twinx() axt.grid(False) axt.set_yticks([]) fmacd.plot(axes=axt, linestyle='--', legend_on=False, text_on=False) smacd.plot(axes=axt, legend_on=False, text_on=False) for label in axt.get_xticklabels(): label.set_visible(False)
def ibar( indicator, new=True, axes=None, legend_on=False, text_on=False, text_color='k', label=None, width=0.4, color='r', edgecolor='r', zero_on=False, *args, **kwargs ): """绘制indicator柱状图 :param Indicator indicator: Indicator实例 :param axes: 指定的坐标轴 :param new: 是否在新窗口中显示,只在没有指定axes时生效 :param legend_on: 是否打开图例 :param text_on: 是否在左上角显示指标名称及其参数 :param text_color: 指标名称解释文字的颜色,默认为黑色 :param str label: label显示文字信息,text_on 及 legend_on 为 True 时生效 :param zero_on: 是否需要在y=0轴上绘制一条直线 :param width: Bar的宽度 :param color: Bar的颜色 :param edgecolor: Bar边缘颜色 :param args: pylab plot参数 :param kwargs: pylab plot参数 """ if not indicator: print("indicator is None") return if not axes: axes = create_figure() if new else gca() if not label: label = "%s %.2f" % (indicator.long_name, indicator[-1]) py_indicatr = [None if x == constant.null_price else x for x in indicator] x = [i - 0.2 for i in range(len(indicator))] y = py_indicatr axes.bar(x, py_indicatr, width=width, color=color, edgecolor=edgecolor, *args, **kwargs) if legend_on: leg = axes.legend(loc='upper left') leg.get_frame().set_alpha(0.5) if text_on: if not axes.texts: axes.text( 0.01, 0.97, label, horizontalalignment='left', verticalalignment='top', transform=axes.transAxes, color=text_color ) else: temp_str = axes.texts[0].get_text() + ' ' + label axes.texts[0].set_text(temp_str) if zero_on: ylim = axes.get_ylim() if ylim[0] < 0 < ylim[1]: axes.hlines(0, 0, len(indicator)) axes.autoscale_view() axes.set_xlim(-1, len(indicator) + 1) k = indicator.get_context() if len(k) > 0: ax_set_locator_formatter(axes, k.get_date_list(), k.get_query().ktype)
def mkplot(kdata, new=True, axes=None, colorup='r', colordown='g', ticksize=3): """绘制美式K线图 :param KData kdata: K线数据 :param bool new: 是否在新窗口中显示,只在没有指定axes时生效 :param axes: 指定的坐标轴 :param colorup: the color of the lines where close >= open :param colordown: the color of the lines where close < open :param ticksize: open/close tick marker in points """ if not kdata: print("kdata is None") return if not axes: axes = create_figure() if new else gca() for t in range(len(kdata)): record = kdata[t] open, high, low, close = record.open, record.high, record.low, record.close color = colorup if close >= open else colordown vline = Line2D(xdata=(t, t), ydata=(low, high), color=color, antialiased=False) oline = Line2D( xdata=(t, t), ydata=(open, open), color=color, antialiased=False, marker=TICKLEFT, markersize=ticksize ) cline = Line2D( xdata=(t, t), ydata=(close, close), color=color, antialiased=False, markersize=ticksize, marker=TICKRIGHT ) axes.add_line(vline) axes.add_line(oline) axes.add_line(cline) title = get_draw_title(kdata) axes.set_title(title) last_record = kdata[-1] color = 'r' if last_record.close > kdata[-2].close else 'g' text = u'%s 开:%.2f 高:%.2f 低:%.2f 收:%.2f' % ( last_record.date.number / 10000, last_record.open, last_record.high, last_record.low, last_record.close ) axes.text( 0.99, 0.97, text, horizontalalignment='right', verticalalignment='top', transform=axes.transAxes, color=color ) axes.autoscale_view() axes.set_xlim(-1, len(kdata) + 1) ax_set_locator_formatter(axes, kdata.get_date_list(), kdata.get_query().ktype)
def kplot(kdata, new=True, axes=None, colorup='r', colordown='g', width=0.6, alpha=1.0): """绘制K线图 :param KData kdata: K线数据 :param bool new: 是否在新窗口中显示,只在没有指定axes时生效 :param axes: 指定的坐标轴 :param colorup: the color of the rectangle where close >= open :param colordown: the color of the rectangle where close < open :param width: fraction of a day for the rectangle width :param alpha: the rectangle alpha level, 透明度(0.0~1.0) 1.0为不透明 """ if not kdata: print("kdata is None") return if not axes: axes = create_figure() if new else gca() OFFSET = width / 2.0 rfcolor = matplotlib.rcParams['axes.facecolor'] for i in range(len(kdata)): record = kdata[i] open, high, low, close = record.open, record.high, record.low, record.close if close >= open: color = colorup lower = open height = close - open rect = Rectangle( xy=(i - OFFSET, lower), width=width, height=height, facecolor=rfcolor, edgecolor=color ) else: color = colordown lower = close height = open - close rect = Rectangle( xy=(i - OFFSET, lower), width=width, height=height, facecolor=color, edgecolor=color ) vline1 = Line2D( xdata=(i, i), ydata=(low, lower), color=color, linewidth=0.5, antialiased=True ) vline2 = Line2D( xdata=(i, i), ydata=(lower + height, high), color=color, linewidth=0.5, antialiased=True ) rect.set_alpha(alpha) axes.add_line(vline1) axes.add_line(vline2) axes.add_patch(rect) title = get_draw_title(kdata) axes.set_title(title) last_record = kdata[-1] color = 'r' if last_record.close > kdata[-2].close else 'g' text = u'%s 开:%.2f 高:%.2f 低:%.2f 收:%.2f 涨幅:%.2f%%' % ( last_record.date.number / 10000, last_record.open, last_record.high, last_record.low, last_record.close, 100 * (last_record.close - kdata[-2].close) / kdata[-2].close ) axes.text( 0.99, 0.97, text, horizontalalignment='right', verticalalignment='top', transform=axes.transAxes, color=color ) axes.autoscale_view() axes.set_xlim(-1, len(kdata) + 1) ax_set_locator_formatter(axes, kdata.get_date_list(), kdata.get_query().ktype)
def iplot(indicator, new=True, axes=None, legend_on=False, text_on=False, text_color='k', zero_on=False, label=None, *args, **kwargs): """绘制indicator曲线 :param Indicator indicator: indicator实例 :param axes: 指定的坐标轴 :param new: 是否在新窗口中显示,只在没有指定axes时生效 :param legend_on: 是否打开图例 :param text_on: 是否在左上角显示指标名称及其参数 :param text_color: 指标名称解释文字的颜色,默认为黑色 :param zero_on: 是否需要在y=0轴上绘制一条直线 :param str label: label显示文字信息,text_on 及 legend_on 为 True 时生效 :param args: pylab plot参数 :param kwargs: pylab plot参数,如:marker(标记类型)、 markerfacecolor(标记颜色)、 markeredgecolor(标记的边缘颜色) """ if not indicator: print("indicator is None") return if not axes: axes = create_figure() if new else gca() if not label: label = "%s %.2f" % (indicator.long_name, indicator[-1]) py_indicatr = [None if x == constant.null_price else x for x in indicator] axes.plot(py_indicatr, '-', label=label, *args, **kwargs) if legend_on: leg = axes.legend(loc='upper left') leg.get_frame().set_alpha(0.5) if text_on: if not axes.texts: axes.text(0.01, 0.97, label, horizontalalignment='left', verticalalignment='top', transform=axes.transAxes, color=text_color) else: temp_str = axes.texts[0].get_text() + ' ' + label axes.texts[0].set_text(temp_str) if zero_on: ylim = axes.get_ylim() if ylim[0] < 0 < ylim[1]: axes.hlines(0, 0, len(indicator)) axes.autoscale_view() axes.set_xlim(-1, len(indicator) + 1)
def ibar(indicator, axes=None, width=0.4, color='r', edgecolor='r', new=True, legend_on=False, text_on=False, text_color='k', label=None, zero_on=False, *args, **kwargs): """绘制indicator曲线 indicator: Indicator实例 axes: 指定的坐标轴 new: 是否在新窗口中显示,只在没有指定axes时生效 legend_on : 是否打开图例 text_on: 是否在左上角显示指标名称及其参数 text_color: 指标名称解释文字的颜色,默认为黑色 zero_on: 是否需要在y=0轴上绘制一条直线 *args, **kwargs : pylab bar参数 """ if not indicator: print("indicator is None") return if not axes: axes = create_one_axes_figure() if new else gca() if not label: label = "%s %.2f" % (indicator.long_name, indicator[-1]) py_indicatr = [None if x == constant.null_price else x for x in indicator] x = [i - 0.2 for i in range(len(indicator))] y = py_indicatr axes.bar(x, py_indicatr, width=width, color=color, edgecolor=edgecolor, *args, **kwargs) if legend_on: leg = axes.legend(loc='upper left') leg.get_frame().set_alpha(0.5) if text_on: if not axes.texts: axes.text(0.01, 0.97, label, horizontalalignment='left', verticalalignment='top', transform=axes.transAxes, color=text_color) else: temp_str = axes.texts[0].get_text() + ' ' + label axes.texts[0].set_text(temp_str) if zero_on: ylim = axes.get_ylim() if ylim[0] < 0 < ylim[1]: axes.hlines(0, 0, len(indicator)) axes.autoscale_view() axes.set_xlim(-1, len(indicator) + 1)
def mkplot(kdata, ticksize=3, colorup='r', colordown='g', axes=None, new=True): """绘制美式K线图,x轴使用数据的自然索引做下标,并不使用quotes中的time kdata : KData实例 ticksize : open/close tick marker in points colorup : the color of the lines where close >= open colordown : the color of the lines where close < open axes : 指定的坐标轴 new : 是否在新窗口中显示,只在没有指定axes时生效 """ if not kdata: print("kdata is None") return if not axes: axes = create_one_axes_figure() if new else gca() for t in range(len(kdata)): record = kdata[t] open, high, low, close = record.openPrice, record.highPrice, record.lowPrice, record.closePrice color = colorup if close >= open else colordown vline = Line2D(xdata=(t, t), ydata=(low, high), color=color, antialiased=False) oline = Line2D(xdata=(t, t), ydata=(open, open), color=color, antialiased=False, marker=TICKLEFT, markersize=ticksize) cline = Line2D(xdata=(t, t), ydata=(close, close), color=color, antialiased=False, markersize=ticksize, marker=TICKRIGHT) axes.add_line(vline) axes.add_line(oline) axes.add_line(cline) title = get_draw_title(kdata) axes.set_title(title) last_record = kdata[-1] color = 'r' if last_record.closePrice > kdata[-2].closePrice else 'g' text = u'%s 开:%.2f 高:%.2f 低:%.2f 收:%.2f' % ( last_record.datetime.number / 10000, last_record.openPrice, last_record.highPrice, last_record.lowPrice, last_record.closePrice) axes.text(0.99, 0.97, text, horizontalalignment='right', verticalalignment='top', transform=axes.transAxes, color=color) axes.autoscale_view() #axes.set_xlim(0, len(kdata)) ax_set_locator_formatter(axes, kdata.getDatetimeList(), kdata.getQuery().kType)