摘要:使用Python绘制价格反转图

我与反转图


我第一次了解到反转图,是在购买的交易书籍上看到的。 当时就被它直观的视觉方式惊呆了,感觉它在揭示趋势的延续和趋势的反转方面的能力,堪称一绝。

可惜,国内的交易平台,不论是股票还是期货平台,都不能展示反转图。 当时,我还没有学习过Python,甚至一点都不了解Python。 于是只能在文华财经和通达信里使劲折腾,费了极大的精力和功夫, 也不过弄了个凑乎能用的东西出来,距离真正的反转图还是差得太远。

再后来,开始做量化交易,了解到了一款国外的软件,叫MultiCharts,里面有自带的反转图。 可惜,MultiCharts把自带的反转图称为新价线,对反转图有了大概90%的还原度,也是勉强能用了。

为此,我不惜注册、开户,绑定了MultiCharts的账号。然后发现MultiCharts的问题是真多, 其指标的编写方式,直到现在我依旧不喜欢。其次,因为是外国的软件,用的人很少, 在网络上几乎搜索不到任何有用的资料。所以,如果你有编写一个稍微复杂些的指标,如果在某一步卡住了, 那么很抱歉,你可能会不得不停止了。当然,这些都不算什么,总归是可以克服的。 最后让我不得不放弃它的原因是,频繁掉线。

是的,频繁掉线!不论是白天还是夜盘,平均每隔一分钟就掉线一次。联系了MultiCharts的客服,反复检查, 还远程操作了我的电脑,也没能解决问题。同样的账号,登录其他的交易软件,如文华、博易云等都没有问题, 可以排除是期货公司的原因。

两个星期后,我终于还是放弃了。MultiCharts并不支持云端条件单,因此如果掉线,所有的下单指令都会失效。 这简直太可怕了!

举个例子:比如,我交易10手沥青,可能前10秒,还盈利5000,但是因为掉线, 导致平仓慢了那么几秒,就从浮盈5000变成了浮亏5000。这损失难道MultiCharts会赔我吗?

你叫我怎么用?怎么能用?又怎么敢用? 所以,我最终还是和MultiCharts说了再见!

后来,因为接触到量化交易,于是学习了Python,从此打开了量化交易的另一扇门,进入了新的世界!

以上,是为缘起。

不多言,我们一起来看下反转图的魅力吧!

-----------------------------------------------------------------

首先,导入必要的模块!

# 导入K线和指标绘制模块
from MyKlines import *
# 系统模块,用于自动打开文件
import os

然后,我们获取股票的数据。

之前的文章有讲过怎么获取免费的股票数据,这里就不再重复了。 这里,我们选择凯莱英来作为示例。

data = get_data(code="sz.002821", start_date="2020-09-01", end_date="2021-05-29", frequency="d", adjust='2')

获取到的数据如下所示

              open   close    high     low   volume
2020-09-01  273.89  273.00  276.50  267.00  1658140
2020-09-02  272.99  270.00  273.99  268.30  1726549
2020-09-03  270.76  272.70  279.77  269.08  1778923
2020-09-04  267.30  267.68  271.97  262.80  2368819
2020-09-07  263.50  247.95  270.47  247.07  3500664
...            ...     ...     ...     ...      ...
2021-05-24  362.94  365.00  365.76  351.00  1561655
2021-05-25  363.48  369.13  371.00  362.13  2050934
2021-05-26  367.10  366.31  369.60  361.00  1321955
2021-05-27  366.35  366.66  370.80  358.00  1173571
2021-05-28  367.02  357.02  371.11  350.21  2582885[178 rows x 5 columns]

下面就是绘制反转图了。

这里,我们用到kbreak()函数,相关的参数如下所示:


  • 参数:
  • ax:绘图的区域
  • data:pandas数据:包括时间和价格
  • n=3, 反转的柱体
  • width:float格式,柱体的宽度
  • edgecolor_up='red', 上涨的边框颜色
  • facecolor_up='white', 上涨的填充颜色
  • edgecolor_down='green', 下跌的边框颜色
  • facecolor_down='green', 下跌的填充颜色
  • count_show=False, 是否显示趋势计数
  • grid_show=True, 是否显示网格

# 设置画布
fig = plt.figure(figsize=(12, 9), dpi=300)
# 添加绘图区域
ax = fig.add_subplot(111)

先来个三线反转图

默认的反转图,上涨趋势是红色空心的,下跌趋势是绿色实心的。

