我下面的代码在我输入的日期的收盘价处绘制了一条水平线。但是,它仅适用于图表上的“每日”时间范围。我需要它在任何时间范围内工作(主要是 15 分钟时间范围)。对于任何其他时间范围,它不会绘制实际收盘价。相反,它绘制了最后一根蜡烛的收盘价。
我尝试了安全功能,但无法在 if 条件下使用它。但如果条件是我验证我输入的日期的要求。
//@version=4
study("How to get actual close price for a specific date", overlay=true)
text = input(false, type=input.bool, title="---------------------Select Date--------------------------")
startDate = input(title="Date", type=input.integer,
defval=12, minval=1, maxval=31)
startMonth = input(title="Month", type=input.integer,
defval=5, minval=1, maxval=12)
startYear = input(title="Year", type=input.integer,
defval=2021, minval=1800, maxval=2100)
Time_start = timestamp(syminfo.timezone, startYear, startMonth, startDate, 00, 00)
Time_end = timestamp(syminfo.timezone, startYear, startMonth, startDate, 23, 59)
pinDateRange = time >= Time_start and time <= Time_end
var pclose = 0.00
if pinDateRange
pclose := close
// pclose := security(syminfo.tickerid, 'D', close)
plot(pclose, title="Close Price of Selected Date", color=#F94D00, linewidth=1, style=plot.style_stepline, offset=-9999, trackprice=true)
答案 0 :(得分:0)
尝试使用此示例作为参考:
//@version=4
study("Plot value starting n months/years back", "", true)
monthsBack = input(3, minval = 0)
yearsBack = input(0, minval = 0)
fromCurrentDateTime = input(false, "Calculate from current Date/Time instead of first of the month")
targetDate = time >= timestamp(
year(timenow) - yearsBack,
month(timenow) - monthsBack,
fromCurrentDateTime ? dayofmonth(timenow) : 1,
fromCurrentDateTime ? hour(timenow) : 0,
fromCurrentDateTime ? minute(timenow) : 0,
fromCurrentDateTime ? second(timenow) : 0)
beginMonth = not targetDate[1] and targetDate
var float valueToPlot = na
if beginMonth
valueToPlot := high
plot(valueToPlot)
bgcolor(beginMonth ? color.green : na)
https://www.pinecoders.com/faq_and_code/#how-can-i-plot-a-value-starting-n-monthsyears-back