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
כתב ויתור

המידע והפרסומים אינם אמורים להיות, ואינם מהווים, עצות פיננסיות, השקעות, מסחר או סוגים אחרים של עצות או המלצות שסופקו או מאושרים על ידי TradingView. קרא עוד בתנאים וההגבלות.