Preguntas de los principiantes MQL4 MT4 MetaTrader 4 - página 195

 
Artyom Trishkin:

Encuentre el punto en el que el precio cruza la MA hacia arriba. Este será el inicio del rango de búsqueda.

Encuentre el punto en el que el precio cruzó la MA hacia abajo. Este sería el rango de parada.

Tome iHighest() sólo en este rango.

Y como implementar una búsqueda de puntos MA, para que busque solo 2 puntos extremos y no hasta el infinito. en palabras también lo entiendo, pero si no es difícil como implementarlo en código.
 
GlaVredFX:
Y como implementar la búsqueda de puntos MA, para que solo se busquen 2 puntos extremos y no hasta el infinito. Yo también lo entiendo, pero si no es difícil como implementarlo en el código.

Una forma: crear una variable a nivel global del programa EA (declarar una variable en la cabecera del EA) - en esta variable escribir la hora de apertura de la barra en la que se realizó el último cruce. Esto ayudará a utilizar la tercera forma de llamada deCopyBuffer:

La referencia de las fechas de inicio y fin del intervalo de tiempo requerido

int  CopyBuffer(
   int       indicator_handle,     // handle индикатора
   int       buffer_num,           // номер буфера индикатора
   datetime  start_time,           // с какой даты
   datetime  stop_time,            // по какую дату
   double    buffer[]              // массив, куда будут скопированы данные
   );

Aquí start_time es sólo la hora de nuestra variable, y stop_time es la hora de la última cita conocida del servidor.

Документация по MQL5: Доступ к таймсериям и индикаторам / CopyBuffer
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyBuffer
  • www.mql5.com
Отсчет элементов копируемых данных (индикаторный буфер с индексом buffer_num) от стартовой позиции ведется от настоящего к прошлому, то есть стартовая позиция, равная 0, означает текущий бар (значение индикатора для текущего бара). При копировании заранее неизвестного количества данных в качестве массива-приемника buffer[] желательно...
 
GlaVredFX:
Y como implementar la búsqueda de puntos de la MA, para que busque solo 2 exteriores, y no hasta el infinito. En palabras también lo entiendo, pero si no es difícil como implementarlo en el código.

Tienes que pasar por el bucle hasta que encuentres un movimiento que se aleje del MA.

Un punto, esta sección resaltada por el rectángulo amarillo, interrumpirá el bucle antes de que llegue al segundo cruce precio-MA. El máximo se encontrará en el primer cruce a la derecha


P.D. ¿Cuál es la diferencia entre las dos áreas resaltadas?

 
Vitaly Muzichenko:

P.D. ¿Cuál es la diferencia entre las dos áreas resaltadas?

Pueden ser diferentes, es decir, el primer punto puede ser más alto o más bajo que el segundo.

Esto es sólo un ejemplo. Pero esto no significa que sean siempre idénticos.



Quién puede lanzar ejemplos de código con condiciones similares..:

Valor actual de MA> 0 bar.
Buscando elnúmero de barra, Precio<MA, encontró la barra número 1, escribe el valor en el buffer 2
Buscando elsiguiente número Precio>MA encontró la barra número 2, escribe el valor en el buffer 1.
Deja de buscar.
A continuación, entre los valores del búfer 1 y 2 busque el precio más bajo Bajo.
Si el valor actual de MA < 0 bar
Buscandoel número de barra, Price>MA, encontrado el número de 1 barra, escribe el valor en el buffer 2
Buscando elsiguiente número Precio<MA encontró la barra número 2, escribe el valor en el buffer 1.
Deja de buscar.
A continuación, entre los valores de la memoria intermedia 1 y 2 buscamos el precio más alto.

 
GlaVredFX:

Pueden ser diferentes: el primer punto puede ser más alto o más bajo que el segundo.

Es sólo un ejemplo. Pero eso no significa que sean siempre los mismos.



Quién puede lanzar ejemplos de código con condiciones similares..:

El valor actual MA> 0 bar
Buscamosel número de barra Precio<MA, hemos encontrado la barra número 1 y escribimos el valor en el buffer 2
Buscando elsiguiente número Precio>MA encontró la barra número 2, escribe el valor en el buffer 1.
Deja de buscar.
A continuación, entre los valores del búfer 1 y 2 busque el precio más bajo Bajo.
Si el valor actual de MA < 0 bar
Buscandoel número de barra, Price>MA, encontrado el número de 1 barra, escribe el valor en el buffer 2
Buscando elsiguiente número Precio<MA encontró la barra número 2, escribe el valor en el buffer 1.
Deja de buscar.
A continuación, entre los valores del búfer 1 y 2 buscamos el precio más alto Alto.

Si seguimos la imagen, tenemos que iniciar un bucle y buscar hasta encontrar la condición MA<Valor.

Una vez encontrado esto, llenamos la matriz con los precios altos. Ejecutamos el ciclo hasta que se encuentre la condición MA>Precio, tan pronto como encontremos este lugar - rompemos el ciclo.

Bueno, en la matriz que busca los precios máximos

 
Vitaly Muzichenko:

Si sigues la imagen, debes ejecutar un bucle y buscar hasta encontrar la condición MA<Valor.

Una vez encontrado esto, llenamos la matriz con los precios altos. Ejecutamos el ciclo hasta que se encuentre la condición MA>Precio, una vez encontrado el lugar, rompemos el ciclo.

Luego buscamos los precios máximos en el conjunto.

Tienes razón y yo también lo escribí igual, pero cómo implementarlo en el código, puedes al menos darnos un ejemplo de código de esto :


Ejecuta el bucle y realiza una búsqueda hasta que se encuentre la condición MA<Precio.

En cuanto se encuentra esta condición,llenamos la matriz con los precios Alto

Документация по MQL5: Операции с массивами / ArrayFill
Документация по MQL5: Операции с массивами / ArrayFill
  • www.mql5.com
При вызове функции ArrayFill() всегда подразумевается обычное направление индексации – слева направо, то есть изменение порядка доступа к элементам массива с помощью функции ArraySetAsSeries() не принимается во внимание. Многомерный массив при обработке функцией ArrayFill() представляется одномерным, например...
 
GlaVredFX:

Así es y así lo escribí, pero como implementarlo en Código puedes al menos dar un ejemplo de código de esto :


ejecutar un bucle y hacer una búsqueda hasta que se encuentre la condición MA<Precio.

En cuanto se encuentra esta condición,llenamos la matriz con los precios Alto

No puedo escribir el código ahora, tal vez alguien más lo escriba, es simple

 

Esto es lo que se necesita, puede alguien ayudar con este código.

int start()                           

  {

  int    i;

  double No_1;

  double No_2;

  double k=iClose(NULL,0,i);
  double h=iHigh(NULL,0,i);

  if (ma>k) ma=iMA(NULL,0,24,0,1,0,i);

  for (i=0; i< Bars; i++) {

  //---- Код поиска номер крайнего бара где  iHigh>ma

  //---- Если нашли то возвращаем номер бара No_1

            

          }

Entonces encuentra el siguiente valor donde iLow>ma y devuelve el número de barra No_2 .
Detener la búsqueda y utilizar la función iHighest para encontrar el vértice entre estas barras
int val_index=iHighest(NULL,0,MODE_HIGH,No_2,No_1);

 
GlaVredFX:

if (ma>k) ma=iMA(NULL,0,24,0,1,0,i);

Este no es un código MQL5.

 
Vladimir Karputov:

Este no es un código MQL5.

Esto es un diseño, no hay diferencia entre el 4 y el 5

:)