交易视图松脚本:

问题描述 投票:0回答:1

所以,下面是一段代码,简化为演示错误消息所需的代码。 代码最初没有从绘制值的末尾延伸的线。这就是试图添加到现有代码库中的内容。代码在指标行中没有时间范围的情况下运行良好 - 因此,无论用户在 TradingView 图表中选择什么时间范围,它都可以工作。但是,一旦添加了 timeframe='' 这样用户就可以在图表中使用此指标显示不同的时间范围,错误“'timeframe' 参数与具有副作用的函数不兼容。”宣传。我对该错误有足够的了解,知道这是一个多时间范围的问题。但是,还不足以确定如何修复它。几天来,我一直在努力尝试不同的事情/各种搜索/解决方法,但都没有成功。

这打算做什么:绘制一个动态移动平均线,其标签和线从最后一个完成的柱线向右延伸,用户选择的时间范围显示在当前(不同的时间范围)上。

发生了什么:该函数需要调用与时间相关的数据并导致错误消息。如果用户无法选择它按预期工作的时间范围。一旦用户可以选择时间范围,就会发生错误。

我希望有人可以帮助我找到一种方法来完成这项工作。我已经删除了很多代码和其他值/绘图/填充/标签/等以减少它以试图仅显示需要修复的部分。

请帮助我 Obi-Coder!你是我最后的希望! (太老套了——是的,我知道——但是,无法抗拒)!

注意:函数上方的代码太多,无法使用时间范围。所以,我需要想出一种方法来改变函数/函数参数。

'//@version=5
indicator('test',overlay=true)
//timeframe=''

//DATA
WMAsource = close
WMAlength = input.int(56, minval=1, title='WMA Length')
atrlen1 = input.int(100, minval=1, title='ATR Length')
mult1 = 2
ma1 = ta.wma(request.security("", "", WMAsource), WMAlength)
WMArange = ta.tr
rangema1 = ta.wma(WMArange, atrlen1)

up1 = ma1 + rangema1 * mult1

//--------------------------------

//PLOTS

lbullt_tit = '1hr Light Bull Threshold'

//WMA Plots
u4 = plot(up1, color=color.new(color.gray, 0), title=lbullt_tit)

//-----------------------------------
//plot extend right lines

var bool show_hlines = input(true, 'Show horizontal lines')
var bool show_extlines = not show_hlines

var color_lbullt = color.gray

var line_lbullt = line.new(x1=na, y1=na, x2=na, y2=na,xloc=xloc.bar_time, extend=extend.right, color=show_hlines ? color_lbullt : na, style=line.style_dashed)

f_moveLine(_id, _x, _y) =>
    line.set_xy1(_id, _x, _y)
    line.set_xy2(_id, _x +1, _y)

if barstate.islast
    f_moveLine(line_lbullt, time, up1)

plot(up1, color=show_extlines ? color_lbullt : na,linewidth=1, title=lbullt_tit)`

我尝试替换函数代码中“x”值的各种值。我试图找出一种将 request.security 合并到较低代码区域的方法。试图对代码功能区域中的所有 x 值使用“时间”。我在其他地方找到了这个函数,只是不太了解它是如何工作的,以及从上面的公式中调用了什么,不知道如何解决它。此外,尝试将 security() 编写/使用到 330 行代码中(在此示例中的虚线上方)。

我希望找到一种从函数中删除“时间”组件的方法,以便“时间范围”设置适用于整个代码 - 同时仍然允许函数在移动行时工作。

function pine-script-v5 tradingview-api
1个回答
0
投票

使用这个库中的f_secureSecurity函数

像这样的东西:

i_htf = input.timeframe ('', 'Select Higher Timeframe')
f_secureSecurity(_symbol, _res, _src) =>
    request.security(_symbol, _res, _src[1], lookahead = barmerge.lookahead_on)
ma1 = f_secureSecurity(syminfo.tickerid, i_htf, ta.wma(WMAsource, WMAlength))//Non Repainting
© www.soinside.com 2019 - 2024. All rights reserved.