为了保持一致性,应该在每次计算时调用该函数。建议从三元运算符或范围中提取调用
The function should be called on each calculation for consistency. It is recommended to extract the call from the ternary operator or from the scope
我在 pine 脚本中遇到错误:- 每次计算时都应调用函数“#f2”以确保一致性。建议从三元运算符或范围中提取调用。
这是函数:- Variance(src,p) => p == 1 ? 0 : Sma(src*src,p) - pow(Sma(src,p),2)
'''
//@version=4
study("My Script",overlay=true,max_bars_back=1000)
//-----------------------------------Trend lines--------------------------------
//Basic
heading11 = input(title="Trend Lines" ,type=input.bool,defval=true)
lengthppl = input(30,group='Basic Settings'
,tooltip='Pivot length. Use higher values for having lines connected to more significant
pivots')
lookbackppl = input(3,minval=1,group='Basic Settings'
,tooltip='Number of lines connecting a pivot high/low to display')
SLOPEPPL = input(1.,minval=-1,maxval=1,step=0.1,group='Basic Settings'
,tooltip='Allows to multiply the linear regression slopeppl by a number within -1 and 1')
//Style
ph_col = input(#2157f3,'Pivot High Lines Color',group='Line Colors')
pl_col = input(#ff1100,'Pivot Low Lines Color',group='Line Colors')
//──────────────────────────────────────────────────────────────────────────────
Sma (src,p) => a = cum(src), (a - a[max(p,0)])/max(p,0)
Variance(src,p) => p == 1 ? 0 : Sma(src*src,p) - pow(Sma(src,p),2)
Covariance(x,y,p) => Sma(x*y,p) - Sma(x,p)*Sma(y,p)
//──────────────────────────────────────────────────────────────────────────────
nppl = bar_index
ph = pivothigh(lengthppl,lengthppl)
pl = pivotlow(lengthppl,lengthppl)
//──────────────────────────────────────────────────────────────────────────────
varip ph_array = array.new_float(0)
varip pl_array = array.new_float(0)
varip ph_n_array = array.new_int(0)
varip pl_n_array = array.new_int(0)
if ph
array.insert(ph_array,0,ph)
array.insert(ph_n_array,0,nppl)
if pl
array.insert(pl_array,0,pl)
array.insert(pl_n_array,0,nppl)
//──────────────────────────────────────────────────────────────────────────────
val_ph = valuewhen(ph,nppl-lengthppl,lookbackppl-1)
val_pl = valuewhen(pl,nppl-lengthppl,lookbackppl-1)
val = min(val_ph,val_pl)
k = nppl - val > 0 ? nppl - val : 2
slopeppl = Covariance(close,nppl,k)/Variance(nppl,k)*SLOPEPPL
var line ph_l = na,var line pl_l = na
if barstate.islast
for i = 0 to lookbackppl-1
ph_y2 = array.get(ph_array,i),ph_x1 = array.get(ph_n_array,i)-lengthppl
pl_y2 = array.get(pl_array,i),pl_x1 = array.get(pl_n_array,i)-lengthppl
ph_l := line.new(ph_x1,ph_y2,ph_x1+1,ph_y2+slopeppl,extend=extend.right,color=ph_col)
pl_l := line.new(pl_x1,pl_y2,pl_x1+1,pl_y2+slopeppl,extend=extend.right,color=pl_col)
'''
对时间序列数据进行操作的函数不应在 if 语句或三元语句中。只需将函数作为单独的变量移出:
Variance(src,p) =>
sma_a = sma(src*src,p)
sma_b = sma(src,p)
return = p == 1 ? 0 : sma_a - pow(sma_b,2)
return
这假定您在 if 或三元或其他范围之外调用函数。
如果不是,则为函数设置一个变量:
variance = Variance(a,b)
然后根据需要在您的逻辑中使用该变量。
我在 pine 脚本中遇到错误:- 每次计算时都应调用函数“#f2”以确保一致性。建议从三元运算符或范围中提取调用。 这是函数:- Variance(src,p) => p == 1 ? 0 : Sma(src*src,p) - pow(Sma(src,p),2)
'''
//@version=4
study("My Script",overlay=true,max_bars_back=1000)
//-----------------------------------Trend lines--------------------------------
//Basic
heading11 = input(title="Trend Lines" ,type=input.bool,defval=true)
lengthppl = input(30,group='Basic Settings'
,tooltip='Pivot length. Use higher values for having lines connected to more significant
pivots')
lookbackppl = input(3,minval=1,group='Basic Settings'
,tooltip='Number of lines connecting a pivot high/low to display')
SLOPEPPL = input(1.,minval=-1,maxval=1,step=0.1,group='Basic Settings'
,tooltip='Allows to multiply the linear regression slopeppl by a number within -1 and 1')
//Style
ph_col = input(#2157f3,'Pivot High Lines Color',group='Line Colors')
pl_col = input(#ff1100,'Pivot Low Lines Color',group='Line Colors')
//──────────────────────────────────────────────────────────────────────────────
Sma (src,p) => a = cum(src), (a - a[max(p,0)])/max(p,0)
Variance(src,p) => p == 1 ? 0 : Sma(src*src,p) - pow(Sma(src,p),2)
Covariance(x,y,p) => Sma(x*y,p) - Sma(x,p)*Sma(y,p)
//──────────────────────────────────────────────────────────────────────────────
nppl = bar_index
ph = pivothigh(lengthppl,lengthppl)
pl = pivotlow(lengthppl,lengthppl)
//──────────────────────────────────────────────────────────────────────────────
varip ph_array = array.new_float(0)
varip pl_array = array.new_float(0)
varip ph_n_array = array.new_int(0)
varip pl_n_array = array.new_int(0)
if ph
array.insert(ph_array,0,ph)
array.insert(ph_n_array,0,nppl)
if pl
array.insert(pl_array,0,pl)
array.insert(pl_n_array,0,nppl)
//──────────────────────────────────────────────────────────────────────────────
val_ph = valuewhen(ph,nppl-lengthppl,lookbackppl-1)
val_pl = valuewhen(pl,nppl-lengthppl,lookbackppl-1)
val = min(val_ph,val_pl)
k = nppl - val > 0 ? nppl - val : 2
slopeppl = Covariance(close,nppl,k)/Variance(nppl,k)*SLOPEPPL
var line ph_l = na,var line pl_l = na
if barstate.islast
for i = 0 to lookbackppl-1
ph_y2 = array.get(ph_array,i),ph_x1 = array.get(ph_n_array,i)-lengthppl
pl_y2 = array.get(pl_array,i),pl_x1 = array.get(pl_n_array,i)-lengthppl
ph_l := line.new(ph_x1,ph_y2,ph_x1+1,ph_y2+slopeppl,extend=extend.right,color=ph_col)
pl_l := line.new(pl_x1,pl_y2,pl_x1+1,pl_y2+slopeppl,extend=extend.right,color=pl_col)
'''
对时间序列数据进行操作的函数不应在 if 语句或三元语句中。只需将函数作为单独的变量移出:
Variance(src,p) =>
sma_a = sma(src*src,p)
sma_b = sma(src,p)
return = p == 1 ? 0 : sma_a - pow(sma_b,2)
return
这假定您在 if 或三元或其他范围之外调用函数。 如果不是,则为函数设置一个变量:
variance = Variance(a,b)
然后根据需要在您的逻辑中使用该变量。