hikyuu2/docs/source/interactive/index.rst
2020-06-30 23:27:23 +08:00

198 lines
8.5 KiB
ReStructuredText
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

交互工具
=========
Hikyuu是研究系统交易的Python量化框架可以在其基础上构建自己的客户端程序。而Hikyuu库本身自带一个交互式工具可以在Python Shell环境下进行探索可以从在Python shell中使用 “from hikyuu.interactive.interactive” 引入该工具。该工具主要提供基于 matplotlib 的图形绘制函数便于在交互式环境下绘制K线、指标、信号等。
使用 matplotlib 绘制图形,必须了解 matplotlib 绘图中的两个基本对象figure、axes。窗口figure是坐标轴axes对象的容器绘图时首先需指定窗口在窗口中绘制相应的坐标轴然后在坐标轴中绘制图形。在 matplotlib 中绘制图形需要指定图形在哪个坐标轴中进行绘制。当绘图函数中没有指定坐标轴时将默认使用当前的坐标轴如果不存在任何一个坐标轴时matplotlib 将创建自动创建一个窗口及其包含的坐标轴。
绘图的详细示例:
`<http://nbviewer.jupyter.org/github/fasiondog/hikyuu_examples/blob/master/005-Drawplot.ipynb?flush_cache=True>`_
绘制组合窗口
--------------------
创建组合窗口的快捷函数,返回相应的 axes 对象或tuple。
.. py:function:: create_figure([n = 1, figsize = (10,8)])
生成含有指定坐标轴数量的窗口最大只支持4个坐标轴。
:param int n: 坐标轴数量
:param figsize: (宽, 高)
:return: (ax1, ax2, ...) 根据指定的坐标轴数量而定,超出[1,4]个坐标轴时返回None
绘制图形的便捷函数
--------------------
.. py:function:: ax_set_locator_formatter(axes, dates, typ)
设置指定坐标轴的日期显示根据指定的K线类型优化X轴坐标显示
:param axes: 指定的坐标轴
:param dates: Datetime构成可迭代序列
:param Query.KType typ: K线类型
.. py:function:: adjust_axes_show(axeslist)
用于调整上下紧密相连的坐标轴显示时,其上一坐标轴最小值刻度和下一坐标轴最大值刻度显示重叠的问题
:param axeslist: 上下相连的坐标轴列表 (ax1,ax2,...)
.. py:function:: 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
.. py:function:: 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
绘制K线、指标、信号等
----------------------
以下函数已设为相应类型对象的 plot 函数,如 KData kdata 可直接调用 kdata.plot(),等同于没有第一个参数的 kplot()
.. py:function:: 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为不透明
.. py:function:: 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
.. py:function:: 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 new: 是否在新窗口中显示只在没有指定axes时生效
:param 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标记的边缘颜色
.. py:function:: 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参数
.. py:function:: sgplot(sg[, new = True, axes = None, style = 1, kdata = None])
绘制买入/卖出信号
:param SignalBase sg: 信号指示器
:param new: 仅在未指定axes的情况下生效当为True时创建新的窗口对象并在其中进行绘制
:param axes: 指定在那个轴对象中进行绘制
:param style: 1 | 2 信号箭头绘制样式
:param KData kdata: 指定的KData即信号发生器的交易对象如该值为None则认为该信号发生器已经指定了交易对象否则使用该参数作为交易对象
.. py:function:: cnplot(cn[, new=True, axes=None, kdata=None])
绘制系统有效条件
:param ConditionBase cn: 系统有效条件
:param new: 仅在未指定axes的情况下生效当为True时创建新的窗口对象并在其中进行绘制
:param axes: 指定在那个轴对象中进行绘制
:param KData kdata: 指定的KData如该值为None则认为该系统有效条件已经指定了交易对象否则使用该参数作为交易对象
.. py:function:: sysplot(sys[, new=True, axes=None, style=1])
绘制系统实际买入/卖出信号
:param SystemBase sys: 系统实例
:param new: 仅在未指定axes的情况下生效当为True时创建新的窗口对象并在其中进行绘制
:param axes: 指定在那个轴对象中进行绘制
:param style: 1 | 2 信号箭头绘制样式
内建示例
----------
.. py:function:: vl.draw(stock, query=Query(-130), ma1_n=5, ma2_n=10, ma3_n=20, ma4_n=60, ma5_n=100, ma_type="SMA", vma1_n=5, vma2_n=10)
绘制普通K线图 + 成交量(成交金额)
.. py:function:: vl.draw2(stock, query=Query(-130), ma1_n=7, ma2_n=20, ma3_n=30, ma4_n=42, ma5_n=100, vma1_n=5, vma2_n=10)
绘制普通K线图 + 成交量(成交金额)+ MACD
.. py:function:: el.draw(stock, query=QueryByIndex(-130), ma_n=22, ma_w='auto', vigor_n=13)
绘制亚历山大.艾尔德交易系统图形。参见 [BOOK2]_
.. py:function:: kf.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)。参见 [BOOK1]_
.. py:function:: kf.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)。参见 [BOOK1]_