# 画反转图
kbreak(ax, data, grid_show=False)
# 调整图片的边缘空白大小,取值0-1.
# 注意:right > left, top > bottom
plt.subplots_adjust(left=0.1, right=0.9, top=0.9, bottom=0.1)

也可以改成都是实心的柱体,柱体的颜色都是可以随意调整的,改为自己喜欢的颜色即可。

# 画图前清除绘图区域
plt.cla()
kbreak(ax,  #绘图的区域data,  # 绘图数据,包括时间和价格n=3,  #反转的柱体width=0.5,  # 柱体的宽度edgecolor_up='red',  # 上涨的边框颜色facecolor_up='red',  # 上涨的填充颜色edgecolor_down='green',  # 下跌的边框颜色facecolor_down='green',  # 下跌的填充颜色count_show=False,  # 是否显示趋势计数draw_start=0,  # 为了避免缺失值,从哪一项开始绘制grid_show=False,  # 是否显示网格
)
# 调整图片的边缘空白大小,取值0-1.
# 注意:right > left, top > bottom
plt.subplots_adjust(left=0.1, right=0.9, top=0.9, bottom=0.1)

为了更好地观察和对比价格,我们可以为反转图添加网格。

# 画图前清除绘图区域
plt.cla()
kbreak(ax,  #绘图的区域data,  # 绘图数据,包括时间和价格n=3,  #反转的柱体facecolor_up='red',  # 上涨的填充颜色grid_show=True,  # 是否显示网格
)
# 调整图片的边缘空白大小,取值0-1.
# 注意:right > left, top > bottom
plt.subplots_adjust(left=0.1, right=0.9, top=0.9, bottom=0.1)

为了更明显地展示趋势的延续情况,可以在柱体上添加趋势的计数。

# 画图前清除绘图区域
plt.cla()
kbreak(ax,  #绘图的区域data,  # 绘图数据,包括时间和价格n=3,  #反转的柱体facecolor_up='red',  # 上涨的填充颜色count_show=True,  # 是否显示趋势计数grid_show=True,  # 是否显示网格
)
# 调整图片的边缘空白大小,取值0-1.
# 注意:right > left, top > bottom
plt.subplots_adjust(left=0.1, right=0.9, top=0.9, bottom=0.1)

反转图的特点,就是可以过滤掉震荡,把握住每一次的趋势。

如果不反转就不清仓,那么就绝不会过早止盈,从而提高盈亏比,吃掉趋势的绝大部分利润。 利用反转图,我们可以清楚地看到趋势的发展情况。 趋势是刚开始?还是已经延续了一段时间?趋势反转了吗? 关于趋势的问题,没有必反转图更好的可视化工具了!

我是真的太喜欢反转图了!

我们还可以调大反转图的反转参数,过滤掉一些较小的震荡。

比如,从三线反转,调整为六线反转,我们来看一下凯莱英的六线反转图:

data2 = get_data(code="sz.002821", start_date="2020-01-01", end_date="2021-05-29", frequency="d", adjust='2')
# 画图前清除绘图区域
plt.cla()
kbreak(ax,  #绘图的区域data2,  # 绘图数据,包括时间和价格n=6,  #反转的柱体facecolor_up='red',  # 上涨的填充颜色count_show=True,  # 是否显示趋势计数grid_show=False,  # 是否显示网格
)
# 调整图片的边缘空白大小,取值0-1.
# 注意:right > left, top > bottom
plt.subplots_adjust(left=0.1, right=0.9, top=0.9, bottom=0.1)

日线的数据+六线反转,适用于揭示长期的趋势。

就凯莱英的六线反转图而言,趋势十分明显,就一个字,涨!

当然,我们也是可以把反转图用于更小的周期。

比如60分钟、15分钟,乃至tick数据都没有任何问题。

还是凯莱英,我们使用60分钟数据,看下它的近期走势如何。

data3 = get_data(code="sz.002821", start_date="2021-01-01", end_date="2021-05-29", frequency="60", adjust='2')
# 画图前清除绘图区域
plt.cla()
kbreak(ax,  #绘图的区域data3,  # 绘图数据,包括时间和价格n=3,  #反转的柱体facecolor_up='red',  # 上涨的填充颜色count_show=True,  # 是否显示趋势计数grid_show=False,  # 是否显示网格
)
# 调整图片的边缘空白大小,取值0-1.
# 注意:right > left, top > bottom
plt.subplots_adjust(left=0.1, right=0.9, top=0.9, bottom=0.1)

