《BackTrader量化交易图解》第8章:plot 绘制金融图 您所在的位置:网站首页 k线图支撑点怎么看 《BackTrader量化交易图解》第8章:plot 绘制金融图

《BackTrader量化交易图解》第8章:plot 绘制金融图

2024-07-04 18:22| 来源: 网络整理| 查看: 265

文章目录 [8. plot 绘制金融图](#8. plot 绘制金融图) [8.1 金融分析曲线](#8.1 金融分析曲线) [8.2 多曲线金融指标](#8.2 多曲线金融指标) [8.3 Observers 观测子模块](#8.3 Observers 观测子模块) [8.4 plot 绘图函数的常用参数](#8.4 plot 绘图函数的常用参数) [8.5 买卖点符号和色彩风格](#8.5 买卖点符号和色彩风格) [8.6 vol 成交参数](#8.6 vol 成交参数) [8.7 多图拼接模式](#8.7 多图拼接模式) [8.8 绘制 HA 平均 K 线图](#8.8 绘制 HA 平均 K 线图) 8. plot 绘制金融图 8.1 金融分析曲线

BackTrader内置的plot绘图函数, 通过style参数变量控制不同风格的K线图, 默认有以下几种风格:

line:线条图 candle:蜡烛图,标准 K 线图 ohlc:美式 K 线图,和 bar 参数一样 bar:ohlc 曲线图,美式 K 线图,和 ohlc 参数一样。

将style参数设置为bar或者ohlc, 生成的图都是一样的。 如果不设置 style ,默认是line线条图,或者上一次设置参数。下面使用代码生成四种风格的图表,文件名称为Plot.py。

line 线条图:

candle 图:

OHLC 图:

Bar 图:

在K线图中, 每天的图标信息都包含开盘价、 最高价、 最低价和收盘价四组价格数据, 但曲线图通常只有收盘价一组价格。 ohlc美式价格曲线也称为美式K线, 每天的图标也包含开盘价、 最高价、 最低价和收盘价四组价格数据, 这种格式相对比较少见。

8.2 多曲线金融指标

常见的MACD指标及PivotPoint(支撑点) 指标都是复杂的多曲线金融指标, 包含多组指标曲线。

BackTrader支持复杂的多曲线金融指标曲线的绘制, 而且绘制模式非常灵活。

8.3 Observers 观测子模块

在BackTrader量化程序中, 自定义买卖点符号的修改调用都是在主流程中通过Observers观测子模块完成的, 代码如下:

python 复制代码 bt.observers.BuySell = MyBuySell

Observers观测子模块类似于传统的Log日志模块或者后台监控模块, 主要用于记录后台交易数据及图信息。

8.4 plot 绘图函数的常用参数

下图为 plot 模块关系属性示意图:

从图中可以看出,plot 模块主要相关模块有:LineBuffer、Cerebro、Strategy 等。

在BackTrader的指标模块Indicators和观测模块Observers中内置了一个plotinfo绘图参数变量, 用于控制指标和观测数据的绘制, 调用模式如下:

python 复制代码 sma = bt.indicators.SimpleMovingAverage(self.data,period=15) sma.plotinfo.plotname 'mysma'

plotinfo变量采用的是dict字典格式, 常用内置参数设置如下:

python 复制代码 plotinfo = dict(plot=True, subplot=True, plotname='', plotskip=False, plotabove=False, plotlinelabels=False, plotlinevalues=True, plotvaluetags=True, plotymargin=0.0, plotyhlines=[], plotyticks=[], plothlines=[], plotforce=False, plotmaster=None, plotylimited=True, )

通常, SMA均线指标、 vol成交量和主图价格曲线会叠加显示, 其他指标(如rsi、 kdj等) 都采用独立subplot子图模式, 在主图下方显示。

8.5 买卖点符号和色彩风格

买卖点符号是可以自定义的,案例代码 PlotExt1.py 演示如何自定义买卖点符号,主要代码修改有:

python 复制代码 class MyBuySell(bt.observers.BuySell): plotlines = dict( # buy=dict(marker='$\u21E7$', markersize=12.0), #arrow # sell=dict(marker='$\u21E9$', markersize=12.0) # # buy=dict(marker='$++$', markersize=12.0), # sell=dict(marker='$--$', markersize=12.0) # buy=dict(marker="$✔$", markersize=12.0), sell=dict(marker="$✘$", markersize=12.0), ) ... ... bt.observers.BuySell = MyBuySell

本案例使用对勾符号(√) 表示买入, 使用叉符号(×) 表示卖出, 同时这两个符号的尺寸也更大一些。在源码中, "√"和"×"符号需要用两个"$"符号表示, 并括住符号代码, 因为需要使用UTF代码符号。自定义买卖点符号的修改调用, 是在主流程中通过BackTrader的

Observers观测子模块完成的:

python 复制代码 bt.observers.BuySell = MyBuySell

下面再看一下对图表颜色的修改。

相对于修改买卖点符号而言, 对颜色进行修改更加简单。 在调用plot绘图函数时, 可以直接通过参数传递颜色参数:

python 复制代码 tq10_corUp, tq10_corDown = ["#7F7F7F", "#17BECF"] # plotly tq09_corUp, tq09_corDown = ["#B61000", "#0061B3"] tq08_corUp, tq08_corDown = ["#FB3320", "#020AF0"] tq07_corUp, tq07_corDown = ["#B0F76D", "#E1440F"] tq06_corUp, tq06_corDown = ["#FF3333", "#47D8D8"] tq05_corUp, tq05_corDown = ["#FB0200", "#007E00"] tq04_corUp, tq04_corDown = ["#18DEF5", "#E38323"] tq03_corUp, tq03_corDown = ["black", "blue"] tq02_corUp, tq02_corDown = ["red", "blue"] tq01_corUp, tq01_corDown = ["red", "lime"] # tq_ksty01 = dict( volup=tq01_corUp, voldown=tq01_corDown, barup=tq01_corUp, bardown=tq01_corDown ) tq_ksty02 = dict( volup=tq02_corUp, voldown=tq02_corDown, barup=tq02_corUp, bardown=tq02_corDown ) tq_ksty03 = dict( volup=tq03_corUp, voldown=tq03_corDown, barup=tq03_corUp, bardown=tq03_corDown ) tq_ksty04 = dict( volup=tq04_corUp, voldown=tq04_corDown, barup=tq04_corUp, bardown=tq04_corDown ) tq_ksty05 = dict( volup=tq05_corUp, voldown=tq05_corDown, barup=tq05_corUp, bardown=tq05_corDown ) tq_ksty06 = dict( volup=tq06_corUp, voldown=tq06_corDown, barup=tq06_corUp, bardown=tq06_corDown ) tq_ksty07 = dict( volup=tq07_corUp, voldown=tq07_corDown, barup=tq07_corUp, bardown=tq07_corDown ) tq_ksty08 = dict( volup=tq08_corUp, voldown=tq08_corDown, barup=tq08_corUp, bardown=tq08_corDown ) tq_ksty09 = dict( volup=tq09_corUp, voldown=tq09_corDown, barup=tq09_corUp, bardown=tq09_corDown ) tq_ksty10 = dict( volup=tq10_corUp, voldown=tq10_corDown, barup=tq10_corUp, bardown=tq10_corDown ) ...... cerebro.plot(style="candle", **tq_ksty10)

程序代码当中的**tq_ksty10变量参数, 两个星号"**"变量是Python的特有语法中字典模式的多变量, 这有些类似于C语言的"宏定义".

barup和bardown是箭头符号颜色, volup和voldown是成交量曲线颜色。

up(上涨) 、 down(下跌) 表示价格/成交量的变化。

在K线图中有专门的规定, 比如, 当天的成交量或者价格超过昨天的, 则使用up颜色。

在案例中预设了10种不同风格的颜色组合, 大家还可以自己修改其他更多的颜色组合, 看看不同参数的绘制效果,最终显示效果如下所示:

8.6 vol 成交参数

本示例代码为 PlotExt2vol.py 。

默认的绘图函数代码是:

python 复制代码 cerebro.plot(style='candle')

这其中省略了两个和 volume 成交了相关的参数,这两个参数都是布尔类型:

volume:默认为 True,表示绘制成交量图形;若为 False,则不绘制成交量图形; voloverlay:默认为 True,表示使用叠加绘制模式;若为 False,则表示非叠加模式,采用独立的 sub 子图绘制成交量。

看看下面代码生成的图片:

python 复制代码 cerebro.plot(style="candle", volume=True)

再看一下如下代码生成的图片:

python 复制代码 cerebro.plot(style="candle", volume=True, voloverlay=False) # volume成交量:采用subplot子图模式,默认为voloverlay=True叠加模式

volume成交量曲线相对来说比较重要, 所以BackTrader量化软件专门设计了一个plot_volume成交量曲线绘制子函数, 其关系属性示意图如下所示:

8.7 多图拼接模式

本实例代码为 PlotExt3.py 。

在调用 plot 绘图函数时,使用 numfigs 设置图形数目,本示例设置为 5,结果图被切分为 5 张独立图片,而不是一张图片:

python 复制代码 # plot多图拼接,BT版的股市:《清明上河图》 # 注意修改其实日期参数为:空字符串 # numfigs,默认值为:1 cerebro.plot(numfigs=5)

生成如下 5 张图片:

注意, 各图之间的时间指标是连续的, 把图拼起来就是一张很长的图。当数据太多时,单张图片的部分细节会模糊,影响显示效果。可以使用这种多图拼接模式,使细节更清晰。

8.8 绘制 HA 平均 K 线图

本实例代码 PlotExt4hak.py

在 cerebro.adddata(data) 代码行上面添加如下代码设置过滤器:

python 复制代码 # ----ha-k data.addfilter(bt.filters.HeikinAshi)

生成图片如下所示:

HA平均K线图通过对数值进行平均化处理, 更加容易发现买卖点信号, 即平均价格的波动, 更容易出现买卖的机会。 一般买卖点信号出现在连续颜色的突变时, 而单个交易日颜色的变化可以忽略。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有