Pine script Tradingview中超过40条证券信息

Pine script Tradingview中超过40条证券信息,pine-script,Pine Script,我正试图优化这个脚本,使其包含尽可能少的“安全性”函数,但现在运气不好 在第17行和第19行 Symbol1\u high\u price1=valuewhen(Symbol1\u fractal\u top1,high[2],0)[2]high和low(第19行)的数据应该来自安全输入对,而不是当前打开的图形,但是如果不使用另一个安全功能,我无法使其工作。这是一种可行的方法吗?有什么想法吗?请让我知道 谢谢大家! Symbol1 = input(title="pair1",

我正试图优化这个脚本,使其包含尽可能少的“安全性”函数,但现在运气不好

在第17行和第19行
Symbol1\u high\u price1=valuewhen(Symbol1\u fractal\u top1,high[2],0)[2]
high和low(第19行)的数据应该来自安全输入对,而不是当前打开的图形,但是如果不使用另一个安全功能,我无法使其工作。这是一种可行的方法吗?有什么想法吗?请让我知道 谢谢大家!

Symbol1 = input(title="pair1", type=input.symbol, defval="eurusd")

K = input(14, title="K", minval=1)
D = input(3, title="D", minval=1)
smK = input(6, title="Smooth", minval=1)

Symbol1_Dinput1 = security(Symbol1, "", sma(stoch(close, high, low, K), smK))

f_top_fractal(_src)=>_src[4] < _src[2] and _src[3] < _src[2] and _src[2] > _src[1] and _src[2] > _src[0]
f_bot_fractal(_src)=>_src[4] > _src[2] and _src[3] > _src[2] and _src[2] < _src[1] and _src[2] < _src[0]
f_fractalize(_src)=>f_top_fractal(_src) ? 1 : f_bot_fractal(_src) ? -1 : 0

Symbol1_fractal_top1 = f_fractalize(Symbol1_Dinput1) > 0 ? Symbol1_Dinput1[2] : na
Symbol1_fractal_bot1 = f_fractalize(Symbol1_Dinput1) < 0 ? Symbol1_Dinput1[2] : na

Symbol1_high_prev1  = valuewhen(Symbol1_fractal_top1, Symbol1_Dinput1[2], 0)[2]
Symbol1_high_price1 = valuewhen(Symbol1_fractal_top1, high[2], 0)[2]
Symbol1_low_prev1   = valuewhen(Symbol1_fractal_bot1, Symbol1_Dinput1[2], 0)[2]
Symbol1_low_price1  = valuewhen(Symbol1_fractal_bot1, low[2], 0)[2]

Symbol1_regular_bearish_div1 = Symbol1_fractal_top1  and high[2] > Symbol1_high_price1 and Symbol1_Dinput1[2] < Symbol1_high_prev1
Symbol1_regular_bullish_div1 = Symbol1_fractal_bot1  and low[2]  < Symbol1_low_price1  and Symbol1_Dinput1[2] > Symbol1_low_prev1

Symbol1_cond = Symbol1_regular_bullish_div1 ? Symbol1_regular_bullish_div1 : na

if Symbol1_cond
    label.new(bar_index, 0, color = color.green, style = label.style_cross, tooltip = Symbol1)```
Symbol1=input(title=“pair1”,type=input.symbol,defval=“euruds”)
K=输入(14,title=“K”,minval=1)
D=输入(3,title=“D”,minval=1)
smK=输入(6,title=“平滑”,minval=1)
Symbol1_Dinput1=安全性(Symbol1,“,sma(stoch(闭合、高、低、K)、smK))
f_top_fractal(_src)=>_src[4]<_src[2]和_src[3]<_src[2]和_src[2]>_src[1]和_src[2]>_src[0]
f_bot_fractal(_src)=>_src[4]>_src[2]和_src[3]>_src[2]和_src[2]<_src[1]和_src[2]<_src[0]
f_分形(_src)=>f_顶部_分形(_src)?1:f_bot_fractal(_src)-1 : 0
Symbol1_fractal_top1=f_fractalize(Symbol1_Dinput1)>0?Symbol1_Dinput1[2]:不适用
Symbol1_fractal_bot1=f_fractalize(Symbol1_Dinput1)<0?Symbol1_Dinput1[2]:不适用
Symbol1_high_prev1=值When(Symbol1_fractal_top1,Symbol1_Dinput1[2],0)[2]
Symbol1\u high\u price1=valuewhen(Symbol1\u top1,high[2],0)[2]
Symbol1\u low\u prev1=值when(Symbol1\u fractal\u bot1,Symbol1\u Dinput1[2],0)[2]
Symbol1\u low\u price1=valuewhen(Symbol1\u fractal\u bot1,low[2],0)[2]
Symbol1_常规_熊市_div1=Symbol1_分形_top1和高位[2]>Symbol1_高价1和Symbol1_Dinput1[2]Symbol1_低价格1
Symbol1\u cond=Symbol1\u常规\u看涨\u div1?符号1 \常规\看涨\分类1:na
如果符号1_cond
label.new(条形图索引,0,颜色=color.green,样式=label.style\u交叉,工具提示=Symbol1)```

所有计算必须在
security()调用的上下文中完成。这将所有逻辑放在一个函数中,该函数还负责调用
security()
,这使得代码更干净,只需要一次调用:

//@version=4
study("")
Symbol1 = input(title="pair1", type=input.symbol, defval="eurusd")

K = input(14, title="K", minval=1)
D = input(3, title="D", minval=1)
smK = input(6, title="Smooth", minval=1)

f_top_fractal(_src)=>_src[4] < _src[2] and _src[3] < _src[2] and _src[2] > _src[1] and _src[2] > _src[0]
f_bot_fractal(_src)=>_src[4] > _src[2] and _src[3] > _src[2] and _src[2] < _src[1] and _src[2] < _src[0]
f_fractalize(_src)=>
    // Pre-evaluate function calls so the functions execute on each bar.
    top = f_top_fractal(_src)
    bot = f_bot_fractal(_src)
    _return = top ? 1 : bot ? -1 : 0

f_getVals(_symbol) =>
    s = sma(stoch(close, high, low, K), smK)
    Symbol1_fractal_top1 = f_fractalize(s) > 0 ? s[2] : na
    Symbol1_fractal_bot1 = f_fractalize(s) < 0 ? s[2] : na
    
    Symbol1_high_prev1  = valuewhen(Symbol1_fractal_top1, s[2], 0)[2]
    Symbol1_high_price1 = valuewhen(Symbol1_fractal_top1, high[2], 0)[2]
    Symbol1_low_prev1   = valuewhen(Symbol1_fractal_bot1, s[2], 0)[2]
    Symbol1_low_price1  = valuewhen(Symbol1_fractal_bot1, low[2], 0)[2]
    
    Symbol1_regular_bearish_div1 = Symbol1_fractal_top1  and high[2] > Symbol1_high_price1 and s[2] < Symbol1_high_prev1
    Symbol1_regular_bullish_div1 = Symbol1_fractal_bot1  and low[2]  < Symbol1_low_price1  and s[2] > Symbol1_low_prev1
    
    Symbol1_cond = Symbol1_regular_bullish_div1 ? Symbol1_regular_bullish_div1 : na
    _return = security(_symbol, "", Symbol1_cond)

Symbol1_val = f_getVals(Symbol1)
if Symbol1_val
    label.new(bar_index, 0, color = color.green, style = label.style_cross, tooltip = Symbol1)
// Alternate debugging mark on chart.
plotchar(Symbol1_val, "Symbol1_val", "•", location.top, size = size.tiny)
/@version=4
研究(“”)
Symbol1=输入(title=“pair1”,type=input.symbol,defval=“eurusd”)
K=输入(14,title=“K”,minval=1)
D=输入(3,title=“D”,minval=1)
smK=输入(6,title=“平滑”,minval=1)
f_top_fractal(_src)=>_src[4]<_src[2]和_src[3]<_src[2]和_src[2]>_src[1]和_src[2]>_src[0]
f_bot_fractal(_src)=>_src[4]>_src[2]和_src[3]>_src[2]和_src[2]<_src[1]和_src[2]<_src[0]
f_分形(_src)=>
//预计算函数调用,以便函数在每个条上执行。
top=f_top_分形(_src)
bot=f_bot_分形(_src)
_返回=顶部?1:机器人-1 : 0
f_getVals(_符号)=>
s=sma(stoch(闭合、高、低、K)、smK)
Symbol1\u fractal\u top1=f\u fractalize(s)>0?s[2]:na
Symbol1\u fractal\u bot1=f\u fractalize(s)<0?s[2]:na
Symbol1\u high\u prev1=valuewhen(Symbol1\u fractal\u top1,s[2],0)[2]
Symbol1\u high\u price1=valuewhen(Symbol1\u top1,high[2],0)[2]
Symbol1\u low\u prev1=值when(Symbol1\u fractal\u bot1,s[2],0)[2]
Symbol1\u low\u price1=valuewhen(Symbol1\u fractal\u bot1,low[2],0)[2]
Symbol1_常规_看跌_div1=Symbol1_分形_top1和高位[2]>Symbol1_高价1和s[2]Symbol1\u低价格1和s[2]>
Symbol1\u cond=Symbol1\u常规\u看涨\u div1?符号1 \常规\看涨\分类1:na
_return=安全性(_symbol,“,Symbol1_cond)
Symbol1_val=f_getVals(Symbol1)
如果符号1_val
label.new(条形图索引,0,颜色=color.green,样式=label.style\u交叉,工具提示=Symbol1)
//图表上的备用调试标记。
plotchar(Symbol1_val,“Symbol1_val”,“•”,location.top,size=size.tiny)

这篇文章回答了我的问题: