Pinescript:无法使用函数执行数组

发布于 2025-01-16 16:49:53 字数 798 浏览 0 评论 0原文

我正在尝试编写一个脚本,其中需要输入日期,然后将数组中的数字添加到该日期,并使用所有数组项的结果日期绘制背景。但是出现“无法呼叫操作员”之类的错误 请寻求帮助。

//@version=5
indicator("My script")
starttime1   = input.time(timestamp("01 Nov 2021 00:00"), "Start Time") 
starttime2   = input.time(timestamp("01 Nov 2021 00:00"), "Start Time2")
event_days1  = array.from(27,39,47,55,61,77,82,99,109,125,137,159,164,191,203,219,246,258,273,301,328,354)
post_days   = input.int(5)

fDays(src) =>
    pre_ts = starttime1 - 86400000
    post_start_ts = starttime1 + 86400000 * src
    post_end_ts = starttime1 + 86400000 * (src + post_days)
    pre_range = time >= pre_ts and time < starttime1
    post_range = time >= post_start_ts and time < post_end_ts
    pre_range

pre_range1 = fDays(event_days1)
bgcolor(pre_range1 ? #0000FF : na)

I am trying to code a script, where it takes a input date, then adds numbers from an array to that date and plots the background with the resultant date for all the array items. However getting error like "cannot call operator"
Seeking help pls.

//@version=5
indicator("My script")
starttime1   = input.time(timestamp("01 Nov 2021 00:00"), "Start Time") 
starttime2   = input.time(timestamp("01 Nov 2021 00:00"), "Start Time2")
event_days1  = array.from(27,39,47,55,61,77,82,99,109,125,137,159,164,191,203,219,246,258,273,301,328,354)
post_days   = input.int(5)

fDays(src) =>
    pre_ts = starttime1 - 86400000
    post_start_ts = starttime1 + 86400000 * src
    post_end_ts = starttime1 + 86400000 * (src + post_days)
    pre_range = time >= pre_ts and time < starttime1
    post_range = time >= post_start_ts and time < post_end_ts
    pre_range

pre_range1 = fDays(event_days1)
bgcolor(pre_range1 ? #0000FF : na)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

段念尘 2025-01-23 16:49:53

event_days1 应该是一个整数数组,对吧?尝试更明确地声明变量并习惯 var/varip 前缀,请参阅下面的 pine 参考链接。

varip int[] event_days1 = array.from(1,2,..,n)

或者使用 input.string 轻松确认/更改值。首先在 event_days1_stringarray 中设置值,然后在脚本中使用 event_days1_integerarray

//string input for n comma separated values.
//to be converted in first bar only to avoid infinite loop
varip string[]  event_days1_stringarray = str.split( input.string( "20,21,22", confirm = true ), "," )
varip           event_days1_integerarray = array.new_int( ) //empty int[]
if barstate.isfirst
    for event_days1_singlestringvalue in event_days1_stringarray
        array.push( event_days1_integerarray, int( str.tonumber( event_days1_singlestringvalue ) ) )
    array.sort( event_days1_integerarray ) //optionally
plot( array.size( event_days1_integerarray ) )

仅在此输入字段中使用数字和逗号字符,无空格"

它是否按预期运行?

https://www.tradingview.com/pine-script-docs/en/v5/language/Variable_declarations.html#declaration-modes

event_days1 is supposed to be an integer array, right? Try to be more explicit in declaring variables and get used to var/varip prefix, see pine reference link below.

varip int[] event_days1 = array.from(1,2,..,n)

Or with input.string to easily confirm/change values. This sets values in event_days1_stringarray first then use event_days1_integerarray in your script.

//string input for n comma separated values.
//to be converted in first bar only to avoid infinite loop
varip string[]  event_days1_stringarray = str.split( input.string( "20,21,22", confirm = true ), "," )
varip           event_days1_integerarray = array.new_int( ) //empty int[]
if barstate.isfirst
    for event_days1_singlestringvalue in event_days1_stringarray
        array.push( event_days1_integerarray, int( str.tonumber( event_days1_singlestringvalue ) ) )
    array.sort( event_days1_integerarray ) //optionally
plot( array.size( event_days1_integerarray ) )

Use numeric and comma characters only in this input field no space nor ".

Does it run as expected?

https://www.tradingview.com/pine-script-docs/en/v5/language/Variable_declarations.html#declaration-modes

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文