我是 Pine 脚本新手。
我想在较低的日内时间范围内获取前 'n' 个“D”天(例如用户输入的最后 3 天)的高/低/日期 (DD/MM/YYYY)。这样我就可以在日内图表上打印过去三天的高点和低点。
我知道下面的代码不起作用,我明白为什么 - 我无法将可变变量传递到 request.security 中。但是,我想不出一种方法可以在当天的日内图表上并从前一天开始向后“n”天,使用循环来处理根据用户输入的可变数量的回溯天数。我不知道如何将计算出的系列下标值传递到request.security中?任何有关如何实现这一目标的建议将不胜感激。
type CandleRange
float high
float low
int time
CandleRange[] candles = array.new<CandleRange>()
timeframe = input.timeframe("D","Timeframe")
lookbackDays = input.int(3,"Number of Days")
getDailyHighLow(timeframe,index=1)=>
float dailyHigh = request.security(syminfo.tickerid,timeframe,high[index])
float dailyLow = request.security(syminfo.tickerid,timeframe,low[index])
int dailyTime = request.security(syminfo.tickerid,timeframe,time[index])
[dailyHigh, dailyLow,dailyTime]
if barstate.islastconfirmedhistory
for i = 1 to lookbackDays by 1
// using i gives...
// Cannot use loop variables or mutable variables from a loop's local scope as `expression` arguments in `request.*()` calls.
[ dailyHigh, dailyLow, dailyTime] = getDailyHighLow(timeframe,i)
CandleRange cr = CandleRange.new(dailyHigh, dailyLow, dailyTime)
candles.push(cr)
不需要
for
循环。由于这是日内时间范围,因此当新柱形形成时,请自行跟踪每日高点/低点。然后,每当新的一天到来时,将每日最高/最低价推送到数组中。您可以从此数组中检索最后 n 个值以便稍后使用。
//@version=5
indicator("My script", overlay=true)
timeframe = input.timeframe("D","Timeframe")
lookbackDays = input.int(3,"Number of Days")
is_new_day = timeframe.change("D")
var daily_high_arr = array.new_float()
var daily_low_arr = array.new_float()
var daily_high = high
var daily_low = low
if (is_new_day)
// Push last day high/low to the array
array.push(daily_high_arr, daily_high)
array.push(daily_low_arr, daily_low)
// Reset variables for the new day
daily_high := high
daily_low := low
else
if (high > daily_high)
daily_high := high
if (low < daily_low)
daily_low := low