如何利用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/
blackcat1402Trend 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