#tradingview-api
Вопрос:
Этот сценарий представляет собой средство проверки, которое идентифицирует активы, нарушающие верхнюю или нижнюю линию регрессии
Я уже несколько дней пытаюсь заставить скрининг работать, но безуспешно.
Проблема в том, что мы не можем поместить «line.new» в систему безопасности
Каждый раз, когда я пытаюсь найти решение, я получаю ошибку.
Вот основная ошибка: аргумент «выражение» функции безопасности не должен иметь побочных эффектов. Спасибо
//@version=4
study("Screener and RegLine", shorttitle="Screener amp; RL", overlay = true)
resolution = input(title="Screener Resolution", type=input.resolution, defval="15")
// Symbol
t1 = input(title= "Ticker 1", type=input.symbol, defval="BINANCE:BTCUSDTPERP")
t2 = input(title= "Ticker 2", type=input.symbol, defval="BINANCE:ETHUSDTPERP")
t3 = input(title= "Ticker 3", type=input.symbol, defval="BINANCE:BCHUSDTPERP")
t4 = input(title= "Ticker 4", type=input.symbol, defval="BINANCE:XRPUSDTPERP")
t5 = input(title= "Ticker 5", type=input.symbol, defval="BINANCE:EOSUSDTPERP")
// Regression Line
min = input(14,minval=4)
max = input(28)
mult = input(2)
src = input(close)
cmla = cum(src)
cmlb = cum(cmla[1])
cmlc = cum(src*src)
r(p)=>
sum = cmlb - cmlb[p]
a = (p*cmla-sum)
b = cmla - cmla[p]
c = cmlc - cmlc[p]
//----
num = (a - b*(p 1)/2)/p
vary = c/p - pow(b/p,2)
varx = (p*p - 1)/12
pow(num/sqrt(vary*varx),2)
screenerFunc() =>
k = 0.,p = 0
r(p)
for i = min to max
c = r(i)
k := max(c,k)
p := k == c ? i : p
den = p*(p 1)/2
wma = (p*cmla-(cmlb - cmlb[p]))/den
sma = (cmla - cmla[p])/p
A = 4*sma-3*wma, B= 3*wma-2*sma
Var = (cmlc - cmlc[p])/p - pow((cmla - cmla[p])/p,2)
rmse = sqrt(Var - r(p)*Var)*mult
n = bar_index
var line ln = na
var line up = na
var line dn = na,
var label la = na
transparent = color.new(color.white, 100)
if n > min
up := line.new(n[p] 1,A rmse,n,B rmse,extend=extend.right, color=#ffffff,width=2)
dn := line.new(n[p] 1,A-rmse,n,B-rmse,extend=extend.right, color=#ffffff,width=2)
la := label.new(n[p] 1,A-rmse,tostring(p),color=transparent, style=label.style_label_up,textcolor=color.gray)
line.delete(ln[1]),line.delete(up[1]),line.delete(dn[1])
label.delete(la[1])
isTrueTop = 0
if barstate.islast
if high > line.get_price(up, bar_index)
isTrueTop := 1
isTrueBot = 0
if barstate.islast
if low < line.get_price(dn, bar_index)
isTrueBot := 1
long = isTrueTop
short = isTrueBot
R_bull =long
R_bear = short
[R_bull,R_bear]
[R_bull, R_bear] = screenerFunc()
// Security
[R_bull1,R_bear1] = security(t1, resolution, screenerFunc())
[R_bull2,R_bear2] = security(t2, resolution, screenerFunc())
[R_bull3,R_bear3] = security(t2, resolution, screenerFunc())
[R_bull4,R_bear4] = security(t4, resolution, screenerFunc())
[R_bull5,R_bear5] = security(t5, resolution, screenerFunc())