如何利用pandas_ta库构建日内短线策略R-Breaker

今天是2022的第一天,我在这里祝各位朋友在新的一年里交易顺利,账户翻倍盈利。
我之所以写这篇文章并不是为了单纯的介绍R-Breaker策略本身。我想很多朋友可能已经使用过该策略进行日内短线交易操作了。而我希望通过这个案例介绍如何使用我刚刚发布的pandas_ta库进行指标和策略设计。
很多熟悉Python的朋友可能会发现:pandas_ta库不是Python的开源库么?怎么会直接用到Tradingview里面呢?事实上,我花了一些时间和精力把Python版本的pandas_ta库文件转换为Tradingview的Pine v5脚本,并且利用v5 最新发布的库功能,将多数函数进行了封装。

pandas_ta 库是包含可在 Pine 指标、策略或其他库中重用的函数的公开库文件。 它们对于定义常用函数很有用,因此它们的源代码不必包含在每个需要它们的脚本中。pandas_ta 库是公开且开源的Pine脚本库,因此它在另一个脚本中引用。实际上根据Tradingview的发布政策,所有库都必须是开源发布的,才能被公开引用。 换句话说,公共脚本只能使用公共库,并且必须是开源的。 Pine编辑器中保存的私有脚本或个人脚本可以使用公共或私有库。 一个库可以使用其他库,甚至是它自己的先前版本 (Tradingview要求在import引用时必须注明库的版本号)。

如果要使用pandas_ta库,是通过 import 语句,按照如下格式完成的:
import <username>/<libraryName>/<libraryVersion> [as <alias>]
import <用户名>/<库名>/<库版本> [as <别名>]
其中,<username>/<libraryName>/<libraryVersion> 路径将唯一标识库。 <libraryVersion> 必须明确指定。 为了保证使用库的脚本的可靠性,没有办法自动使用库的最新版本。 每次库的作者更新时,其版本号都会增加。 如果您打算使用库的最新版本,则需要在 import 语句中更新 <libraryVersion> 值。as <alias> 部分是可选的。 使用时,它定义将引用库函数的命名空间。 例如,如果您像我们在下面的示例中那样使用 allTime 别名导入一个库,您将将该库的函数称为 allTime.<function_mame>()。 当没有定义别名时,库的名称成为它的命名空间。要使用panadas_ta库,我们的脚本将需要一个 import 语句:
import blackcat1402/pandas_ta/2 as pta

以上是对Tradingview库的使用方法介绍,下面我来说下日内短线策略R-Breaker的实现。
R-Breaker策略, 是一种短线日内交易策略,它结合了趋势和反转两种交易方式。 High、Close、Low PreClose分别为当前K线最高价、当前K线收盘价,当前K线最低价和昨日收盘价。通过这些价格可以定一个轴枢价格(Pivot Point),中国很多人也将其从称为“口袋支点”。 有了“口袋支点”,我们就可以计算买入卖出的支撑位和阻力位,它们分别是:
- 突破买入价 = 观察卖出价 + 0.25 * (观察卖出价 – 观察买入价)
- 观察卖出价 = High + 0.35 * (Close – Low)
- 反转卖出价 = 1.07 / 2 * (High + Low) – 0.07 * Low
- 反转买入价 = 1.07 / 2 * (High + Low) – 0.07 * High
- 观察买入价 = Low – 0.35 * (High – Close)
- 突破卖出价 = 观察买入价 – 0.25 * (观察卖出价 – 观察买入价)

R-Breaker交易策略
- 1) 当日内最高价超过观察卖出价后,盘中价格出现回落,且进一步跌破反转卖出价构成的支撑线时,采取反转策略,即在该点位(反手、开仓)做空;
- 2) 当日内最低价低于观察买入价后,盘中价格出现反弹,且进一步超过反转买入价构成的阻力线时,采取反转策略,即在该点位(反手、开仓)做多;
- 3) 在空仓的情况下,如果盘中价格超过突破买入价,则采取趋势策略,即在该点位开仓做多;
- 4) 在空仓的情况下,如果盘中价格跌破突破卖出价,则采取趋势策略,即在该点位开仓做空。

R-Breaker指标用法

- 一般用在分钟周期等短周期上(我一般用在30分钟和1小时周期上,兼顾响应速度和稳定性),或者股性较强的T+0品种。
- 最好根据量价、大盘、板块等其他指标进行双重验证。
- 绿色B标签为做多预警和买入。
- 红色S标签为做空预警和卖出。


使用pandas_ta库文件构建R-Breaker

在脚本编写开头需要使用import导入pandas_ta库,如下:
//version=5
indicator("[blackcat] L2 Intraday R-Breaker Indicator", overlay = true)

import blackcat1402/pandas_ta/2 as pta

将pandas_ta库命名为pta后,在后续引用其中的函数时候需要以"pta."作为前缀,例如:
preclose = callsec(syminfo.tickerid, "D", close, false)
nn = ta.barssince(dayofmonth!=pta.xrf(dayofmonth,1))+1
hh = pta.xrf(pta.xhh(high,nn),nn)
ll = pta.xrf(pta.xll(low,nn),nn)

以上本别用过pta.xrf, pta.xll, pta.xhh对pandas_ta库中的函数进行引用。

综上所述,这就是教程的全部内容,tradingview库的使用还是非常方便的,能够大大提高编码效率,集中在核心策略的开发上。

snapshot


snapshot


snapshot

https://cn.tradingview.com/script/fYqAT2ys-blackcat-L2-Intraday-R-Breaker-Indicator/

https://cn.tradingview.com/script/knItv1rm/
blackcat1402pandas_taTrend Analysis

Avoid losing contact!Don't miss out! The first and most important thing to do is to join my Discord chat now! Click here to start your adventure: discord.com/invite/ZTGpQJq 防止失联,请立即行动,加入本猫聊天群: discord.com/invite/ZTGpQJq
Also on:

Related publications

Disclaimer