![MQL5 - Lenguaje de estrategias comerciales para el terminal de cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
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. . .
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. . .
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.
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
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?
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 lo demás
Sí, tienes razón.