INDICADOR ECHO (TRADINGVIEW)
Forums › ProRealTime foro Español › Soporte ProBuilder › INDICADOR ECHO (TRADINGVIEW)
- This topic has 2 replies, 2 voices, and was last updated 1 year ago by PS TRADING.
-
-
01/12/2023 at 11:40 AM #207260
Hola a todos, a ver si podéis transcribir este indicador de Tradingview que llevo probando un tiempo y que acompañado de otros da excelentes resultados.
Descripción del creador:
Este indicador utiliza un método de pronóstico de series de tiempo simple derivado de la similitud entre los precios recientes y los precios históricos similares/diferentes. Llamamos a este método “ECHO”.
Este método asume originalmente que los precios futuros se pueden estimar a partir de una serie histórica de observaciones que son más similares a las variaciones de precios más recientes. Esta similitud se cuantifica mediante el coeficiente de correlación. Tal suposición puede resultar relativamente efectiva con el pronóstico de una serie de tiempo periódica. Más tarde introdujimos la capacidad de seleccionar series diferentes de observaciones para experimentación adicional.
Esta técnica de pronóstico está muy inspirada en el método analógico introducido por Lorenz para la predicción de datos atmosféricos.
Esta herramienta se puede utilizar para pronosticar tendencias futuras, pero también para indicar qué variaciones históricas tienen el mayor grado de similitud/desigualdad entre las observaciones en la zona naranja.La ventana de pronóstico determina el segmento de precios (en naranja) que se utilizará como referencia para la búsqueda del segmento de precios histórico más similar/diferente (en verde) dentro del área gris.
La construcción del pronóstico se realiza a partir de los cambios de precio obtenidos en el área verde, denotados como w(t). Usando las opciones “Cumulativas” construimos el pronóstico a partir de la suma acumulativa de w(t). Finalmente, agregamos el valor de precio más reciente a esta serie acumulada.Código:
study(“The Echo Forecast [LUX]”,”ECHO [LuxAlgo]”,overlay=true,max_bars_back=1000,max_lines_count=200)length = input(50,’Evaluation Window’,minval=0,maxval=200)fcast = input(50,’Forecast Window’,minval=1,maxval=200)fmode = input(‘Similarity’,’Forecast Mode’,options=[‘Similarity’,’Dissimilarity’])cmode = input(‘Cumulative’,’Forecast Construction’,options=[‘Cumulative’,’Mean’,’Linreg’])src = input(close)fcast_col = input(#2157f3,’Forecast Style’,inline=’fcast_style’,group=’Style’)fcast_style = input(‘· · ·’,”,options=[‘──’,’- – -‘,’· · ·’],inline=’fcast_style’,group=’Style’)show_area = input(true,’Show Area’,inline=’areas’,group=’Style’)fcast_area = input(color.new(#ff5d00,50),”,inline=’areas’,group=’Style’)corr_area = input(color.new(#0cb51a,50),”,inline=’areas’,group=’Style’)eval_area = input(color.new(color.gray,50),”,inline=’areas’,group=’Style’)//—-var lines = array.new_line(0)if barstate.isfirstfor i = 0 to fcast-1array.push(lines,line.new(na,na,na,na))//—-n = bar_indexd = change(src)top = highest(src,length+fcast*2)btm = lowest(src,length+fcast*2)if barstate.islastfloat val = nak = 0A = array.new_float(0)X = array.new_int(0)for i = 0 to fcast*2+lengtharray.push(A,src[i])if cmode == ‘Linreg’array.push(X,n[i])a = array.slice(A,0,fcast-1)for i = 0 to length-1b = array.slice(A,fcast+i,fcast*2+i-1)r = array.covariance(a,b)/(array.stdev(a)*array.stdev(b))if fmode == ‘Similarity’val := r >= nz(val,r) ? r : valelseval := r <= nz(val,r) ? r : valk := val == r ? i : kprev = srccurrent = srcfor i = 0 to fcast-1e = d[fcast+k+(fcast-i-1)]if cmode == ‘Mean’current := array.avg(a) + eelse if cmode == ‘Linreg’a = array.slice(A,0,fcast)x = array.slice(X,0,fcast)alpha = array.covariance(a,x)/array.variance(x)beta = array.avg(a) – alpha*array.avg(x)current := alpha*(n+i+1) + beta + eelsecurrent += el = array.get(lines,i)line.set_xy1(l,n+i,prev)line.set_xy2(l,n+i+1,current)line.set_color(l,fcast_col)if fcast_style == ‘- – -‘line.set_style(l,line.style_dashed)else if fcast_style == ‘· · ·’line.set_style(l,line.style_dotted)prev := currentif show_areabox.delete(box.new(n-length-fcast*2+1,top,n-fcast+1,btm,border_color=na,bgcolor=eval_area)[1])box.delete(box.new(n-fcast+1,top,n,btm,border_color=na,bgcolor=fcast_area)[1])box.delete(box.new(n-k-fcast*2+1,btm,n-k-fcast,top,border_color=na,bgcolor=corr_area)[1])01/12/2023 at 1:45 PM #207269Lo sentimos, pero hay muchas funcionalidades para manipular matrices (varianza/covarianza/rebanada/desviación estándar…) que tendrían que ser completamente recreadas a mano y sin ninguna certeza de los resultados (porque no están disponibles en el lenguaje de programación). También implicaría mucho tiempo investigar las posibilidades de cómo hacerlo posible con el estado actual del idioma.
1 user thanked author for this post.
01/12/2023 at 3:29 PM #207281Muchas gracias Nicolás de todos modos.
-
AuthorPosts
Find exclusive trading pro-tools on