把各个周期和不同反转柱体的反转图画到一起

为了更好地比较,我们可以把日线和分钟数据的反转图,画到一起。

# 画图前清除画布
plt.clf()
ax1 = fig.add_subplot(211)
ax2 = fig.add_subplot(212)
kbreak(ax1,  #绘图的区域data,  # 绘图数据,包括时间和价格n=3,  #反转的柱体facecolor_up='r',  # 上涨的填充颜色grid_show=False,  # 是否显示网格
)
ax1.set_title('凯莱英三线反转图(日线) 2020-09-01至2021-05-29')
kbreak(ax2,  #绘图的区域data,  # 绘图数据,包括时间和价格n=3,  #反转的柱体facecolor_up='r',  # 上涨的填充颜色grid_show=False,  # 是否显示网格
)
ax2.set_title('凯莱英三线反转图(60分钟) 2021-01-01至2021-05-29')
# 调整图片的边缘空白大小,取值0-1.
# 注意:right > left, top > bottom
plt.subplots_adjust(left=0.1, right=0.9, top=0.9, bottom=0.1)

顺便提一下,我发现其他颜色和风格的反转图,也是很酷!

# 画图前清除画布
plt.clf()
ax1 = fig.add_subplot(221)
ax2 = fig.add_subplot(222)
ax3 = fig.add_subplot(223)
ax4 = fig.add_subplot(224)
kbreak(ax1,  #绘图的区域data,  # 绘图数据,包括时间和价格n=3,  #反转的柱体draw_start=60,edgecolor_up='r',  # 上涨的边框颜色facecolor_up='w',  # 上涨的填充颜色edgecolor_down='g',  # 下跌的边框颜色facecolor_down='g',  # 下跌的填充颜色grid_show=False,  # 是否显示网格
)ax1.set_title('凯莱英三线反转图(日线) 2020-09-01至2021-05-29')
kbreak(ax2,  #绘图的区域data,  # 绘图数据,包括时间和价格n=3,  #反转的柱体draw_start=60,edgecolor_up='g',  # 上涨的边框颜色facecolor_up='g',  # 上涨的填充颜色edgecolor_down='r',  # 下跌的边框颜色facecolor_down='r',  # 下跌的填充颜色grid_show=False,  # 是否显示网格
)kbreak(ax3,  #绘图的区域data,  # 绘图数据,包括时间和价格n=3,  #反转的柱体draw_start=60,edgecolor_up='k',  # 上涨的边框颜色facecolor_up='w',  # 上涨的填充颜色edgecolor_down='k',  # 下跌的边框颜色facecolor_down='k',  # 下跌的填充颜色grid_show=False,  # 是否显示网格
)kbreak(ax4,  #绘图的区域data,  # 绘图数据,包括时间和价格n=3,  #反转的柱体draw_start=60,edgecolor_up='r',  # 上涨的边框颜色facecolor_up='r',  # 上涨的填充颜色edgecolor_down='b',  # 下跌的边框颜色facecolor_down='b',  # 下跌的填充颜色grid_show=False,  # 是否显示网格
)# 调整图片的边缘空白大小,取值0-1.
# 注意:right > left, top > bottom
plt.subplots_adjust(left=0.1, right=0.9, top=0.9, bottom=0.1)

  • 随便写了下,就是几个小时过去了。
  • 分享这东西,实在是太费时间了。
  • 我忍不住又问,我为什么要分享给你们呢?
  • 我自己一个人悄悄地割韭菜,不亦悦乎?
  • 想了想,或许是我希望遇到更多的志同道合者?
  • 毕竟,如我这般,以交易为生者,在中国、乃至全世界,都是极少数、极少数的。
  • 欢迎在评论区留下你的见解,我期待与你一起交流!

我的交易工具之价格反转图相关推荐

  1. Python使用Plotly绘图工具,绘制面积图

    今天我们来讲一下如何使用Python使用Plotly绘图工具,绘制面积图 绘制面积图与绘制散点图和折线图的画法类似,使用plotly graph_objs 中的Scatter函数,不同之处在于面积图对 ...

  2. 你应该知道的21大Python量化交易工具

    技术可用性的快速增长使个人交易者也能够进行系统和算法交易.下面为大家分享2022年 Python 量化交易使用最广泛的21大交易平台和框架.经纪自营商.数据提供商和其他有用的交易库等,这些交易库适用于 ...

  3. python 量化交易_基于Python的量化交易工具清单(上)

    -- Python量化工具清单 -- 以下内容来源于Wilson Freitas的Github项目"Awesome Quant".原文中包含了丰富的语言类别,但是后续介绍主要针对P ...

  4. [工具] PicGo + smms 构建图床

    [工具] PicGo + smms 构建图床 文章目录 [工具] PicGo + smms 构建图床 2020.07.02更新 下载PicGo 2.3.0-beta.0 获取API Token Pic ...

  5. 【GIS工具】谷歌卫星图下载工具之再聊坐标问题

    按照设想,在poi加载工具之后,围绕三调转换和调研的基础工具就差卫星图了,所以就开始了写这个工具,但各种坐标之间的转换问题一直都没有一个满意的解决办法,先发一个版本,以后再更新! 1.聊UTM坐标系 ...

  6. 杂项-绘图工具:思维导图

    ylbtech-杂项-绘图工具:思维导图 思维导图又叫心智导图,是表达发散性思维的有效图形思维工具 ,它简单却又很有效,是一种革命性的思维工具.思维导图运用图文并重的技巧,把各级主题的关系用相互隶属与 ...

  7. 扫描工具X-Scan使用教程(图)

    扫描工具X-Scan使用教程(图) X-scan 是国内相当出名的扫描工具,是安全焦点又一力作.完全免费,无需注册,无需安装(解压缩即可运行),无需额外驱动程序支持.可以运行在Windows 9x/N ...

  8. ArcGIS利用数据驱动工具条批量出图

    背景:分乡镇做300多个拆旧地块的调整完善局部图. 需求:导出图片时根据乡镇名称批量导出. 解决办法:数据驱页面即可请示解决 演示如下: 第一步:shp放到数据库中,标注转注记,然后编辑注记,符号样式 ...

  9. 纳巴罗男装名品折扣店价格,地址(图)-北京-大众点评网

    纳巴罗男装名品折扣店价格,地址(图)-北京-大众点评网 纳巴罗男装名品折扣店价格,地址(图)-北京-大众点评网 纳巴罗男装名品折扣店 posted on 2014-12-31 10:23  lexus ...

最新文章

  1. 什么是Python的var_dump()的Python等价物? [重复]
  2. 开放下载!复旦大学邱锡鹏教授发布教科书《神经网络与深度学习》
  3. struts2的namespace的问题
  4. 使用 Anthem.NET 的常见回调(Callback)处理方式小结[转]
  5. pat题解java,1039 到底买不买 (20分) Java题解 PAT (Basic Level) Practice (中文)- 巧妙开大数组减少代码量...
  6. 【Mac brew】代理安装brew insall
  7. 前端try catch是如何捕获异常的_Try-Catch无法正确定位异常位置,我推荐2个有效技巧...
  8. ntp server
  9. 使用IDEA反编译class文件
  10. 模糊C均值聚类 C++代码
  11. Vagrant设置局域网访问
  12. 【MFC】CTabSheet类之再改造
  13. OpenCV入门到进阶:实战三大典型项目(更新至12) IT自学视频教程
  14. 白话ArcGIS系列软件技术应用(一)空间地理数据库的创建
  15. UE4 坐标转换 之 CAD 坐标转UE
  16. GC详解---JVM(三)
  17. 计算机毕业设计Python+djang公务员考试信息管理系统(源码+系统+mysql数据库+Lw文档)
  18. 哨兵2a 波段组合_基于Sentinel-2(哨兵2)遥感卫星的植被覆盖度提取
  19. moby_如何使用Moby Dick探索以主题为主题的开源项目的深度
  20. 在QT中调用google earth并打开KML文件

热门文章

  1. el-radio的disabled设置
  2. 北京医保不用选也能报销的定点医院包括:A类定点医院、专科医院和中医医院
  3. CSS初识- 选择器 背景 浮动 盒子模型
  4. 大并发量socket 通信框架
  5. 最新消息!终于把QQ和微信一键打通了,功能超级实用!提高效率
  6. iptables规则备份和恢复、firewall的9个zone、关于zone的操作和关于servic
  7. 合并两个有序链表 图解说明
  8. 2023年中级计算机软考怎么报考呢?软考证书有用吗?
  9. react下自定义Table
  10. 什么是SOCKET,什么是TCP,什么是HTTP?三者之间的关系和差异(面试常问)