matriz estática ? - página 3

 

OK, veo algo,

 while(i>=0)
     {
      val1=iFractals(NULL, 0, MODE_UPPER,i);
      if (val1 > 0) v1[i]=High[i];
      else          v1[i]=v1[i+1];

      val2=iFractals(NULL, 0, MODE_LOWER,i);
      if (val2 > 0) v2[i]=Low[i];
      else          v2[i]=v2[i+1];
      
      i--;    
     }

¿cuándo termina este bucle? cuando i no es >=0 es decir -1

entonces el siguiente código es . .

     for(val1=High[i]; v1[i] == 0 ;i++)  // or v1[i] == EMPTY_VALUE
      {
      Print (v1[i]);
      }

por lo que el valor inicial de i es -1. . de ahí tu impresión. v[-1] en realidad es = 0 por lo que el bucle termina.

 
Cuando imprimo algo siempre parece ser igual a 0

int i=Bars;         
   
   while(i>=0)
     {
      val1=iFractals(NULL, 0, MODE_UPPER,i);
      if (val1 > 0) v1[i]=High[i];
      else          v1[i]=v1[i+1];

      val2=iFractals(NULL, 0, MODE_LOWER,i);
      if (val2 > 0) v2[i]=Low[i];
      else          v2[i]=v2[i+1];
      
      i--;
       
     }
   
     Print (v1[i+10]);
      

He cambiado i por otra cosa y las sentencias while e incluso he creado un código totalmente diferente y todo parece = 0 no tengo ni idea de por qué.
Sin embargo, el indicador está trabajando y el buffer parece mantener val1 dentro de v1[i] correctamente, sin embargo, no puedo hacer referencia a cualquier cosa en la matriz para imprimir cualquier cosa.

todo siempre = 0

Voy a seguir leyendo un poco más.






 
for(v1[i]=High[i]; v1[i] !=0; i++)
      {
      Print (v1[i]);
      }
      

This prints nothing so still having -1 issue I guess
pero si comienza un -1 entonces termina tan pronto como se cicla una vez porque i++ lo lleva a cero de nuevo también.

No sabía que esta sentencia for se vería afectada por la sentencia while ya que esto ocurre fuera de la sentencia while

 
int i=Bars;         
   
   while(i>=0)
     {
      val1=iFractals(NULL, 0, MODE_UPPER,i);
      if (val1 > 0)
      { 
      v1[i]=High[i];
      Print (v1[i]);
      }
      else          
      {
      v1[i]=v1[i+1];
      }

      val2=iFractals(NULL, 0, MODE_LOWER,i);
      if (val2 > 0) v2[i]=Low[i];
      else          v2[i]=v2[i+1];
      
      i--;
       
     }
Sigue siendo 0 incluso al imprimir dentro y antes del bucle

Parece que hasta la más básica de las tareas se me escapa. Incluso al leer sobre Bares no se menciona el tema de -1 en la documentación o en el libro al menos en las secciones de Bares o Variables predefinidas donde pensé que debería estar.
Deja de ser desalentador. 1,5 semanas en este simple tema y sin embargo la impresión que pensé sería la más simple de las tareas que me ayudaría a ir en la dirección correcta.

¡Qué mala suerte! LOL

Mañana intentaré algo más.
 

No has leído mi post con mucha atención....

Bars no es igual a -1 en ningún momento. . . ni tiene nada que ver con el -1 que mencioné.

Estás usando la variable i en dos bucles... a menos que la cambies a algún otro valor entre los bucles, entonces su valor inicial para el segundo bucle será su valor final del primer bucle.

 
Estoy confundido


Me deshice de mi bucle for por completo y pensé que simplemente imprimiría dentro del bucle.
He intentado reiniciar i=0 o i !=0 sin efecto. o incluso una variable totalmente diferente como val3-iFractals.....a
Y a=0 y no barras, luego conté hacia arriba desde allí también y la impresión sigue siendo igual a 0.

No entiendo por qué la impresión dentro del bucle no funciona tampoco como en el código publicado arriba.

Gracias

 

Tal vez pueda responder a una pregunta para mí...

¿Por qué tanta gente con poca experiencia en codificación parece estar aterrorizada de añadir sentencias Print? ¿Por qué quieres que la vida sea tan difícil para ti... tal vez te gusta el sadomasoquismo?

Tienes una sola sentencia Print . . . y da como resultado 0 . . . ni siquiera sabes cuál era el valor de i en ese momento, no sabes cuál era el valor de val1. . . ¿sabes cómo funciona iFractals, me refiero a cómo calcula lo que hace y qué rango de valores da?

 

He copiado tu código, he añadido algunas sentencias de impresión y lo he ejecutado... está imprimiendo...

2011.09.18 14:42:24 Agente86 EURUSD,H1: v1[29]= 1.4727

 
RaptorUK:

Tal vez usted pueda responder a una pregunta para mí...

¿Por qué tanta gente con poca experiencia en codificación parece estar aterrorizada de añadir sentencias Print? ¿Por qué quieres que la vida sea tan difícil para ti... tal vez te gusta el sadomasoquismo?

Tienes una sola sentencia Print . . . y da como resultado 0 . . . ni siquiera sabes cuál era el valor de i en ese momento, no sabes cuál era el valor de val1. . . ¿sabes cómo funciona iFractals, es decir, cómo calcula lo que hace y qué rango de valores da?


No me aterra añadir sentencias Print, las he puesto después de cada variable y no entiendo qué está imprimiendo y por qué porque no es lo que esperaba ver imprimir.
La única sentencia print que se ve no es la única que he puesto. No habría posteado si sólo hubiera probado una única sentencia de impresión.
Sólo después de 2-3 semanas de intentar cientos de cosas y de leer y releer 100's de posts, y diccionario, libro, documentación y más, posteé para tratar de entender cómo funciona este array y cómo imprimir los elementos y valores

Trabajé en esto 2-3 horas por día tratando de entenderlo y no estoy mucho más cerca, aunque aprendí un montón de otras cosas mientras trataba de resolver esto.

Reescribí completamente el código con un bucle for en lugar de un bucle while y limité el array 100 elementos pensando que esto me lo simplificaría un poco; y todavía no pude imprimir los valores.


Es que no lo entiendo.

Pensé que iFractals da el valor de la vela alta/baja de la vela del medio en una serie de 5 velas siempre que estas 2) velas a la izquierda, y 2)velas a la derecha sean más altas o más bajas que la vela del medio. Marcando o registrando el punto alto o bajo de la vela del medio.

No conozco los cálculos reales de iFractals, pero pensé que esto no importaría ya que lo estaba imprimiendo si >0 que pensé que significaba verdadero, y como estaba siendo inicializado con High[i] también .

Es que no lo entiendo.


 
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[0]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[1]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[2]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[3]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[4]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[5]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[6]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[7]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[8]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[9]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[10]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[11]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[12]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[13]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[14]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[15]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[16]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[17]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[18]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[19]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[20]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[21]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[22]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[23]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[24]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[25]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[26]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[27]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[28]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[29]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[30]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[31]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[32]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[33]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[34]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[35]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[36]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[37]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[38]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[39]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[40]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[41]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[42]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[43]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[44]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[45]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[46]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[47]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[48]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[49]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[50]= 0


A partir de este código y sí había otras declaraciones de impresión de todo, excepto para val1 todo otro intento de imprimir v1[i] en cualquier lugar en el código de impresiones = 0

//+------------------------------------------------------------------+
//|                                                  Agent86_5min.mq4 |
//|                                                    Unfinished POS |
//|                                    
//+------------------------------------------------------------------+
#property copyright "Unfinished POS by Agent86"


//---- input parameters
extern double    TakeProfit=20.0;
extern double    Lots=0.1;
extern double    StopLoss=15.0;
extern int MagicNumber=123486;

double v1[];
double v2[];
double v3[];
double val1;
double val2;
double val3;


//++++ These are adjusted for 5 digit brokers.

int     pips2points;    // slippage  3 pips    3=points    30=points
double  pips2dbl;       // Stoploss 15 pips    0.0015      0.00150
int     Digits.pips;    // DoubleToStr(dbl/pips2dbl, Digits.pips)

    // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
   if (Digits == 5 || Digits == 3)
   {    // Adjust for five (5) digit brokers.
      pips2dbl    = Point*10; pips2points = 10;   Digits.pips = 1;
   } 
   else 
    {    
      pips2dbl    = Point;    pips2points =  1;   Digits.pips = 0; 
    }
    // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl
     
   
    
//---- 

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//---- 
   
//----
   return(0);
  }
   
    
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
  
  
   double   faster = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1), //MODE_MAIN
            slower = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1); //MODE_SIGNAL
            
  
          
   
    for(int i=Bars; i >= 0; i--)
     {
      val1=iFractals(NULL, 0, MODE_UPPER,i);
   
      // Print (val1, (" val1")); //will print some 0's
      if (val1 > 0)
         {        
         
          v1[i]=High[i];
 
         }
      else          
         {
         v1[i]=v1[i+1];
         }
        

      val2=iFractals(NULL, 0, MODE_LOWER,i);
     
      if (val2 > 0) 
         {
         v2[i]=Low[i];
         }
      else          v2[i]=v2[i+1];
     
      i--;
       
     }
   
   for(i=50; i>=0; i--)
      {
      Print ("v1[", i, "]= ", v1[i]);
      }

//----
            
                       
            

           

//---- 

 
                    
        

                
   return(0);
  }    

//+------------------------------------------------------------------+