Matriz fuera de rango? ¿Ayuda?
Matriz fuera de rango? ¿Ayuda?

 

Publi

Página 1 de 352 12 ??ltimo??ltimo
Resultados 1 al 10 de 11

Tema: Matriz fuera de rango? ¿Ayuda?

  1. #1

    Cita Iniciado por ;
    {quote} Hola. Además de lo que John compartió, también debes adquirir el hábito de usar los datos pasados ??????como args en la función OnCalculate en lugar de confiar en los datos de los vars incorporados. Además, debes asegurarte de que estás haciendo tus retrospectivas correctamente. No necesita procesar todo el ciclo (todos los datos del gráfico) en cada tic. Solo necesita procesar la parte de los datos del indicador que necesita actualización. Aquí hay un ejemplo de cómo hacer un mejor uso de la función OnCalculate. #property strict #property indior_chart_window ...
    De acuerdo, me tomó un poco de tiempo averiguar qué significaba exactamente todo, sin embargo, cuando ingresé el código y lo imprimí dentro del bucle for, continuaría imprimiendo cada tic sin importar nada. Parece que se corrigió si cambio este fragmento de código: limit = limit lt; 1? 1: límite; Para esto: limit = limit lt; 1? 0: límite; Porque de lo contrario parece que Límite sería 1 sin importar qué. Avísame si me equivoco aquí. También parece que no está dibujando nuevas flechas, pero tal vez sea por el cambio que hice, así que lo probaré. EDITAR: Parece que cambiar eso cambió la capacidad de dibujar otros nuevos. EDIT 2: Así que lo cambié de nuevo a lo que era y está dibujando una nueva flecha, pero está imprimiéndolas mal porque está pensando que la vela que está formando actualmente ya está completa. EDIT 3: Cambio este fragmento de código: limit = limit lt; 1? 1: límite; Para esto: limit = limit lt; 1? 2: límite; Lo que lo desplaza a usar velas acabadas, lo que significa que no imprimirá ninguna flecha con una vela que se está formando actualmente y ahora está imprimiendo correctamente. Corrígeme si estoy equivocado.

  2.                         
    Publicidad
  3. #2
    Genio ??? Gracias, pero no lo creo. Más como un tropezón con experiencia :-) Apuesto por cada error, omisión o error tipográfico que pueda mostrar aquí: He hecho lo mismo en el pasado ... ¡y probablemente DOS VECES! Cheerio

  4. #3

    Cita Iniciado por ;
    {quote} Usted señor es un genio. No puedo creer que la solución sea tan simple. Voy a echarle la culpa a mi inexperiencia y hágalo usted mismo aprendiendo. Pasé 5 horas tratando de resolverlo y todo lo que encontré fueron soluciones que no arreglaron nada. Editaré la primera publicación para incluir la solución, de modo que las personas puedan obtener la respuesta fácil si se molestan en buscarla. ¡Muchas gracias!
    Hola, AntiVi, además de lo que John compartió, también quieres adquirir el hábito de usar los datos pasados ??????como args en la función OnCalculate en lugar de confiar en los datos de los vars incorporados. Además, debes asegurarte de que estás haciendo tus retrospectivas correctamente. No necesita procesar todo el ciclo (todos los datos del gráfico) en cada tic. Solo necesita procesar la parte de los datos del indicador que necesita actualización. Aquí hay un ejemplo de cómo hacer un mejor uso de la función OnCalculate. Inserted Code #property strict #property indior_chart_window/START ADDED JvW #property indior_buffers 2/END ADDED JvW double Highs # ??????91; # 93 ;; double Lows # 91; # 93 ;;/ ----------------------------------------------- ------------------- /| Función de inicialización del indicador personalizado |/ ----------------------------------------------- ------------------- int OnInit () {//--- estilo de dibujo SetIndexStyle (0, DRAW_ARROW, EMPTY, 1, clrGreen); SetIndexArrow (0,234); SetIndexStyle (1, DRAW_ARROW, VACÍO, 1, clrRed); SetIndexArrow (1,233);/--- buffer de indicador SetIndexBuffer (0, Highs); SetIndexBuffer (1, Lows); return (INIT_SUCCEEDED); }/ ---------------------------------------------- -------------------- /| Función de iteración del indicador personalizado |/ ----------------------------------------------- ------------------- int OnCalculate (const int rates_total, const int prev_calculated, const datetime time # 91; # 93 ;, const double open # 91; # 93; , const double high # 91; # 93 ;, const double down # 91; # 93 ;, const double close # 91; # 93 ;, const long tick_volume # 91; # 93 ;, const long volume # 91; # 93; , const int spread # 91; # 93 {//--- int limit = rates_total - prev_calculated - 2; límite = límite lt; 1? 1: límite; for (int i = limit; i gt; 0; i--) {if (alto # 91; i # 93; gt; alto # 91; i 1 # 93; alto # 91; i # 93; gt; alto # 91; i-1 # 93 Highs # ??????91; i # 93; = alto # 91; i # 93 ;; si (bajo # 91; i # 93; lt; bajo # 91; i 1 # 93; bajo # 91; i # 93; lt; bajo # 91; i-1 # 93 Bajas # 91; i # 93 ; = bajo # 91; i # 93 ;; }/--- devuelve el valor de prev_calculated para la devolución de la próxima llamada (rates_total); }

  5. #4

    Cita Iniciado por ;
    Hola, debes indicar cuántos búferes se requieren ... el siguiente cambio al inicio de tu código (después de #property indior_chart_window) lo hace funcionar muy bien ... #property indior_buffers 2 Cheers Enjoy! John/ ---------------------------------------------- -------------------- /| FractalsExercise.mq4 |/| |/|
    https://www.mql5.com|/ ----------------------------------------------- ------------------- #property copyright #property link https://www.mql5.com #property version 1.00 #property strict #property ...
    Usted señor es un genio. No puedo creer que la solución sea tan simple. Voy a echarle la culpa a mi inexperiencia y hágalo usted mismo aprendiendo. Pasé 5 horas tratando de resolverlo y todo lo que encontré fueron soluciones que no arreglaron nada. Editaré la primera publicación para incluir la solución, de modo que las personas puedan obtener la respuesta fácil si se molestan en buscarla. ¡Muchas gracias!

  6. #5
    Hola, AntiVi, debes indicar cuántos búferes se requieren ... el siguiente cambio al principio en tu código (después de #property indior_chart_window) lo hace funcionar muy bien ... #property indior_buffers 2 Cheers Enjoy! John Inserted Code/ -------------------------------------------- ---------------------- /| FractalsExercise.mq4 |/| AntiVi |/| https://www.mql5.com |/ ----------------------------------------------- ------------------- #property copyright AntiVi #property link https://www.mql5.com #property version 1.00 #property strict #property indior_chart_window/START AGREGADO JvW #property indior_buffers 2/END ADDED JvW double Highs # ??????91; # 93 ;; double Lows # 91; # 93 ;;/ ----------------------------------------------- ------------------- /| Función de inicialización del indicador personalizado |/ ----------------------------------------------- ------------------- int OnInit () {//--- estilo de dibujo SetIndexStyle (0, DRAW_ARROW, EMPTY, 1, clrGreen); SetIndexArrow (0, 234); SetIndexStyle (1, DRAW_ARROW, VACÍO, 1, clrRed); SetIndexArrow (1, 233);/--- buffer de indicador SetIndexBuffer (0, Highs); SetIndexBuffer (1, Lows);/--- return (INIT_SUCCEEDED); }/ ---------------------------------------------- -------------------- /| Función de iteración del indicador personalizado |/ ----------------------------------------------- ------------------- int OnCalculate (const int rates_total, const int prev_calculated, const datetime time # 91; # 93 ;, const double open # 91; # 93; , const double high # 91; # 93 ;, const double down # 91; # 93 ;, const double close # 91; # 93 ;, const long tick_volume # 91; # 93 ;, const long volume # 91; # 93; , const int spread # 91; # 93 {//--- int i = 1; int ii = 1; int Limit = Bars - 1; while (i lt; Limit) {if (Alto # 91; i # 93; gt; Alto # 91; i 1 # 93 {si (Alto # 91; i # 93; gt; Alto # 91; i - 1 # 93 {Máximos # 91; i # 93; = Alto # 91; i # 93 ;; }} i ; } while (ii lt; Limit) {if (Bajo # 91; ii # 93; lt; Bajo # 91; ii 1 # 93 {if (Bajo # 91; ii # 93; lt; Bajo # 91; ii - 1 # 93 {Bajas # 91; ii # 93; = Bajo # 91; ii # 93 ;; }} ii ; }/--- devuelve el valor de prev_calculated para la devolución de la próxima llamada (rates_total); }/ ---------------------------------------------- --------------------

  7. #6

    Cita Iniciado por ;
    {quote} ¿Qué línea es 71?
    Eso sería Lows [ii] = Low [ii]; en el segundo ciclo while.

  8. #7

    Cita Iniciado por ;
    {quote} Por lo que puedo ver, eso es lo que hace mi Límite, sin embargo, todavía lo inserté en el código solo para probarlo e incluso lo intenté en varias posiciones, sin embargo, el error persiste. Sinceramente estoy desconcertado sobre por qué me está dando el error. Esta es una imagen del resultado hasta el momento. Debería hacer lo mismo para los Lows con flechas rojas apuntando hacia arriba. También puede ver el error solo para darle a la gente una idea. {imagen}
    ¿Qué línea es 71?

  9. #8
    1 Adjunto (s)
    Cita Iniciado por ;
    {quote} En cada ciclo, intente dividirlo con algo como el siguiente ejemplo para evitar ir más allá de las barras disponibles: if (i gt; = Bars-1) break; si (ii gt; = Bars-1) se rompe;
    Por lo que puedo ver, eso es lo que hace mi Límite, sin embargo, todavía lo inserté en el código solo para probarlo e incluso lo intenté en varias posiciones, sin embargo, el error persiste. Sinceramente estoy desconcertado sobre por qué me está dando el error. Esta es una imagen del resultado hasta el momento. Debería hacer lo mismo para los Lows con flechas rojas apuntando hacia arriba. También puede ver el error solo para darle a la gente una idea.

  10. #9

    Cita Iniciado por ;
    Hola chicos, así que he estado tratando de dibujar algunas cosas, sin embargo, me está dando el error Array fuera de rango. Dibuja las flechas verdes perfectamente pero las flechas rojas simplemente no funcionan. Si alguien pudiera decirme lo que estoy haciendo mal, sería genial. No es porque esté tratando de acceder a las velas que aún no están allí o que no conozco. Entiendo que algunas personas podrían decir que va más allá de las barras disponibles, pero lo he probado incluso con un límite de 1000, lo que estoy seguro es que mi tabla tiene y todavía me da fuera de alcance. Este es el código:/ ------------------------------------------ ------------------------ ...
    En cada ciclo, intente dividirlo con algo como el siguiente ejemplo para evitar ir más allá de las barras disponibles: Código insertado si (i gt; = Bars-1) se rompe; Código insertado si (ii gt; = Bars-1) se rompe;

  11. #10
    Si divido los bucles while en 2 indicadores, funciona perfectamente sin un solo error, pero no cuando están juntos. No está accediendo a nada que tampoco esté allí. Así que no estoy seguro de por qué dice que está fuera de rango.

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •  
Uso de cookies
Utilizamos cookies propias y de terceros para elaborar información estadística y mostrarle publicidad personalizada a través del análisis de su navegación. Si continúa navegando acepta su uso. Más información y política de cookies.
     

Aviso legal: Ni forosforex.com ni ninguna persona involucrada en forosforex.com aceptarán ninguna responsabilidad por cualquier pérdida o daño en el trading como resultado de la confianza en la información contenida en este sitio web, incluidos datos, cotizaciones, gráficos y señales de compra/venta. Por favor, infórmese plenamente de los riesgos y costes asociados a las operaciones en los mercados financieros, una de las formas de inversión que más riesgos entrañan.
forosforex.com le quiere recordar que los datos contenidos en este sitio web no son necesariamente en tiempo real ni exactos. forosforex.com no asume responsabilidad alguna por las pérdidas en que usted podría incurrir como resultado de la utilización de estos datos. Este acuerdo se rige por su versión en inglés, que prevalecerá siempre que haya alguna discrepancia entre la versión en inglés y la versión en español. Los CFD son un producto difícil de entender, varios organismos reguladores consideran que no es adecuado para inversores minoristas debido a su complejidad y riesgo.
Advertencia de riesgo: Los CFDs son un producto difícil de entender, y puede no ser adecuado para inversores minoristas debido a su complejidad y riesgo. Existe la posibilidad de sufrir una pérdida igual o superior a la inversión. Por lo tanto, no debe invertir o arriesgar dinero que no pueda permitirse perder. Debe asegurarse de que comprende todos los riesgos. Antes de abrir una cuenta en un broker por favor sea consciente e infórmese de los riesgos asociados con el trading. El contenido de este sitio web no debe interpretarse como asesoramiento personal. ForosForex recomienda que busque el consejo de un asesor financiero independiente.