如何自动将input.timeframe('D')更改为大于用户图表的周期。PineScript V5



我是新手。我有一个Pine脚本代码。

功能问题:

input.timeframe('D')

我需要脚本调用比实时使用的时间更高的资产公式。

我使用了一个函数:

request.security()

使用可变变量调用字符串出错:

input.timeframe(VAR)

返回错误:

An argument of 'simple string' type was used but a 'const string' is expected.

调用一个与实际用户时间不同的资产。

当我使用HOURS时间表时。指示函数应调用最高时间(即天数)= 'D'。

当实时为'D'时。指示器函数应该调用每周的最高时间= 'W'。

我想要自动时间查询功能。

用户还可以通过可选方式手动选择时间框架。

示例代码如下:

//@version=5
indicator(title="My Indicator", shorttitle="My Indicator", overlay=true, timeframe="", timeframe_gaps=true)
timeframe_automatic = (timeframe.isintraday ? 'D' : timeframe.isdaily ? 'W' : timeframe.isweekly ? 'M' : na)
timeframe_options = input.timeframe((timeframe_automatic), "Resolution Big", options=['D', 'W', 'M'])
timeframe_called = (request.security(syminfo.tickerid, (timeframe_options), close, gaps=barmerge.gaps_off, lookahead=barmerge.lookahead_off))

Pine Script编译器对input.timeframe('D')和'D'都需要一个'String Const'。

并且在使用可变的"简单字符串"进行自动搜索时拒绝:

line xxx: Cannot call 'input.timeframe' with argument 'defval'='timeframe_options'. An argument of 'simple string' type was used but a 'const string' is expected.

我在文档中找不到合适的函数来解决这个问题。

谢谢你的帮助。

你已经有了。在你的安全呼叫中使用timeframe_automatic

timeframe_called = (request.security(syminfo.tickerid, timeframe_automatic, close, gaps=barmerge.gaps_off, lookahead=barmerge.lookahead_off))

问题是让用户决定是保持自动模式还是手动模式。

timeframe_automatic = is a mutable variable.

input.timeframe(timeframe_automatic)不接受可变变量,只接受const字符串。

但是,request.security()接受周期可变变量,要求它是const string。

我找到的解决方案是将决策分成3个不同的代码。

第一个代码,我必须添加一个手动选择器来选择自动或手动代码。

和第二个做决定的代码。

最后,第三段代码进行函数调用。

代码看起来像这样,示例:

//@version=5
indicator(title="My Indicator", shorttitle="My Indicator", overlay=true, timeframe="", timeframe_gaps=true)
timeframe_selector = input.string(title = "Timeframe Big", defval = "Automatic", options=["Automatic", "Manual"])
timeframe_automatic = (timeframe.isintraday ? 'D' : timeframe.isdaily ? 'W' : timeframe.isweekly ? 'M' : timeframe.ismonthly ? '12M': na)
timeframe_manual = input.timeframe('D', "Resolution Big", options=['D', 'W', 'M', '12M'])
timeframe_decision = (timeframe_selector == "Automatic") ? timeframe_automatic : (timeframe_selector == "Manual") ? timeframe_manual : na
timeframe_called = (request.security(syminfo.tickerid, (timeframe_decision), close, gaps=barmerge.gaps_off, lookahead=barmerge.lookahead_off))

现在!

相关内容

  • 没有找到相关文章

最新更新