blackcat1402

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

SZSE:000597   NORTHEAST PHARMACE
今天是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>
import <用户名>/<库名>/<库版本>
其中,<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(" 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库的使用还是非常方便的,能够大大提高编码效率,集中在核心策略的开发上。








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
Clause de non-responsabilité

Les informations et les publications ne sont pas destinées à être, et ne constituent pas, des conseils ou des recommandations en matière de finance, d'investissement, de trading ou d'autres types de conseils fournis ou approuvés par TradingView. Pour en savoir plus, consultez les Conditions d'utilisation.