Pine有什麼新功能?

Apr 9, 2021

並非所有的Pine更新都需要單獨在部落格發文,但是您永遠不知道什麼時候可以使用新功能來編寫腳本。這篇文章展示了可能從您眼皮子底下溜走的最新改進。

當您想要追踪某些數據及其在即時K線中如何變化時,varip 關鍵詞非常有用。所有常規Pine變數都受到所謂的回滾的控制,在每個新數據tick上,在評估新數據之前,變數的狀態都將重置為前一根K線的值。varip 關鍵詞擺脫了這種控制,使您可以將變數的當前值與其前一個tick(與前一根K線相反)上的值進行比較,從而打開了一個全新可能的世界。看看由我們的Pine大師之一 LonesomeTheBlue 建立的tick圖表:

https://www.tradingview.com/script/ygNO2G1V-Tick-Chart/

要了解更多資訊,請閱讀PineCoders有關 varip 的深入教程:

https://www.tradingview.com/script/ppQxBISk-Using-varip-variables-PineCoders/

對於那些想要在Pine中進行更多數學運算的人,我們現在提供了一整套與數學相關的新函數和常數:

  • 新常數 math.pimath.phi、math.rphi、math.e
  • 新的 round() 功能 — 該函數現在允許您指定舍入的精度,而不必始終舍入為最接近的整數
  • median()
  • mode()
  • range()
  • todegrees()
  • toradians()
  • random()

這裡有一種策略,適合那些也喜歡過冒險生活的人:感謝 random() 函數,所有進場點和出場點都是根據輸入板塊中指定的百分比進行隨機分配的:

//@version=4
strategy("I’m feeling lucky", overlay=true)
seed = input(1, "Seed, increase to recalculate the strategy", minval=1)
entryPerc = input(20.0, "Entry chance, %", minval=0.0, maxval=100.0)
exitPerc = input(10.0, "Exit chance, %", minval=0.0, maxval=100.0) 
roll = random(0, 100, seed)
positionSize = floor(random(1, (strategy.equity / close), seed))
if roll < entryPerc
    strategy.entry("My Long Entry Id", strategy.long, qty=positionSize)
if roll < exitPerc
    strategy.close_all()

在另一個開發中 := 賦值運算符已與算術運算符合併,以建立新的賦值運算符 += , -=*= , /= 和 %= 。這些使您可以整理和縮短腳本:無需使用 a := a + 1,您只需編寫 a += 1。這是一個很小但很方便的改進。

如果您發現自己需要將字串轉換為數字,則新的 tonumber() 函數使您能夠做到這一點。例如,在下面的腳本中, tonumber() 與其他與字串相關的函數(例如str.split()str.replace_all() )結合使用,允許單個字串輸入字段返回多個整數值,然後將這些值用作SMA計算的長度。並沒有令人信服的理由以這種方式代替正確且方便的 “每個SMA的單獨輸入” 方式……但是,如果您需要它,那麼它在這裡:

//@version=4
study("My SMAs", overlay=true)
sma_lengths = input("5, 10, 20, 30, 50", title = "SMA Lengths (separated by comma)")
sma_lengths_array = str.split(str.replace_all(sma_lengths, " ", ""), ",")
sma_len(index) =>
    index > array.size(sma_lengths_array) - 1 ? 10 :
     int(tonumber(array.get(sma_lengths_array, index)))
sma0 = sma(close, sma_len(0))
sma1 = sma(close, sma_len(1))
sma2 = sma(close, sma_len(2))
sma3 = sma(close, sma_len(3))
sma4 = sma(close, sma_len(4))
plot(sma0, color=color.blue)
plot(sma1, color=color.red)
plot(sma2, color=color.green)
plot(sma3, color=color.orange)
plot(sma4, color=color.purple)

我們增加了一個 time_tradingday 變數,該變數返回交易日開始時的UNIX時間戳。在分析隔夜交易的商品時,將會派上用場,例如 EURUSD,交易從星期日開始,而從技術上講,交易日實際上是星期一。

新的 time_close() 函數可讓您從指定的時間周期和交易時段中獲取K線的收盤時間(與之前存在的 time_close 變數不同,後者僅適用於圖表的時間周期/交易時段)。這對於繪圖特別有用,它使您可以更精確地繪製線條和標籤。要查看實際效果,請查看JayRogers對樞軸點(Pivot Points)指標的看法:

https://www.tradingview.com/script/7EwXUkBE-Pivotal-Multi-Pivot-Selector/

透過使用新的 format.percent 參數到 study() ,腳本的輸出現在可以自動設置為百分比格式。透過內建的 Aroon 指標查看實際效果:

//@version=4
study(title="Aroon", shorttitle="Aroon", overlay=false, format=format.percent, precision=2, resolution="")
length = input(14, minval=1)
upper = 100 * (highestbars(high, length+1) + length)/length
lower = 100 * (lowestbars(low, length+1) + length)/length
plot(upper, "Aroon Up", color=#FF6A00)
plot(lower, "Aroon Down", color=#0094FF)

session.ismarket、session.ispremarketsession.ispostmarket 這三個新變數,使您可以檢查日內交易時段與當前K線相關的部分。請注意,延長時段僅顯示在日內圖表上,並且僅在透過設置明確啟用了該選項時才會顯示。

如果您想立即了解Pine更新,請查看我們的用戶手冊中的發行說明。PineCoders還透過其 Squawk Box Telegram channel頻道、Twitter、和TradingView上的Pine腳本公開聊天室,報導有關更新的消息。

我們希望大家發現這些改進有用,請繼續向我們發送您的反饋。我們為用戶打造TradingView,希望收到您的來信。

Look first Then leap

TradingView專門為您打造,請確保您充分利用我們出色的功能
開啟圖表