如何使用TradingView管理策略中的時間要素僅當我把時間要素納入通盤考慮之後,我的行情記錄才對即將到來的重大行情有所幫助。----傑西 利弗莫爾
時間要素就是重大行情發生所需要的時間。重大行情的發生需要時間來醞釀,這需要交易者具備耐心並且關注重要的時間節點。我是因為最近優化策略也考慮加入時間要素,才進一步對TradingView的時間函數進行了深入的學習,有些相見恨晚。TradingView 測量時間的方式源自所謂的 Unix 時間值,並且以毫秒為單位測量時間,這非常精確。 TradingView 中的這些值是自 1970 年 1 月 1 日以來發生的毫秒數。並且Pine腳本提供了很多將時間戳值轉換為秒、分鐘和小時等單位的基礎函數。
time既是變數也是函數
當time作為變數時,以 UNIX 格式和交易所的時區返回每根K線的開盤時間的日期/時間(時間戳)。這是 time 返回的默認時間。time同樣可以是個帶參數的函數,返回值仍然是時間戳,但是含義則更為豐富。 例如:
//@version=4
study("Session bars")
t = time(timeframe.period, "0930-1130")
plot(na(t) ? 0 : 1)
time() 函數以 UNIX 時間的毫秒數返回K線的開盤時間,如果K線位於給定交易時段之外(在我們的示例中為 09:30–11:30),則返回NaN。 time()函數接受兩個輸入參數:用於確定K線週期和交易時段。其中,交易時段可以通過字串形式進行輸入,其中以"HHMM-HHMM"的格式確定交易所時區中交易時段的開始和結束時間。
對於交易時段的用法很靈活,包括
0000-0000
表示週一至週五午夜開始的 24 小時交易時段。
0900-1600,1700-2000
表示交易時段從 9:00 開始到16:00, 然後休市,再從 17:00 到 20:00結束,適用於週一至週五。
2000-1630:1234567
表示交易時段為從 20:00 開始到第二天 16:30 結束,1234567表示一周7天都在交易。
0930-1700:146
表示交易時段為周日 (1)、週三 (4) 和週五 (6) 的 9:30 開始到 17:00 結束(一周中的其他日子是休市的時間段)。
24x7
表示交易時段為一周的每天 00:00 開始的完整 24 小時。
0000-0000:1234567
這個格式含義和“24x7”相同。
0000-0000:23456
表示交易時段與前面的示例相同,但僅限週一至週五。
用於time()函數的第二個參數session(交易時段)事實上不需要對應於交易品種的真實交易時段。 假設的交易時段功能可用於突出顯示K線。除了時間函數time()以外,TradingView還內置的豐富的時間變數可以一樣實現很多功能。這些變數主要分為3類。
第1類,最基本的變數:
time — 當前K線開盤的 UNIX 時間,以毫秒為單位,UTC 時區。
timenow — 當前 UNIX 時間(以毫秒為單位),UTC 時區。
syminfo.timezone — 圖表主要交易品種系列的交易時段。
第2類,提供有關當前柱線開始時間資訊的變數:
year - 當前K線年份。
month - 當前K線月份。
weekofyear — 當前K線的周數。
dayofmonth — 當前K線的日期。
dayofweek — 當前K線的星期幾。您可以使用星期日、星期一、星期二、星期三、星期四、星期五和星期六變數進行比較。
hour — 當前K線開始時間的小時(在交易時區中)。
minute — 當前K線開始時間的分鐘(在交易時區中)。
second — 當前K線開始時間的秒數(在交易時區中)。
第3類, UNIX時間“構造”的函數:
year(t) — 返回提供的 UTC 時間 t 的年份。
month(t) — 返回提供的 UTC 時間 t 的月份。
weekofyear(t) — 返回提供的 UTC 時間 t 的一年中的一周。
dayofmonth(t) — 返回提供的 UTC 時間 t 的月份日期。
dayofweek(t) — 返回提供的 UTC 時間 t 的星期幾。
hour(t) — 返回提供的 UTC 時間 t 的小時數。
minute(t) — 返回提供的 UTC 時間 t 的分鐘。
second(t) — 返回提供的 UTC 時間 t 的秒數。
timestamp(year, month, day, hour, minute) — 返回指定日期和時間的 UNIX 時間戳。
除了 time 和 timenow 變數返回 UTC 時區時間以外,所有這些變數和函數都返回交易時區的時間。
當然,通過基礎時間變數和函數可以編制更為複雜的時間函數庫,我這裏發佈了interval_ta時間函數庫,實現了更為複雜的功能:
tir()函數表示time in range, 用於判斷某週期K線是否在指定的交易時段當中。例如:判斷當前60分鐘K線是否在9:30至11:30交易時段內。
nbs()函數表示在一個小週期K線圖中,一旦大週期K線看盤就返回為True,否則為False。例如:在1分鐘週期K線,標記15分鐘K線開盤時間。
ismarket()函數表示當前時間是否在A股交易時區和交易時段內。
tp1_timestamp()函數通過輸入當前時間戳,返回A股T+1特定某個時間戳,專門為A股策略時間管理進行定制。
綜上所述,後面隨著研究的深入我也會把更多的時間函數封裝到interval_ta庫當中去。
159949交易想法
吊燈止損和SAR止損如何選擇?
交易系統四要素:買點,賣點,止損,倉位。止損策略多種多樣,今天聊下如何在吊燈和SAR之間進行選擇呢?和SAR一樣,吊燈止損(Chandelier Exit, CE)是很常見的止損策略。吊燈止損以買開倉後的最高價和賣開倉後的最低價為基準價,根據ATR確定價差,止損的時間點是在最新價與基準價的關係滿足價差條件的時候。該策略生成的止損點就像是從市場最高價的“天花板”上懸掛下來的吊燈。止損點與市場高點間的距離或許以ATR來衡量。該跟蹤止損點的優點在於當市場不斷創出新高時止損點能相應迅速上移。“吊燈”這個名字還是很貼切的。
吊燈止損的公式
通過其計算公式,我們能進一步理解其“懸掛”的感覺:
吊燈做多止損:N日最高 - ATR(N)x 係數
吊燈做空止損:當前最低 + ATR(N)× 係數
其中, N是22的默認單位週期。為了貼近TDX SAR性能,我將其設置為8;與此同時,係數是默認的3.0平均真實範圍。 介紹完吊燈止損的原理和概念,那麼我們就進入今天的正題:吊燈止損和SAR的性能對比如何呢?為了實現對比,我採用的是TDX SAR演算法進行比對,首先我們先從主觀上看看兩者的效果(注:因為參數體系不同,所以我對吊燈止損參數進行了配置,以使其儘量貼近TDX SAR的性能),如上图所示。
上圖可以看出,吊燈止損顯然比TDX SAR更為“趨勢”,能夠有效濾除趨勢中的停頓(主力震倉,洗盤等市場行為),表現更為穩定。但是,這個穩定的性能是以犧牲反應速度為代價的。所以,主觀上來看,吊燈止損更是個趨勢策略,SAR更適合速度更快的短線策略。為了能更好的評估兩者差別,我採用Sextan框架分別對吊燈止損和TDX SAR進行了回測:
SZSE:159949 創業板50行情來自TradingView
吊燈回測結果:勝率54.17%, 賠率110.9%, 下單比例12.8%,贏面35.8%,交易頻率0.04, 最大回撤8.36%。
SZSE: 159949 創業板50行情來自TradingView
TDX SAR回測結果:勝率34.78%, 賠率292.2%, 下單比例12.5%,贏面35.2%,交易頻率0.11, 最大回撤6.75%。
綜上所述,我們可以從交易頻率看出SAR顯然比吊燈也要快很多,這和我們主觀印象是一致的。兩者勝率和賠率此消彼長,但是最終的下單比例和贏面看來,它們性能相近。從最大回撤比率來看,SAR略勝一籌,這也和我們之前分析的結果一致:速度越快,止損越及時,最大回撤自然小些;吊燈雖穩,但是反應及時性差點,自然會導致稍高的最大回撤比例。這個也印證了,為什麼很多遊資高手說超短線確定性高,他們其實在說止損的及時性更好。當然前提有像他們那樣的優秀的心理素質,交易策略和系統。
再說SAR有時候靈感來的時候就要及時把握,迅速的將自己的想法轉化為代碼。就說今天突然想探究下SAR,結果打亂了原有計畫,全身心總結了過去一些腳本,併發布了sar_ta庫。
常見的SAR是“Stop And Reveres“的縮寫。它的意思是止損點轉向,是由美國技術分析大師威爾斯·威爾德(Wells Wilder)所創造的,是一種簡單易學、比較準確的中短期技術分析工具。SAR是利用拋物線方式,隨時調整止損點位置以觀察買賣點。由於止損點(又稱轉向點)以弧形的方式移動,故國內很多人稱之為拋物線轉向指標。
SAR具有兩層含義:
一是“Stop”,即停損、止損之意,這就要求投資者在買賣某個股票之前,先要設定一個止損價位,以減少投資風險。而這個止損價位也不是一直不變的,它是隨著股價的波動止損位也要不斷的隨之調整。如何既可以有效地控制住潛在的風險,又不會錯失賺取更大收益的機會,是每個投資者所追求的目標。但是股市情況變幻莫測,而且不同的股票不同時期的走勢又各不相同,如果止損位設的過高,就可能出現股票在其調整回落時賣出,而賣出的股票卻從此展開一輪新的升勢,錯失了賺取更大利潤的機會,反之,止損位定的過低,就根本起不到控制風險的作用。因此,如何準確地設定止損位是各種技術分析理論和指標所闡述的目的,而SAR指標在這方面有其獨到的功能。
二是“Reverse”,即反轉、反向操作之意,這要求投資者在決定投資股票前先設定個止損位,當價格達到止損價位時,投資者不僅要對前期買入的股票進行平倉,而且在平倉的同時可以進行反向做空操作,以謀求收益的最大化。目前國內市場還不允許做空,因此投資者主要採用兩種方法,一是在股價向下跌破止損價位時及時拋出股票後持幣觀望,二是當股價向上突破SAR指標顯示的股價壓力時,及時買入股票或持股待漲。
與其他技術指標相比,SAR指標可以為量化投資提供了相當大的幫助作用,簡單易操做:
1、持幣觀望。當一個股票的股價被SAR指標壓制在其下方並一直向下運動時,投資者可一路持幣觀望,直到股價向上突破SAR指標的壓力併發出明確的買入信號時,才可考慮是否買入股票。
2、持股待漲。當一個股票的股價在SAR指標上方並依託SAR指標一直向上運動時,投資者可一路持股待漲,直到股價向下突破SAR指標的支撐併發出明確的賣出信號時,才去考慮是否賣出股票。
3、明確止損。SAR指標具有極為明確的止損功能,其止損又分為買入止損和賣出止損。賣出止損是指當SAR發出明確的買入信號時,不管投資者以前是在什麼價位賣出的股票,是否虧損,投資者都應及時買入股票,持股待漲。買入止損是指當SAR指標發出明確的賣出信號時,不管投資者以前是在什麼價位買入股票,是否贏利,投資者都應及時賣出股票,持幣觀望。
Hercules SAR是我發佈的一個私有SAR,方便記為“武仙座SAR”,優化它的第一目標是需要更接近價格走勢,其次是要濾除一些短暫的走勢抖動。我把它和傳統SAR在圖形上進行了對比,紅色是武仙座,藍色是TradingView內置的SAR。
常見的SAR是“Stop And Reveres“的縮寫。它的意思是止損點轉向,是由美國技術分析大師威爾斯·威爾德(Wells Wilder)所創造的,是一種簡單易學、比較準確的中短期技術分析工具。SAR是利用拋物線方式,隨時調整止損點位置以觀察買賣點。由於止損點(又稱轉向點)以弧形的方式移動,故國內很多人稱之為拋物線轉向指標。
SAR具有兩層含義:
一是“Stop”,即停損、止損之意,這就要求投資者在買賣某個股票之前,先要設定一個止損價位,以減少投資風險。而這個止損價位也不是一直不變的,它是隨著股價的波動止損位也要不斷的隨之調整。如何既可以有效地控制住潛在的風險,又不會錯失賺取更大收益的機會,是每個投資者所追求的目標。但是股市情況變幻莫測,而且不同的股票不同時期的走勢又各不相同,如果止損位設的過高,就可能出現股票在其調整回落時賣出,而賣出的股票卻從此展開一輪新的升勢,錯失了賺取更大利潤的機會,反之,止損位定的過低,就根本起不到控制風險的作用。因此,如何準確地設定止損位是各種技術分析理論和指標所闡述的目的,而SAR指標在這方面有其獨到的功能。
二是“Reverse”,即反轉、反向操作之意,這要求投資者在決定投資股票前先設定個止損位,當價格達到止損價位時,投資者不僅要對前期買入的股票進行平倉,而且在平倉的同時可以進行反向做空操作,以謀求收益的最大化。目前國內市場還不允許做空,因此投資者主要採用兩種方法,一是在股價向下跌破止損價位時及時拋出股票後持幣觀望,二是當股價向上突破SAR指標顯示的股價壓力時,及時買入股票或持股待漲。
與其他技術指標相比,SAR指標可以為量化投資提供了相當大的幫助作用,簡單易操做:
1、持幣觀望。當一個股票的股價被SAR指標壓制在其下方並一直向下運動時,投資者可一路持幣觀望,直到股價向上突破SAR指標的壓力併發出明確的買入信號時,才可考慮是否買入股票。
2、持股待漲。當一個股票的股價在SAR指標上方並依託SAR指標一直向上運動時,投資者可一路持股待漲,直到股價向下突破SAR指標的支撐併發出明確的賣出信號時,才去考慮是否賣出股票。
3、明確止損。SAR指標具有極為明確的止損功能,其止損又分為買入止損和賣出止損。賣出止損是指當SAR發出明確的買入信號時,不管投資者以前是在什麼價位賣出的股票,是否虧損,投資者都應及時買入股票,持股待漲。買入止損是指當SAR指標發出明確的賣出信號時,不管投資者以前是在什麼價位買入股票,是否贏利,投資者都應及時賣出股票,持幣觀望。
Hercules SAR是我發佈的一個私有SAR,方便記為“武仙座SAR”,優化它的第一目標是需要更接近價格走勢,其次是要濾除一些短暫的走勢抖動。我把它和傳統SAR在圖形上進行了對比,紅色是武仙座,藍色是TradingView內置的SAR。
SZSE:159949 創業板50 行情來自TradingView
另外一個,我自認為優化比較好的是Taurus SAR,記為“金牛座”SAR,相比之下更注重對於擾動信號的濾波。對比如下,黃色為金牛座,藍色為TradingView內置經典SAR。
SZSE:159949 創業板50行情來自TradingView
SAR對於價格走勢判斷標準主要是:
1、當股票股價從SAR曲線下方開始向上突破SAR曲線時,為買入信號,預示著股價一輪上升行情可能展開,投資者應迅速及時地買進股票。
2、當股票股價向上突破SAR曲線後繼續向上運動而SAR曲線也同時向上運動時,表明股價的上漲趨勢已經形成,SAR曲線對股價構成強勁的支撐,投資者應堅決持股待漲或逢低加碼買進股票。
3、當股票股價從SAR曲線上方開始向下突破SAR曲線時,為賣出信號,預示著股價一輪下跌行情可能展開,投資者應迅速及時地賣出股票。
4、當股票股價向下突破SAR曲線後繼續向下運動而SAR曲線也同時向下運動,表明股價的下跌趨勢已經形成,SAR曲線對股價構成巨大的壓力,投資者應堅決持幣觀望或逢高減倉。
當然,上述只是經典的觀點,在一個綜合的量化系統裏,SAR只是良好的功能模組,仍需要與其它因數進行共振對行情進行判斷。
sar_ta是一個不純粹的sar_ta庫
初衷是為了對比各種類似SAR的性能,以便篩選更好的策略因數。結果發現事實上純粹的SAR技術變種非常少。但是,有很多類SAR技術早已應運而生。所以,這個庫還包括了,Gann Hilo activator, Chandelier Exit這些少見,但是效果不錯的類似技術指標。
我最後還是決定把這個庫開源,以方便更多人來學習和交流類SAR技術。對於能給我提供一定幫助社區成員,我在sar_ta庫發佈頁面明確寫了一些激勵措施,既能活躍氣氛,又能互惠互利。