我的交易工具之价格反转图

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

我与反转图


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

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

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

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

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

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

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

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

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

以上,是为缘起。

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

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

首先,导入必要的模块!

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

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

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

data = get_data_juejin(symbol="002821",
                       start="2023-07-01",
                       end=now,
                       frequency="1d",
                       fields="symbol,frequency,open,close,high,low,volume,amount")

获取到的数据如下所示

          date  symbol frequency    open   close    high     low   volume  \
0   2023-07-03  002821        1d  117.70  119.18  119.37  117.30  2611887   
1   2023-07-04  002821        1d  118.50  121.99  121.99  117.71  3684893
2   2023-07-05  002821        1d  122.01  121.69  122.41  120.12  2531778
3   2023-07-06  002821        1d  121.19  119.60  121.21  118.01  3016366
4   2023-07-07  002821        1d  119.01  119.13  119.90  118.30  1628204
..         ...     ...       ...     ...     ...     ...     ...      ...
105 2023-12-05  002821        1d  124.55  123.00  127.80  122.85  6095569
106 2023-12-06  002821        1d  123.00  125.14  127.38  122.99  4978861
107 2023-12-07  002821        1d  124.51  122.71  124.99  121.99  4151701
108 2023-12-08  002821        1d  122.60  121.03  122.60  120.07  5709433
109 2023-12-11  002821        1d  120.03  121.70  122.10  118.88  4289756


下面就是绘制反转图了。

这里,我们用到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)

  • 7
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 12
    评论
外汇EA反转过滤均线是一种外汇交易策略,通过使用均线来过滤反转信号,提高交易的准确性和盈利潜力。 在外汇交易中,反转是指价格由原来的上涨或下跌转变为相反方向运动的情况。通过逆势操作,交易者可以在价格反转时获得较高的盈利潜力。 而均线是一种技术分析工具,通过计算一段时间内的平均价格,可以帮助交易者判断趋势的方向和价格的变化趋势。常见的均线包括简单移动平均线(SMA)和指数移动平均线(EMA)。 在反转过滤均线的策略中,交易者首先会找到可能的反转信号,如价格与前期高点或低点的突破。然后,交易者会使用均线来验证信号的有效性。 具体而言,交易者会将价格与均线进行比较,以确认价格是否已经突破了均线并确认反转的可能性。如果价格已经突破了均线,并且均线开始向相反方向移动,那么交易者就会认为反转信号是有效的,并进行相应的交易操作。 通过使用均线进行过滤,交易者可以排除一些可能的虚假反转信号,提高交易的成功率。同时,均线也可以用来确定交易的入场和出场点,以进一步优化交易结果。 总之,外汇EA反转过滤均线是一种追求捕捉反转信号的交易策略。通过使用均线作为过滤器,可以提高交易的准确性和盈利潜力,帮助交易者在外汇市场中获得更好的交易结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏悠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值