matriz estática ?

 

Hola a todos,

En primer lugar gracias a todos por todas las respuestas esto ha sido grande el aprendizaje de MQL4

Estoy pasando a entender cómo construir array's

Tema:

Como almacenar señales en un array estático por ejemplo: Altos, y Bajos de una serie de velas etc, probablemente pondré una pequeña línea encima de cada alto y bajo.

Así que estoy pensando en array estático[1,2,3,4,5,6,7]

array[1] = (Mínimo[3] < Mínimo[4] && Mínimo[3] < Mínimo[3]) /o algo así ?

Bajo_1 = array[1]

Low_2 = array[2] y así sucesivamente.

¿Sería esta una forma estándar de hacer esto o estoy equivocado?

Por favor, aconséjame, gracias.

 

Lee primero... y luego vuelve a leer hasta que lo entiendas.

https://book.mql4.com/variables/arrays

Por ejemplo, el primer elemento de una matriz es el elemento 0 , un poco como Bares, fumy que, ¿eh? ;-)

 
  1. Estás muy equivocado.
  2. array[1,2,3,4,5,6,7] giberish
  3. array[1] = (Low[3] < Low[4] && Low[3]... es array un bool
  4. Low_1 = array[1] implica que array no es un bool
  5. "almacenar las señales en un array estático" ¿por qué tiene que ser estático cuando se puede calcular cuando se necesita.
 

oops quise decir int array[1][7];

Gracias por la respuesta

Bueno, después de leer un poco más, su dirección y preguntas, supongo que una matriz puede no ser lo que estoy tratando de hacer.

Básicamente quiero aprender a crear mi propia versión definida de máximos y mínimos; y poder referenciarlos para una señal incluso después de que se formen nuevas barras. Pero sólo un número de ellas que yo elija, no todo el historial completo de máximos y mínimos.
Puede que esté en el camino equivocado aquí.

Voy a repensar esto un poco más.

Gracias

 
Agent86:


Básicamente quiero aprender a crear mi propia versión definida de máximos y mínimos; y ser capaz de referenciarlos para una señal incluso después de que se formen nuevas barras. Pero sólo un número de ellos que elijo no toda la historia completa de máximos y mínimos.

¿Por qué? ¿Puede explicar lo que está tratando de lograr?
 

Creo que haré algo más parecido a esto:

Supongo que eso hace que este post ya no sea sobre arrays en este momento así que me retractaré de este cuestionamiento hasta que pueda aprender más sobre arrays


Gracias.

static double Low_A;
   
   if(Low[2] < Low[2]
      && Low [2] < Low[1])
      {
      Low_A = Low[3];
      Print (Low_A + " Low_A has formed");
      }
 
RaptorUK:
¿Por qué? ¿Puede explicar lo que está tratando de lograr?

Bueno, claro, en realidad no se trata de máximos y mínimos de una vela en particular, pero tal vez una serie de velas.

Digamos que un ejemplo podría ser llamar a un Low_A dependiendo de cuántas velas quiero usar pero podría ser decir que un Low se considera 4 velas más altas a la izquierda y 4 velas más altas a la derecha, y esta vela baja se consideraría un Low_A

O podría yo más velas, o menos para hacer un Low o un High, y luego crear otros así para Highs, y Lows.
Luego crear algunas funciones para comparar los mínimos anteriores con los siguientes mínimos, y los máximos anteriores con los siguientes máximos.

Entonces, tal vez dibujar una línea de tendencia de una serie de 2) altos/bajos o 3/altos/bajos o incluso más

O podría utilizar como en este ejemplo 1 vela que tiene 1 vela inferior a la izquierda y 1 vela inferior a la derecha y llamar a esto un bajo.

Inicialmente estaba considerando poner el resultado en un array, pero no creo que esto haga lo que quería, o al menos no entiendo los arrays lo suficientemente bien como para determinar eso en este momento. Un poco más de lectura sin duda me aclarará. ¡HA !

Realmente no estaba seguro de si los arrays serían útiles para esto para almacenar una serie de máximos y mínimos que yo defino.
 

Si imprimo Low[2] me da 8 dígitos en lugar de 5 dígitos, y algunos son todos 0.0000000

Probablemente porque el tipo de datos que utilicé fue static double Low_A;

No estoy seguro de si tengo que hacer que se imprima correctamente, sin embargo para el propósito de almacenar la estática correcta, no estoy seguro de qué datos utilizar.

 
OK, estoy desechando el array estático, y la idea del doble estático

Necesito un nuevo diseño es obvio que lo que estaba tratando de hacer no funcionará correctamente y ahora entiendo por qué.

Así que, de vuelta a la mesa de dibujo de nuevo. OUCH
 

Volviendo a esto,

Después de aprender un poco más me preguntaba si existe una cosa como un array estático, o si un array es estático principalmente por defecto, y después de leer los enlaces que proporcionaste digo que todos son estáticos por defecto. Genial.


De todas formas, estoy pensando en iFractals en lugar de intentar marcar Altos y Bajos según los defina. De momento puedo usar Fractales hasta que tenga mejores conocimientos y más lecturas.

Entonces, ¿qué pasa con los iFractales, cómo puedo marcarlos y referirme a ellos?
¿Simplemente crearía iFractals adicionales y cambiaría el turno y me referiría a ellos de esa manera, o el turno con iFractals seguiría hablando de Bares y no del Fractal anterior?

//+------------------------------------------------------------------+
//|                Support and Resistance                            |
//|                Copyright © 2004/5     Barry Stander              |
//|                http://www.4Africa.net/4meta/                     |
//+------------------------------------------------------------------+

#property copyright "Support and Resistance             Barry_Stander_4@yahoo.com"
#property link      "http://www.4Africa.net/4meta/"
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Blue

//---- buffers
double v1[];
double v2[];
double val1;
double val2;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init()
  {
//----
   IndicatorBuffers(2);

   SetIndexArrow(0, 119);
   SetIndexStyle(0,DRAW_ARROW,STYLE_DOT,1,Red);
   SetIndexBuffer(0, v1);
   SetIndexLabel(0,"Resistance");

   SetIndexArrow(1, 119);
   SetIndexStyle(1,DRAW_ARROW,STYLE_DOT,1,Blue);
   SetIndexBuffer(1, v2);
   SetIndexLabel(1,"Support");
//----
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
   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--;
     }
//----
   return(0);
  }
//+------------------------------------------------------------------+


Alguien escribió este código y entiendo cómo funciona, pero no estoy seguro de entender cómo seleccionaría de la matriz un Alto y/o un Bajo en particular, también conocido como Soporte/Resistencia.

Quiero decir que seguramente puedo hacer una función que abriría un comercio if(val1 > imacd) o algo así, pero ¿qué pasa con los iFractals anteriores, o digamos 2 atrás,

¿Sería esto simplemente una cuestión de cambio?

¿O tengo que poner esto en otra matriz de algún tipo?

Por favor, aconsejadme

Gracias

 
Hay 2 buffers (arrays) que contienen los valores de los precios de los Fractales... val1 & val2. Si quieres encontrar los valores de los fractales anteriores simplemente haces un bucle, incrementando un valor de desplazamiento, y compruebas los valores del buffer hasta que encuentres los que no son EMPTY_VALUE ( https://docs.mql4.com/customind/SetIndexEmptyValue )