隨著我們不斷將您要求的改進添加到我們的編程語言中,跟上我們的腳本可能是一個挑戰。這篇文章介紹了我們最近添加的最重要的內容,這樣您就不會錯過它們。
平均K線圖(Heikin Ashi)上更真實的回測
在平均K線圖上運算的回測通常會產生不可靠的回測結果,因為經紀商模擬器始終使用該圖表的價格來執行訂單,在HA圖表中這些價格是合成的。而“使用標準OHLC執行訂單”的新功能解決了這個問題。當使用時,在HA圖表上運算的策略將以實際市場價格來執行訂單,更接近模擬您的策略在即時交易中的行為。
策略使用者可以在”策略”的”屬性”標籤中啟用此功能。預設情況下,該功能是關閉的。
請注意,這只會改變在HA圖表上運算的策略行為。對於其他合成圖表類型(如:磚形圖Renko),回測仍然會按照合成圖表價格執行訂單,不受該功能設定的影響。
input.*()函數的新display參數
新的display參數使您可以更好地控制腳本名稱旁邊輸入值的顯示。可以使用四個參數:display.status_line、display.data_window、display.all和display.none。允許使用加號或減號組合這些參數,而無論使用哪個參數,輸入值仍然會繼續出現在腳本設定的”輸入”標籤中。
新參數允許您隱藏狀態行中出現的輸入值,或者顯示隱藏的輸入值,即:布爾值、顏色或日期輸入。使用新參數,您還可以在數據視窗中的腳本名稱旁邊顯示輸入。不使用該參數時,輸入的預設顯示不變。
//@version=5 indicator("RSI") rsiLengthInput = input.int(14, minval=1, title="RSI Length", display=display.data_window+display.status_line) rsiSourceInput = input.source(close, "Source", display=display.data_window) rsi = ta.rsi(rsiSourceInput, rsiLengthInput) plot(rsi, "RSI")
用於訪問商品資訊的新內建函數
我們向syminfo命名空間增加了三個內建函數:syminfo.sector、syminfo.industry和syminfo.country。它們回傳字符串,為您提供有關當前商品的更多資訊。國家/地區資訊以 ISO 3166-1 alpha-2格式呈現。
停用策略中已執行訂單的快訊
現在您可以通過在創建訂單時使用 disable_alert = true的函數,將策略中的個別訂單通知停用。例如:
//@version=5 strategy("My strategy", overlay=true) longCondition = ta.crossover(ta.sma(close, 14), ta.sma(close, 28)) if (longCondition) strategy.entry("Long", strategy.long, alert_message = "Go Long!") strategy.exit("Exit", "Long", profit = 300, loss = 100, disable_alert = true)
這在使用alert()函數生成自訂消息以通知或在策略執行期間使用webhooks時,對於過濾特定訂單非常有用。
策略中最大回撤和回升的計算變化
最大回撤和最大回升的計算已經改進,考慮了在交易中可能實現的資本。以前只考慮了進出點的資本值,這可能導致最大回撤和最大回升值與其最大潛力值不符。新方法在「最大回撤」和「最大回升」的幫助中心文章中有詳細解釋。
持用戶定義類型中的varip修飾符
varip修飾符現在可以應用於用戶定義類型的欄位,它允許變數在同一個K線圖上的每次腳本執行之間保留值。請注意,如果未使用varip定義欄位,則這些欄位將在每個K線圖上回滾,因此即使包含它們的對象是使用varip創建的,在同一個K線圖上多次執行期間分配給它們的值也不會被保留。
例如:
//@version=5 indicator("`varip` field") type TypeWithVaripField varip int varipCounter = 0 int counter = 0 varip TypeWithVaripField myCounter = TypeWithVaripField.new(0) // This field preserves values between script executions. myCounter.varipCounter := myCounter.varipCounter + 1 // This field does not because it wasn't declared using `varip`. myCounter.counter := myCounter.counter + 1 plot(myCounter.varipCounter, "myCounter.varipCounter") plot(myCounter.counter, "myCounter.counter")
貨幣兌換率請求
我們引入了一個新的request.currency_rate()函數,允許您檢索從一種貨幣到另一種貨幣的兌換率。此函數需要兩個參數:from和to,每個參數都是符合ISO 4217的三字母字符串代碼。
以下是如何使用它將金融工具的價格轉換為英鎊(GBP)的範例:
//@version=5 indicator("Close in British Pounds") rate = request.currency_rate(syminfo.currency, "GBP") plot(close * rate)
array命名空間中的新函數
為陣列增加了四個新函數:
- array.first() — 回傳陣列的第一個元素。
- array.last() — 回傳陣列的最後一個元素。
- array.every() — 如果陣列的每個元素都為true,則回傳true;否則,回傳false。
- array.some() — 如果陣列中至少有一個元素為true,則回傳true;否則,回傳false。
要了解最新的Pine Script®功能,請關注用戶手冊的發行說明。 PineCoders帳戶還透過Telegram上的Squawk Box、Twitter帳戶,以及TradingView上的Pine Script® Q&A公共聊天室更新。
我們相信您會發現這些功能很有用,請繼續向我們發送您的反饋和建議,讓我們成為最好的平台。我們為您建構TradingView,我們始終渴望聽到您的想法。
TradingView團隊