function make_signal(a,d="L",e,f){let b,c;return"L"===d?(c=fs_strength(a,w=24*e,sigma=1,s_size=3),b=fs_trend(a,w=24*f)):(c=fs_strength(a,w=144,sigma=1,s_size=3),b=fs_trend(a,w=48)),[c[5],trend_arr=b]}function make_signal_last(b,c="L",d,e){let a=make_signal(b,c,d,e);return last.Strength=a[0].slice(-1)[0],last.Trend=a[1].slice(-1)[0],signal_to_colors(last.Strength,last.Trend)}function make_signal_arr(d,b,f="L",g,h){let e=make_signal(b,f,g,h);strength_arr=e[0].slice(-500),d=d.slice(-strength_arr.length),b=b.slice(-strength_arr.length),trend_arr=e[1].slice(-strength_arr.length);let c=[];for(let a=0;a50&&trend_arr[a]>0?c[a]="L":strength_arr[a]<0&&trend_arr[a]<0?c[a]="S":c[a]="N";return[d,b,c,strength_arr,trend_arr]}function cal_price_estimation(b,a){return b+a[10]*a[13]*.1+(a[23]-50)*.01*a[13]*.1}function signal_to_colors(a,b){return a>50&&b>0?{red:"#1a0000",orange:"#1a1400",green:"#33cc33"}:a<0&&b<0?{red:"#ff0000",orange:"#1a1400",green:"#051405"}:{red:"#1a0000",orange:"#ffcc00",green:"#051405"}}function signal_to_value(a,b){return a>50&&b>0?"L":a<0&&b<0?"S":"N"}function light_on(a,b="L"){document.getElementById("red_"+b).style.backgroundColor=a.red,document.getElementById("orange_"+b).style.backgroundColor=a.orange,document.getElementById("green_"+b).style.backgroundColor=a.green}function fs_strength(a,b=24,j=1,e=5){let c=rolling(a,b).map(mean),f=rolling(a,b).map(stdev),g=c.map((a,b)=>a+j*f[b]),h=c.map((a,b)=>a-j*f[b]),d=a.slice(b-1).map((b,a)=>(b-h[a])/(g[a]-h[a])*100),i=rolling(d,e).map(mean);return[c,f,g,h,d,i]}function fs_trend(a,b=168){let c=a.map((b,c)=>(b/a[0]-1)*100),d=rolling(c,b).map(get_trend).map(a=>a.slice(2,3)[0]);return d}function macd(b,d=12,e=26,f=9){let c=ema(b,d),g=ema(b,e),a=c.map((a,b)=>a-g[b]),h=ema(a,f),i=a.map((a,b)=>a-h[b]);return[c,g,a,h,i]}function rsi(c,b=14){let a=c.map((a,b)=>a-c[b-1]),d=rolling(a,b).map(a=>a.filter(a=>a>0).reduce((a,b)=>a+b,0)/b),e=rolling(a,b).map(a=>Math.abs(a.filter(a=>a<0).reduce((a,b)=>a+b,0)/b));a=a.slice(b-1);let f=d.map((e,c)=>(d[c-1]*(b-1)+(a[c]>0?a[c]:0))/b),h=e.map((d,c)=>(e[c-1]*(b-1)+(a[c]<0?Math.abs(a[c]):0))/b),g=f.map((a,b)=>a/(a+h[b])*100);return[g]}function envelope(b,c=20,g=.05){let a=rolling(b,c).map(mean),d=a.map(a=>a*(1+g)),e=a.map(a=>a*(1-g)),f=b.slice(c-1).map((b,a)=>(b-e[a])/(d[a]-e[a])*100);return[a,d,e,f]}function stochastic(d,e,f,a=14,g=3,h=3){let j=rolling(d,a).map(a=>Math.max(...a)),k=rolling(e,a).map(a=>Math.min(...a)),b=f.slice(a-1).map((b,a)=>(b-k[a])/(j[a]-k[a])*100),c=rolling(b,g).map(mean),i=rolling(c,h).map(mean);return[b,c,i]}function atr(c,d,b,j=20){let e=[],f=[],g=[],h=[];for(let a=0;aa/Math.max.apply(null,i)*100);return[i,k]}function volume_analysis(a,b=5,e=1){let c=rolling(a,b).map(mean),f=rolling(a,b).map(stdev),g=c.map((a,b)=>a+e*f[b]),h=c.map((a,b)=>a-e*f[b]),d=a.slice(b-1).map((b,a)=>(b-h[a])/(g[a]-h[a])*100);return[d]}function stats(a){let b=a.reduce((a,b)=>a+b),e=b/a.length,c=a.map(a=>a-e),d=c.map(a=>Math.pow(a,2)).reduce((a,b)=>a+b)/a.length;return[b,m,c,d,Math.sqrt(d)]}function rolling(a,b){return a.map((_,a,c)=>c.slice(a,a+b)).slice(0,-b+1)}function sum(a){return a.reduce((a,b)=>a+b)}function mean(a){return a.reduce((a,b)=>a+b)/a.length}function stdev(a){let d=a.reduce((a,b)=>a+b)/a.length,b=a.map(a=>a-d),c=b.map(a=>Math.pow(a,2)).reduce((a,b)=>a+b)/a.length;return Math.sqrt(c)}function get_trend(k){let f=k.length,g=Array.from({length:f},(b,a)=>a),a=0,h=0,l=0,m=0,b=0,c=0,i=0;for(let d=0;d