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

这篇具有很好参考价值的文章主要介绍了《BackTrader量化交易图解》第8章:plot 绘制金融图。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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 线条图:

backtrader plot没有交易标志,从零开始掌握BackTrader量化框架,金融,python,人工智能,量化金融,BackTrader

candle 图:

backtrader plot没有交易标志,从零开始掌握BackTrader量化框架,金融,python,人工智能,量化金融,BackTrader

OHLC 图:

backtrader plot没有交易标志,从零开始掌握BackTrader量化框架,金融,python,人工智能,量化金融,BackTrader

Bar 图:

backtrader plot没有交易标志,从零开始掌握BackTrader量化框架,金融,python,人工智能,量化金融,BackTrader

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

8.2 多曲线金融指标

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

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

8.3 Observers 观测子模块

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

bt.observers.BuySell = MyBuySell

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

8.4 plot 绘图函数的常用参数

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

backtrader plot没有交易标志,从零开始掌握BackTrader量化框架,金融,python,人工智能,量化金融,BackTrader

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

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

sma = bt.indicators.SimpleMovingAverage(self.data,period=15)
sma.plotinfo.plotname 'mysma'

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

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 演示如何自定义买卖点符号,主要代码修改有:

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观测子模块完成的:

bt.observers.BuySell = MyBuySell

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

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种不同风格的颜色组合, 大家还可以自己修改其他更多的颜色组合, 看看不同参数的绘制效果,最终显示效果如下所示:

backtrader plot没有交易标志,从零开始掌握BackTrader量化框架,金融,python,人工智能,量化金融,BackTrader

8.6 vol 成交参数

本示例代码为 PlotExt2vol.py 。

默认的绘图函数代码是:

cerebro.plot(style='candle')

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

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

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

cerebro.plot(style="candle", volume=True)

backtrader plot没有交易标志,从零开始掌握BackTrader量化框架,金融,python,人工智能,量化金融,BackTrader

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

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

backtrader plot没有交易标志,从零开始掌握BackTrader量化框架,金融,python,人工智能,量化金融,BackTrader

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

backtrader plot没有交易标志,从零开始掌握BackTrader量化框架,金融,python,人工智能,量化金融,BackTrader

8.7 多图拼接模式

本实例代码为 PlotExt3.py 。

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

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

生成如下 5 张图片:

backtrader plot没有交易标志,从零开始掌握BackTrader量化框架,金融,python,人工智能,量化金融,BackTrader

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

8.8 绘制 HA 平均 K 线图

本实例代码 PlotExt4hak.py

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

# ----ha-k
data.addfilter(bt.filters.HeikinAshi)

生成图片如下所示:

backtrader plot没有交易标志,从零开始掌握BackTrader量化框架,金融,python,人工智能,量化金融,BackTrader

HA平均K线图通过对数值进行平均化处理, 更加容易发现买卖点信号, 即平均价格的波动, 更容易出现买卖的机会。 一般买卖点信号出现在连续颜色的突变时, 而单个交易日颜色的变化可以忽略。文章来源地址https://www.toymoban.com/news/detail-812669.html

到了这里,关于《BackTrader量化交易图解》第8章:plot 绘制金融图的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • backtrader和vnpy哪个更好用?

    研究backtrader这么长时间,我感觉相对vnpy,backtrader最大的优势在于对多标的,多周期的处理上非常优雅,比vnpy强。多标的,多周期在实盘时处理时,由于存在不确定的网络延时,更加复杂。考虑一个单周期多标的简单的场景,从远端接收tick,然后合成1分钟k线。 vnpy合成分钟

    2023年04月19日
    浏览(44)
  • Backtrader 文档学习- 整体架构功能分析理解

    1. 概述 backtrader是一个用于开发和执行交易策略的Python框架。它提供了一套完整的工具和功能,使得用户可以方便地进行策略回测、实盘交易以及数据分析。 backtrader的入口为Cerebro类,该类将所有输入(Data Feeds)、策略 (Strategy)、观察者(Observers)、策略评估(Analyzers) 、经纪人(

    2024年02月22日
    浏览(21)
  • 量化交易策略的未来:如何融合人工智能与金融

    量化交易策略的未来:如何融合人工智能与金融 量化交易策略已经成为金融市场中最受关注的话题之一。随着大数据、人工智能和机器学习技术的快速发展,量化交易策略的应用范围和深度得到了显著提高。这篇文章将探讨量化交易策略的未来趋势,以及如何将人工智能与金

    2024年02月20日
    浏览(25)
  • Backtrader官方中文文档:第十章Broker经纪人

    本文档参考backtrader官方文档,是官方文档的完整中文翻译,可作为backtrader中文教程、backtrader中文参考手册、backtrader中文开发手册、backtrader入门资料使用。查看本专栏完整内容, 请访问:https://blog.csdn.net/windanchaos/category_12350607.html broker英文是经纪人、中间人,它的主要被用

    2024年02月08日
    浏览(25)
  • Backtrader 文档学习-Order Management and Execution

    本章提供了关于order的详细功能测试用例,很好很重要。 最后的示例部分,详细分析总结了不同参数的效果和输出。 如果不能模拟订单交易回测就不会完整。为此,平台中提供了以下功能, 对于订单管理3个基本要素: buy sell cancel 对order执行逻辑,有以下类型: Market Close Li

    2024年01月24日
    浏览(18)
  • 一文读懂常见订单类型及backtrader支持情况

    订单反映的是投资者的决策,表明投资者想以什么价格买入/卖出对应的投资标的,订单价格对最后的投资结果影响非常大,懂得都懂。 投资者常用的订单类型包括市价单、限价单、止损/止盈单、移动止损/止盈单、附加订单等,然而交易所却只有市价单和限价单两种基本订单

    2024年02月15日
    浏览(17)
  • Backtrader官方中文文档:第一部分Introduction简介

    本文档参考backtrader官方文档,是官方文档的 完整中文翻译 ,可作为backtrader中文教程、backtrader中文参考手册、backtrader中文开发手册、backtrader入门资料使用。 查看本专栏完整内容,请访问:https://blog.csdn.net/windanchaos/category_12350607.html 本文档参考Backtrader官方文档翻译,结合译

    2024年02月07日
    浏览(19)
  • AI赋能金融创新:ChatGPT引领量化交易新时代

    随着人工智能技术的不断进步,金融领域也经历着一场技术革命。量化交易,作为金融领域的一大分支,正逐渐受到AI技术的深刻影响。特别是近年来,ChatGPT等自然语言处理技术的崛起,为量化交易带来了前所未有的机遇。本文将深入探讨ChatGPT如何助力量化交易,以及这一结

    2024年02月04日
    浏览(26)
  • 【答读者问56】backtrader如何输出持仓时候的每日收益率

    有个读者咨询如何在运行策略之后,能够输出来特定的数据到csv文件中,比如持仓期间每个bar的收益率等相关信息? 简单方法 要解决这个问题有很简单的方法,比如初始化的时候创建一个容器(比如列表)用来保存每个bar运行的数据,在next中尝试获取相关的信息,添加到容器

    2024年02月10日
    浏览(58)
  • 使用Yfinance和Plotly分析金融数据

    大家好,今天我们用Python分析金融数据,使用Yfinance和Plotly绘制图表,带你了解在Python中使用Plotly制作图表,利用Plotly强大的图表功能来分析和可视化金融数据。 导语 在本文中,我们将深入研究Plotly,从而高效绘制和分析金融数据。我们将探讨Plotly基础的图表功能,以及如何

    2024年02月13日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包