我的交易工具之价格反转图
摘要:使用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)
- 随便写了下,就是几个小时过去了。
- 分享这东西,实在是太费时间了。
- 我忍不住又问,我为什么要分享给你们呢?
- 我自己一个人悄悄地割韭菜,不亦悦乎?
- 想了想,或许是我希望遇到更多的志同道合者?
- 毕竟,如我这般,以交易为生者,在中国、乃至全世界,都是极少数、极少数的。
- 欢迎在评论区留下你的见解,我期待与你一起交流!
我的交易工具之价格反转图相关推荐
- Python使用Plotly绘图工具,绘制面积图
今天我们来讲一下如何使用Python使用Plotly绘图工具,绘制面积图 绘制面积图与绘制散点图和折线图的画法类似,使用plotly graph_objs 中的Scatter函数,不同之处在于面积图对 ...
- 你应该知道的21大Python量化交易工具
技术可用性的快速增长使个人交易者也能够进行系统和算法交易.下面为大家分享2022年 Python 量化交易使用最广泛的21大交易平台和框架.经纪自营商.数据提供商和其他有用的交易库等,这些交易库适用于 ...
- python 量化交易_基于Python的量化交易工具清单(上)
-- Python量化工具清单 -- 以下内容来源于Wilson Freitas的Github项目"Awesome Quant".原文中包含了丰富的语言类别,但是后续介绍主要针对P ...
- [工具] PicGo + smms 构建图床
[工具] PicGo + smms 构建图床 文章目录 [工具] PicGo + smms 构建图床 2020.07.02更新 下载PicGo 2.3.0-beta.0 获取API Token Pic ...
- 【GIS工具】谷歌卫星图下载工具之再聊坐标问题
按照设想,在poi加载工具之后,围绕三调转换和调研的基础工具就差卫星图了,所以就开始了写这个工具,但各种坐标之间的转换问题一直都没有一个满意的解决办法,先发一个版本,以后再更新! 1.聊UTM坐标系 ...
- 杂项-绘图工具:思维导图
ylbtech-杂项-绘图工具:思维导图 思维导图又叫心智导图,是表达发散性思维的有效图形思维工具 ,它简单却又很有效,是一种革命性的思维工具.思维导图运用图文并重的技巧,把各级主题的关系用相互隶属与 ...
- 扫描工具X-Scan使用教程(图)
扫描工具X-Scan使用教程(图) X-scan 是国内相当出名的扫描工具,是安全焦点又一力作.完全免费,无需注册,无需安装(解压缩即可运行),无需额外驱动程序支持.可以运行在Windows 9x/N ...
- ArcGIS利用数据驱动工具条批量出图
背景:分乡镇做300多个拆旧地块的调整完善局部图. 需求:导出图片时根据乡镇名称批量导出. 解决办法:数据驱页面即可请示解决 演示如下: 第一步:shp放到数据库中,标注转注记,然后编辑注记,符号样式 ...
- 纳巴罗男装名品折扣店价格,地址(图)-北京-大众点评网
纳巴罗男装名品折扣店价格,地址(图)-北京-大众点评网 纳巴罗男装名品折扣店价格,地址(图)-北京-大众点评网 纳巴罗男装名品折扣店 posted on 2014-12-31 10:23 lexus ...
最新文章
- 什么是Python的var_dump()的Python等价物? [重复]
- 开放下载!复旦大学邱锡鹏教授发布教科书《神经网络与深度学习》
- struts2的namespace的问题
- 使用 Anthem.NET 的常见回调(Callback)处理方式小结[转]
- pat题解java,1039 到底买不买 (20分) Java题解 PAT (Basic Level) Practice (中文)- 巧妙开大数组减少代码量...
- 【Mac brew】代理安装brew insall
- 前端try catch是如何捕获异常的_Try-Catch无法正确定位异常位置,我推荐2个有效技巧...
- ntp server
- 使用IDEA反编译class文件
- 模糊C均值聚类 C++代码
- Vagrant设置局域网访问
- 【MFC】CTabSheet类之再改造
- OpenCV入门到进阶:实战三大典型项目(更新至12) IT自学视频教程
- 白话ArcGIS系列软件技术应用(一)空间地理数据库的创建
- UE4 坐标转换 之 CAD 坐标转UE
- GC详解---JVM(三)
- 计算机毕业设计Python+djang公务员考试信息管理系统(源码+系统+mysql数据库+Lw文档)
- 哨兵2a 波段组合_基于Sentinel-2(哨兵2)遥感卫星的植被覆盖度提取
- moby_如何使用Moby Dick探索以主题为主题的开源项目的深度
- 在QT中调用google earth并打开KML文件