腳本或策略在刷新頁面(重新繪製)後有不同的結果

歷史數據不包括價格在intra-bar變動的記錄;僅開、高、低、收 (OHLC)。這導致腳本有時在歷史數據和即時數據上有不同的工作方式,其中只知道開盤價,並且在即時K棒關閉之前,K棒裡的高、低價格會移動很多次;在K棒關閉後,相關價格才會確定。

如果我們在圖表上增加一個腳本,等到它在多個即時K棒上進行計算,然後重新加載頁面,有時我們會看到腳本的繪圖略有變化。此行為是通常稱為指標重繪 (indicator repainting) 的幾種不同類型的行為之一。這是我們在此涉及的重繪類型,在使用重繪時將參考該類型。這是由於以下事實:在腳本中使用某些功能時,它們在歷史和即時K線上的計算會有所不同。

在其他類型的行為,正確或錯誤地引用重繪,包括在過去的K線上以負偏移繪製,以及使用透過對security功能的誤解調用而接收到的其他不可用的未來資訊,這些資訊可能會將即時不可用的數據引入腳本計算中。

並非所有指標都與我們在此處討論的重繪類型有關。在大多數情況下,這取決於程式碼中是否使用某些功能或語言構造。請注意,這種重繪效果不是bug。這是TradingView上的歷史K線和即時K線資訊之間固有差異的結果。

我們看看以下重繪的案例:

1. 使用calc_on_every_tick=true的策略。參數calc_on_every_tick=false的策略也可能傾向於重繪,但程度較小。

2. 使用security以高於圖表上主要品種的時間周期來請求數據:

// Add this study on 1 minute chart
//@version=4
study("My Script")
c = security(syminfo.tickerid, "5", close)
plot(close)
plot(c, color=color.red)

不論lookahead參數的值如何,此研究將對即時數據和歷史數據進行不同的計算 (請參閱Understanding lookahead)。

3. 使用security以低於圖表上主要品種的時間周期來請求數據 (更多資訊在此處):

// Add this study on 5 minute chart
//@version=3
study("My Script")
c = security(tickerid, "1", close, lookahead=false)
plot(close)
plot(c, color=red)

lookahead=false,則將重繪。當lookahead=true時,重繪的可能性較小。1分鐘和5分鐘的更新時間彼此超過時,仍可能會發生。

4. 所有腳本的計算均取決於起點。根據時間周期,日內數據將與星期、月或年的起點對齊。因此,此類腳本產生的結果可能會不時發生變化。在以下情況下,腳本將依賴起點:

  • 當他們使用valuewhen, barssinceema函數時 (由於其演算法的特殊性)
  • 任何回測策略 (無論如何定義calc_on_every_tick參數)

時間周期和起點對齊之間存在依賴關係:

  • 1至14分鐘 — 與一周的開始對齊
  • 15–29分鐘 — 與一個月的開始對齊
  • 30分鐘或更長的時間 — 與一年的開始對齊

處理數據時,應考慮到歷史記錄長度的以下限制:

  • 所有Pro方案有10000條歷史K棒
  • 其他方案有5000條歷史K棒

5. 歷史數據的改變,例如由於股票分割。


6. 腳本中以下變數的存在通常會導致重新繪製:

首頁 股票篩選器 外匯篩選器 加密貨幣篩選器 全球財經日曆 如何運作 圖表功能 價格 推薦朋友 網站規則 幫助中心 網站 & 經紀商解決方案 小工具 圖表解決方案 輕量圖表庫 部落格 & 新聞 推特
概覽 個人資料設定 賬戶和賬單 推薦朋友 我的客服工單 幫助中心 發表的想法 粉絲 正在關注 私人訊息 在線聊天 登出