matriz estática ? - página 5

 
¡AHHHHHHH! Ahora me dice LOL

Ok aquí está lo que conseguí algo un poco mejor con algunos resultados, no entiendo del todo los resultados pero creo que puedo descifrar desde ahí y entender porque NUNCA pude obtener un resultado

Gracias

//+------------------------------------------------------------------+
//|                                                  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[5];
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];
       
     }   
     
     for(i=Bars; i >= 0; i--)
     {
     val1=iFractals(NULL, 0, MODE_UPPER,i);
     if(val1>0)
      {
      double v1[6];
      v1[5]=High[i];
      Print ("v1[", 5, "]= ", v1[5]);
      }
     }
     
        
                       
        
           

//---- 

 
                    
        

                
   return(0);
  }    

//+------------------------------------------------------------------+
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3312
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3315
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3301
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3301
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3302
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3296
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3293
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3292
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3293
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3292
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3284
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3299
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3306
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3325
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3361
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3343
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3399
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3419
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3422
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3422
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3398
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3374
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3375
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3378
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3387
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3389
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3389
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3383
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3373
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3372
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3368
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3356
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3366
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3369
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3386
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3361
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3301
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3296
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3297
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3297
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3297
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3301
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3303
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3314
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3307
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3307
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3302
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3301
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3294
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3297
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3292
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3292
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3292
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.3293
2011.09.21 10:54:46 2011.01.03 02:28 Agent86_5min EURUSD,M5: v1[5]= 1.329
 
Así que ahora puedo volver a averiguar cómo hacer referencia a los fractales anteriores

Gracias

 
Siempre hay una explicación... sólo hay que encontrarla. :-)
 
RaptorUK:

Sí, los buffers indicadores se manejan de manera diferente a los arrays ordinarios.

v[i] no está declarando el Array, es sólo uno de los elementos... pero double v[]; es un array con cero elementos... así que v[anything] siempre = 0

esto es confuso para mí.
Así que puedes poner valores en el array y sin embargo, como no está declarado, no hay manera de acceder a esos elementos sin saber qué elemento era/es ? ¿no?

Entonces, ¿cómo sabe el buffer cómo dibujar la línea de v1[i] si hay cero elementos en el array. ?

¿Es porque es más bien un bool estático y no actúa realmente como un array en ese momento, es decir, High[i] = True, por lo que dibuja High[i]?
¿Pero lo dibuja sin ningún valor en el elemento, sólo True y está bien dibujar High[i] en ese momento?

Por favor, aclare si no estoy ni siquiera cerca de esto

Y gracias por la tutoría
 

Los buffers de los indicadores son Arrays especiales... no confundas Arrays y Buffers, son similares pero diferentes.

En el código original v1[] y v2[] son buffers, en tu último código son Arrays, cuando declaras un Array tienes que darle un tamaño, por ejemplo, v1[50] tiene 50 elementos desde v1[0] hasta v1[49]. El Buffer se redimensiona automáticamente cuando hay más elementos necesarios y los valores se desplazan en el Buffer automáticamente. Considere la barra que se está formando actualmente, la barra 0, cuando esta barra se completa un valor del Indicador asociado a esa barra tiene que desplazarse al índice 1... esto se hace automáticamente con los Bufers... si quiere hacer algo similar con Arrays puede, pero tiene que codificarlo usted mismo.

 
Ok, ya veo, es que no sabía que los buffers no eran realmente lo mismo, esto es precisamente lo que necesitaba entender y probablemente me hubiera dado cuenta hace tiempo.

Gracias
 
for(i=Bars; i >= 0; i--)
      {
      val3=iFractals(NULL, 0, MODE_UPPER,i);
      if(val3>0)
         {      
         v3[1]=High[i];
         double v3[9];
// if I put v3[1]=High[i]; here in stead of above it will not draw the line, probably because of this buffer topic again
         Print ("v1[", 1, "]= ", v3[1]);
         }
      }

De todas formas creo que ahora puedo avanzar bastante


Veo que puedo poner esta línea justo encima de la declaración del array y muestra el indicador, sin embargo sólo imprimirá 0, y si la pongo debajo imprime el valor

 
Puedo preguntar sobre iFractals y cuando val1>0

Estoy asumiendo que esto significa ==True y luego continúa

Así que en el momento en que esto es cierto, ¿cómo puedo saber este valor ya que simplemente la impresión imprimiría un cambio continuo en el valor mientras sea cierto

Y también declarando el array y luego declarando un elemento en el array como v1[3]=High[i] los resultados de la impresión también continúan cambiando como val1>0

Así que estoy tratando de entender esto y cómo podría congelar el tiempo en el momento en que será val1>0 o cómo puedo saber cuál es el valor real del fractal sin usar el valor [i] en el buffer ya que no puedo obtener el valor del buffer ya que discutimos antes que [i] no está declarando el array y es en sí mismo no declarado. Bueno, parcialmente no declarado.

Así que supongo que declarar el array y asignar un valor como High[i] producirá los resultados de impresión que quiero sin embargo, no es fijo como lo es con el indicador así que cómo tiene el indicador un valor fijo y cómo reproduciría esto para usar este valor o renombrarlo como alguna otra variable para que sea útil.

Por favor, aconsejadme

Gracias






 
Tal vez deberías empezar por explicar lo que estás tratando de hacer... sin mencionar ningún código... sólo en inglés. Probablemente nos aclarará las cosas a los dos... ;-)
 
RaptorUK:
Tal vez deberías empezar por explicar lo que estás tratando de hacer... sin mencionar ningún código... sólo en inglés. Probablemente nos aclarará las cosas a los dos... ;-)
LOL ok

Supongo que sólo quiero aprender a referirme a los ifractales que la propia señal mostraría en el gráfico
No a todos en general sino a escoger 1, o uno anterior, de un máximo y/o un mínimo y seleccionarlos para usarlos.
Para utilizar en una especie de esquema de nomenclatura ABCD

Dado que iFractals parece hacer casi lo que iba a crear por mi cuenta para este uso, quería ser capaz de dar a estos fractales un nombre variable

De manera que pudiera diseñar código para referirse a estos iFractales fijos como se muestra en el indicador y como se muestra para v1[i]=Alto[i] que sigue mostrándose hasta que se forma uno nuevo. El indicador muestra el valor que se mantiene fijo

Así que iba a intentar crear un código que creara una variable para digamos el actual v1[i]=Alto[i] y esto podría ser A pero quiero un valor fijo como en el indicador no un valor en movimiento como mi sentencia Print.

Entonces me gustaría seleccionar desde un High[i] anterior para marcarlo como A o B podría ser C si(A>High[i] en ese momento) y así sucesivamente. Para tratar de llegar a un buen esquema ABCD para utilizar en otra parte de una estrategia completamente diferente. Pero me he dado cuenta de que mucha gente utiliza este tipo de esquema ABCD con fibs y muchas otras partes e indicadores, pero yo sólo quería aprender a crear un esquema ABCD básico y quizás incluso más adelante hacer que dibuje líneas de tendencia basadas en estos ABCD, etc.

Y muchas otras cosas, pero por ahora solo un tipo de ABCD.

Gracias
Razón de la queja: