簡體   English   中英

如何在某個日期之后 plot 並忽略之前的任何內容 - Pine Script v5 - TradingView

[英]How to plot after a certain date and ignore anything prior to - Pine Script v5 - TradingView

有誰知道我如何 plot 在某個日期之后每次出現定義的變量? 因此,在某個時間幀輸入之前忽略所有事件。 我能夠找到這個: How to plot only the last x period但是,這似乎只有 plot 變量在輸入日期的單個出現。

例如和簡單我如何在用戶輸入日期后的每個十字星 plot :

//@version=5
indicator('Plot all Doji after input date and ignore before input date', overlay=true)
monthsBack = input.int(3, minval=0)

doji = close == open

targetDate = time >= timestamp(year(timenow), month(timenow) - monthsBack, 1, 0, 0, 0)
beginMonth = not targetDate[1] and targetDate

var float valueToPlot = doji
if beginMonth
    valueToPlot := high
    valueToPlot
plot(valueToPlot)
bgcolor(beginMonth ? color.green : na, transp=90)

好問題 Josiah,這里發生了很多事情:

  • 您可能已經發現了這一點,但是上面代碼示例中的beginMonth測試,如所寫,只會標記您允許的日期范圍內的第一個完整月份的第一天。 我們將在下面解決這個問題。
  • Pine v5 中對 colors 的設置方式以及從 v4 中關於如何聲明和更新變量的方式進行了一些相關的更改,因此我也利用了以下內容。
  • 你有兩個測試正在進行:時間框架和十字星,所以為了清楚起見,我在下面把它們分開了。

這是一個很好的例子,因為它突出了我在自己的 Pine 腳本中經常遇到的問題,尋找機會或條件:

為什么我沒有看到我的規則標記的任何機會? 我的代碼有問題嗎? 它甚至跑了嗎? 或者是我正在查看的數據,沒有任何匹配的蠟燭,但代碼很好? (哦,我是否閱讀了錯誤版本的文檔,使用了正確版本的 function,是否更新每個條上的值......)

即使我們成功地制作了正確的測試並成功地將它們正確組合,仍然很難有效地使用 plot 十字星。 部分是因為它們很少見,部分是因為它們在圖表上的樣子。 這也使得我們很難判斷我們的代碼是否正常工作,即使它是。

所以我試着確保我的代碼能幫助我看到哪里出了問題,什么不是。 並且希望這個例子對那個級別的其他人也有用。

下面的代碼應該做你想做的事。 為了回答您的標題問題,它使用了一個名為okayToPlot的變量來將您的指標的呈現限制在過去N 個月內的幾天內。

它還顯示了如何找到並有效地突出顯示十字星,因此您不會瘋狂地試圖查看在另一條細黑線之上呈現的細黑線。

我使用overlay=false來幫助您(好吧,我)更好地了解正在發生的事情。 一旦您對您的工作腳本感到滿意,只需將其改回overlay=true ,您就可以使用 go。

如果您將其復制/粘貼到您的 Pine 編輯器中作為新指標並在日線圖上嘗試一些緩慢移動的大盤股,如果您掃描足夠長的時間,您應該會發現十字星。

我於 2021 年底在 TSX 的 BCE 上使用了 8 個月,它發現 2 天的十字星形成,它以黃色背景和亮綠色+符號突出顯示。

//@version=5
indicator("Highlight Any Doji In Past N Months", overlay=false)

// 1) Define inputs used in the script
monthsBack = input.int(8, minval=0, title="How many months back should we scan for dojis?")

// 2) Declare variables used in the script, and set defaults (once per chart)
var tn = timenow
var firstDate = timestamp(year(tn), month(tn) - monthsBack, 1, 0, 0, 0)
var doji = false
var okayToPlot = false

// 3) Calculations. The := notation below updates the variable on each bar of the chart.
okayToPlot := time > firstDate

doji := close == open

// 4) Output / Plotting

plot(okayToPlot and doji ? close : na, style = plot.style_cross, linewidth = 3, color = color.new(color.green, 40))

bgcolor(okayToPlot ? doji ? color.new(color.yellow, 60) : color.new(color.green, 80) : na)

截屏

我在圖表中使用深色主題。 希望您仍然可以區分 8 個月前日期的黑色背景(不會以黃色突出顯示十字星)和過去 8 個月的日期(將以黃色突出顯示任何十字星日) - 如果有的話成立。

Pine Script 以深綠色突出顯示掃描的日期,以黃色突出顯示帶有十字星的日期

相關:什么是十字星?

起初我認為問題中的這一行是一個錯誤:

doji = close == open

但事實證明,直到今天我才真正知道十字星是什么。 我必須查一下,這樣未來的讀者就不會被這個特定的例子弄糊塗了,這個快速的旁注:

當開盤價和收盤價相等時形成十字星。

(通過https://commodity.com/technical-analysis/doji/

因此,在燭台圖表上,它可能看起來像 + 或更高的十字。

通過瀏覽上面的鏈接,我不確定從技術上講,高點和低點相等一天是否算作十字星。 在燭台圖表上,它看起來像一個減號,一個破折號。 如果您想從過濾器中排除這些,請將上面的十字星測試行更改為:

doji := close == open and high > low

獎金回合: plotchar()

這是另一個屏幕截圖,顏色更亮,繪圖技術略有不同,更適合這種情況。

我們可能並不是真的想要plot的收盤價,只是吸引觀眾的眼球。 我還將這個屏幕截圖放大到我之前圖像中最相關的幾個月(在將月份輸入更改為 5 后,它只搜索到 7 月 1 日)。

十字星!

// Since plotting anything (a line, a cross, whatever) directly at the close
// price of a doji will hide it, here's a version that uses plotchar() to
// place a question mark directly above the doji.
plotchar(okayToPlot and doji, char='?', location = location.abovebar, color = color.new(color.black, 0))
bgcolor(okayToPlot ? doji ? color.new(color.yellow, 40) : color.new(color.green, 20) : na)

受鐵拳啟發的綠色和黃色顏色,因為十字星讓我想起了dojo ,而我的某些部分仍然是七歲。 問號是因為十字星代表不確定性,優柔寡斷的市場......絕不是對同樣穿着綠色的謎語人的參考。 這肯定是巧合吧?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM