matriz estática ? - página 6

 

Demasiado código en esa descripción en inglés sencillo. . .

Los Fractales se almacenan en los buffers de los Indicadores, ¿entiendes cómo? si no escribes algún código que te ayude a entender...

Puedes leer los búferes de los indicadores y encontrar los números de barra de los fractales, a partir del número de barra puedes obtener los valores de las velas. . .

 
RaptorUK:

Demasiado código en esa descripción en inglés sencillo. . .

Los Fractales se almacenan en los buffers de los Indicadores, ¿entiendes cómo? si no escribes algún código que te ayude a entender...

Puedes leer los buffers de los indicadores y encontrar los números de barra de los fractales, desde el número de barra puedes obtener los valores de las velas. . .

No entiendo del todo como se almacenan los buffers de los indicadores.


Y esto es exactamente lo que quería hacer, encontrar el número de barra, de los fractales y obtener los valores de las velas

Seguiré con ello, pero probablemente lo tendría más claro si supiera cómo almacenan los indicadores los valores en el buffer.

Gracias

 

Hay 3 buffers, v1, v2 & v3 y hay otros tres dobles, val1, val2 & val3, usados para el cálculo. v3 y val3 no parecen ser usados. . .

val1 y val2 contienen el valor producido por iFractals, este valor es calculado para cada barra una por una, el bucle while recorre las barras comenzando por Bars y decrementando hasta llegar a cero. . .

Así que para cada barra el valor de los fractales se calcula y se almacena en v1 para MODE_UPPER y v2 para MODE_LOWER, vamos a trabajar a través de v1 . . .

Para cada barra a su vez . ... si val1 es mayor que 0 el valor del buffer v1 para el número de barra se establece en el máximo de esa barra, así que imaginemos que el bucle está en parte de las barras desde Bares hasta 0, imaginemos que está en la barra número 4934, el fractal se calcula para la barra número 4934, si el valor es mayor que 0 entonces v1[4934] se establece en el máximo[4934], en otras palabras el elemento 4935 del buffer v1 se establece en el máximo de la barra número 4934 ... no olvides que los arrays empiezan en 0

Finalmente hay una pequeña complicación que debes entender... ejecuta el indicador y verás una línea de puntos desde cada máximo y mínimo del fractal... hasta el siguiente... Imagina que ahora estamos en la barra número 4933 y el valor de val1 no es mayor que 0, lo que sucede ahora es que el valor del buffer para esta barra no se establece en el máximo de esta barra sino que se establece en el mismo valor que la entrada anterior del buffer... anterior en este caso significa i+1 porque en el bucle while i está contando hacia abajo.

Cuando el bucle termina y todas las barras han tenido sus fractales calculados todas las entradas en los buffers contendrán valores . . esto no es de mucha ayuda para ti . . necesitas cambiar el código un poco.

Lee lo que he escrito aquí . . si usted no entiende lo que está pasando entonces usted no tiene ningún negocio jugando con este código . . una vez que entiendas entonces puedes seguir adelante . . cualquier pregunta por favor pregunta.

 
RaptorUK:

Hay 3 buffers, v1, v2 & v3 y hay otros tres dobles, val1, val2 & val3, usados para el cálculo. v3 y val3 no parecen ser usados. . .

val1 y val2 contienen el valor producido por iFractals, este valor es calculado para cada barra una por una, el bucle while recorre las barras comenzando por Bars y decrementando hasta llegar a cero. . .

Así que para cada barra el valor de los fractales se calcula y se almacena en v1 para MODE_UPPER y v2 para MODE_LOWER, vamos a trabajar a través de v1 . . .

Para cada barra a su vez . ... si val1 es mayor que 0 el valor del buffer v1 para el número de barra se fija en el máximo de esa barra, así que imaginemos que el bucle está en parte de las barras desde Bares hasta 0, imaginemos que está en la barra número 4934, el fractal se calcula para la barra número 4923, si el valor es mayor que 0 entonces v1[4394] se fija en el máximo[4394], en otras palabras el elemento 4395 del buffer v1 se fija en el máximo de la barra número 4394 ... no olvidemos que los arrays empiezan en 0

Finalmente hay una pequeña complicación que debes entender... ejecuta el indicador y verás una línea de puntos desde cada máximo y mínimo del fractal... hasta el siguiente... Imagina que ahora estamos en la barra número 4933 y el valor de val1 no es mayor que 0, lo que sucede ahora es que el valor del buffer para esta barra no se establece en el máximo de esta barra sino que se establece en el mismo valor que la entrada anterior del buffer... anterior en este caso significa i+1 porque en el bucle while i está contando hacia abajo.

Cuando el bucle termina y todas las barras han tenido sus fractales calculados todas las entradas en los buffers contendrán valores . . esto no es de mucha ayuda para ti . . necesitas cambiar el código un poco.

Lee lo que he escrito aquí . . si usted no entiende lo que está pasando entonces usted no tiene ningún negocio jugando con este código . . una vez que entiendas entonces puedes seguir adelante . . cualquier pregunta por favor pregunta.

Entiendo cómo el indicador está trabajando exactamente como usted lo describió. Pensé que entendía también cómo el buffer estaba almacenando los valores, que es por lo que me estaba confundiendo porque cuando re-codifiqué las cosas para imprimir no obtuve los resultados que esperaba ver.

Sin embargo, ahora se ha superado un obstáculo importante con la comprensión de cómo el búfer es diferente y NO declaró realmente el número de elementos que es la razón por la que no podía imprimir desde el búfer

Ok seguir adelante.
Supongo que hay algún error tipográfico en sus referencias al número de barra 4934, el fractal se calcula para el número de barra 4923 y debería decir 4933.
Y también para el valor mayor que 0 entonces v1[4394] se establece en High[4394] == Estoy asumiendo que se supone que sigue la referencia anterior a 4923/33 también, pero entiendo que es el número de elemento es mayor que el número de la barra.

Por favor, corregidme si me equivoco con las erratas.

De todas formas asumiendo que son erratas y que entiendo lo que significa.

Consideré que crearía v3 y lo declararía e inicializaría de manera similar para poder imprimirlo u obtener el valor de él.
Inicialmente había considerado que podría imprimir i-1 para extraer el valor almacenado del High[i] en el momento en que fuera mayor que 0 y para ese Bar.
O incluso v1[i] = v1[1-1] e imprimir v1[i] en ese momento, pero no he resuelto esa parte y tampoco he podido pasar de la parte de impresión ya que el número de elementos no estaba declarado.

Por eso quería crear un esquema v3 diferente pero en realidad el mismo solo para crear un array con el número de elementos declarado del que podría extraer el valor de los fractales para esas barras.

Aquí es donde estoy teniendo problemas con el diseño, así que voy a trabajar a través de él un poco más

Gracias

 
Agent86:

Sí entiendo cómo funciona el indicador exactamente como lo has descrito. Creí entender también cómo el buffer almacenaba los valores, por eso me confundía porque al recodificar las cosas para imprimir no obtenía los resultados esperados.

Sin embargo, ahora se ha superado un gran obstáculo con la comprensión de cómo el búfer es diferente y NO declaró realmente el número de elementos que es por eso que no podía imprimir desde el búfer

Bien, continuando.
Supongo que hay algún error tipográfico en sus referencias al número de barra 4934, el fractal se calcula para el número de barra 4923 y debería decir 4933.
Y también para el valor mayor que 0 entonces v1[4394] se establece en High[4394] == Estoy asumiendo que se supone que sigue la referencia anterior a 4923/33 también, pero entiendo que es el número de elemento es mayor que el número de la barra.

Por favor, corregidme si me equivoco en la errata.

Perdón por los errores tipográficos . . . He corregido mi texto con los valores correctos . . . No soy bueno a primera hora de la mañana ;-)

¿Ves la pequeña modificación que hay que hacer en el código para que te sirva de mucho?

 
    for(i=Bars; i >= 0; i--)
     {
     val3=iFractals(NULL, 0, MODE_UPPER,i);
     if(val3>0)
      {
      double v3[1000];
      v3[i]=High[i];
      Print ("v3[", i, "]= ", v3[i], " if");
      }
     else          
         {
         v3[i]=v3[i+1];
         Print ("v3[", i, "]= ", v3[i], " else");
         }
     }
Ok hacer algunos progresos aquí, creo que lo principal era que no podía pasar de la declaración de la memoria intermedia que siempre produjo 0 para mis declaraciones de impresión.

Creo que podría ser capaz de manejar desde aquí
Estoy obteniendo los valores que busco ahora al menos por lo que puedo decir hasta ahora puedo estar en el camino correcto.

2011.09.24 12:26:21 2011.01.02 19:09 Agent86_5min EURUSD,M5: v3[5]= 1.3361 if
2011.09.24 12:26:21 2011.01.02 19:09 Agent86_5min EURUSD,M5: v3[6]= 1.3343 else
2011.09.24 12:26:21 2011.01.02 19:09 Agent86_5min EURUSD,M5: v3[7]= 1.3343 else
2011.09.24 12:26:21 2011.01.02 19:09 Agent86_5min EURUSD,M5: v3[8]= 1.3343 else
2011.09.24 12:26:21 2011.01.02 19:09 Agent86_5min EURUSD,M5: v3[9]= 1.3343 else
2011.09.24 12:26:21 2011.01.02 19:09 Agent86_5min EURUSD,M5: v3[10]= 1.3343 if
2011.09.24 12:26:21 2011.01.02 19:09 Agent86_5min EURUSD,M5: v3[11]= 1.3399 else


Gracias de nuevo
 
Sospecho que realmente no quieres o necesitas el otro
 
RaptorUK:
Sospecho que realmente no quieres o necesitas lo demás

Sí, tienes razón.