Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 852

 
¿Cómo puedo encontrar el valor máximo de High[] entre varias barras?
 

Lo mejor es utilizar las nuevas funciones CopyHigh de mql4 y la función matemática MathMax

O iHighest

 

Buenos días, dígame dónde está el error.

/////////////////////////////////////////////////////////////////////////////////////////////////////

  //////////////////////////////////Зона консолидации/////////////////////////////////////////////////

  ///////////////////////////////////////////////////////////////////////////////////////////////////

  if(Hour()>=10)

  {

   for(x9=2; x9<=5; x9++)

   {

    x10=Hour()-x9;//x10 -номер свечи от которой считаем восемь свечей назад

    if(x10>=0)

    {

     int Minn=iLowest(NULL, PERIOD_H1, MODE_LOW , x10+8, x10);

     int Maxx=iHighest(NULL, PERIOD_H1, MODE_HIGH, x10+8, x10);

     z11 =iHigh(NULL,PERIOD_H1,Maxx);

     z12 =iLow(NULL, PERIOD_H1,Minn);

     ZPB     =iTime(NULL,PERIOD_H1,x10+8);

     ZPB1     =iTime(NULL,PERIOD_H1,x10);

     if(z11-z12<=z10)

     {

      y4=ObjectCreate("Зона консолидации",OBJ_RECTANGLE,0,0,0,0,0);

      y4=ObjectSet("Зона консолидации",OBJPROP_WIDTH,2);

      y4=ObjectSet("Зона консолидации",OBJPROP_COLOR,Blue);

      y4=ObjectSet("Зона консолидации",OBJPROP_BACK,true);

      y4=ObjectMove("Зона консолидации",0,ZPB,z11);

      y4=ObjectMove("Зона консолидации",1,ZPB1,z12);

     }

    }

   }

  }

  ////////////////////////////////////////////////////////////////////////////////////////////////////

La idea es que en cada iteración el código compruebe el ancho del canal y si es menor o igual que el valor actual(z11-z12<=z10), se dibuje un rectángulo, pero la salida es que primero se pasen todas las iteraciones y luego haya una comprobación de consistencia.
 
AlexeyVik:

Lo mejor es utilizar las nuevas funciones CopyHigh de mql4 y la función matemática MathMax

O iHighest

Si CopyHigh, entonces ArrayMaximum, IMHO...
 

Por favor, indíquenos cómo tratar el error número 1 (ERR_NO_RESULT No hay error, pero se desconoce el resultado).

Cuando una orden está perdiendo más de $1 (100 pips a 0.01 lotes) en EURUSD, mi Asesor Experto intenta modificar la orden (colocar el TakeProfit de la orden a su precio de apertura).

Me aparece este error, ¿qué debo hacer?

 
evillive:
Si CopyHigh, entonces ArrayMaximum, IMHO...
Sí, eso es lo que estaba pensando... Es posible que se produzcan algunos deslices y malentendidos. Hace un mes y medio hubo la misma pregunta en el quinto foro. Ahí hablé de ArrayMaximum, y aquí se mezcló un poco...
 

Hola, estoy trabajando con 2000 medias móviles(MAs).

La tarea consiste en calcular el número de repeticiones del precio MA en Close[1].

- ¿Cómo puedo llevar a cabo esta tarea con un mínimo de recursos?

 
Top2n:

Hola, estoy trabajando con 2000 medias móviles (MAs).

La tarea consiste en calcular el número de repeticiones del precio MA en Close[1].

- ¿Cómo puedo llevar a cabo esta tarea con un mínimo de recursos?

Si no utilizamos el periodo 1 en los precios de cierre, el número de repeticiones será cero. Pero si nos planteamos entrar en un determinado rango, la tarea puede ser resoluble y más interesante. Alternativamente, encontramos los valores máximos y mínimos. Dividimos la diferencia por el rango. A continuación, definimos un rango que cae dentro de cada muving (consideraremos un array que corresponde a rangos o intervalos). El índice de la matriz con el máximo número de aciertos es el ganador. Tal vez no fui muy claro. Es mejor que la tarea se resuelva en un tema aparte. Puede haber varias variantes de solución. Y en el futuro alguien puede necesitarlos. Y aquí no encontrarán el final de la misma después.
 

Hola, leyendo el tutorial, llegué a las variables GV. No puedo entender cómo funcionan. Por ejemplo, el tutorial dice que las variables GV sólo pueden ser de tipo double. Bien, doblemente, doblemente). Pero luego al enumerar las funcionesGlobalVariableSet(),GlobalVariableGet(),GlobalVariableDel() escriben que una de ellas devuelve tiempo, otra devuelve bool, etc. Me confundí en mi cabeza, no entiendo cómo están organizados. También empecé a estudiar MQL4 recientemente, tengo mucha información nueva en mi cabeza. Si es posible, explíqueme un ejemplo de uno de los problemas de un libro de texto (o alguno propio):

Tarea 24. Varios Asesores Expertos trabajan simultáneamente en el terminal. El importe del depósito es de 10.000 dólares. El valor total de todas las órdenes abiertas no debe superar el 30% del importe del depósito. A cada asesor experto se le debe asignar la misma cantidad de dinero. Crear un programa de Asesor Experto que contenga el cálculo de la cantidad de dinero asignada para el comercio.

intExpertos;//Número de asesores expertos. de expertos

double Depo=10000.0, // Depósito especificado

Persent=30,// porcentaje dado

Dinero;// Fondos que se buscan.

string Quantity="GV_Quantity"; // Nombre de la variable GV

//--------------------------------------------------------------------

int init()/Especial. función init

{

Experts=GlobalVariableGet(Quantity); // Obtener el valor del texto.

Expertos=Expertos+1; // Número de expertos.

GlobalVariableSet(Quantity, Experts); // Nuevo valor

Dinero=Depo*Persent/100/Expertos; // Exp.

Alert("Para el experto en la ventana ", Symbol()," asignado ",Money);

volver;// Salir de init()

}

//--------------------------------------------------------------------

int inicio()// Especial. inicio de la función

{

int New_Experts= GlobalVariableGet(Quantity);// Nuevo número de exp.

if (¡Expertos!=Nuevos_Expertos) // Si ha cambiado

{

Experts=New_Experts; // El número actual es ahora

Dinero=Depo*Persent/100/Expertos; // Nuevo valor de exper.

Alert("Nuevo valor del experto ",Symbol(),": ",Money);

}

/*

...

Aquí se debe especificar el código principal del Asesor Experto,

que utiliza el valor de la variable Dinero

...

*/

volver;//salir de start()

}

//--------------------------------------------------------------------

int deinit()/Perfecto. función deinit()

{

si (Expertos ==1)// Si sólo hay un experto..

GlobalVariableDel(Quantity); //...borrar las variables GV

si no// De lo contrario..

GlobalVariableSet(Cantidad, Expertos-1); //...disminuir en 1

Alert("EA se descarga de la ventana ",Symbol()); // Notificar sobre la descarga

volver;// Salir de deinit()

}

 
Vinin:
Si no utiliza el periodo 1 en los precios de cierre, el número de repeticiones será cero. Pero si se cuenta con acertar algún rango, entonces el problema podría ser solucionable y más interesante. Como alternativa, podemos encontrar los valores máximos y mínimos. Dividimos la diferencia por el rango. A continuación, definimos un rango que cae dentro de cada muving (consideraremos un array que corresponde a rangos o intervalos). El índice de la matriz con el máximo número de aciertos es el ganador. Tal vez no fui muy claro. Es mejor que la tarea se resuelva en un tema aparte. Puede haber varias variantes de solución. Y en el futuro alguien puede necesitarlos. Y aquí no encontrarán el final de la misma después.

Tendré que pensar en ello, gracias.

tema aparte - https://forum.mql4.com/ru/66882

Razón de la queja: