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

 
Crosswert:


Ja, ja... Aquí hay una mentira...

El problema resultó estar en la función OpenOrders(). Me he olvidado completamente de quitar el control de la apertura de la orden en la ruptura de una vela (barra):

if (Volume[0] > 1) return;

Entonces, en qué TF el Asesor Experto estaba probando, estaba abriendo órdenes en esos minutos...

Estúpido en general, en un duro...

Gracias...

Suele ocurrir)) Me alegro de haber sido de ayuda)))
 
Crosswert:


if (Volume[0] > 1) return;


No utilice este tipo de comprobación para detectar la apertura de una nueva barra, no funcionará bien en la cuenta, sólo en el probador. Es necesario comprobar por tiempo de barra o por el número de barras en el gráfico

 
Crosswert:


Ja, ja... Aquí hay una mentira...

El problema resultó estar en la función OpenOrders(). Me he olvidado completamente de quitar el control de la apertura de la orden en la ruptura de una vela (barra):

if (Volume[0] > 1) return;

Entonces, en qué TF el Asesor Experto estaba probando, estaba abriendo órdenes en esos minutos...

Estúpido en general, en un duro...

Gracias...

Mejor así(https://www.mql5.com/ru/forum/138609/page482):
bool CheckOpenM15() // Функция возвращает истину при появлении нового бара на М15 (Использовать только в советние)
{
   static int PrevTime=0;
   if (PrevTime==iTime(NULL, PERIOD_M15,0)) return(false);
   PrevTime=iTime(NULL, PERIOD_M15,0);
   return(true);
}
 
Mejor aún, pasar el nombre del TF deseado a la función
 
artmedia70:
Mejor aún, pase el nombre del TF deseado a la función

Esto es sólo un ejemplo.
 


Ya sabes, con / PrevTime / intenté algo una vez, pero nunca funcionó. Creo que no pude poner el código en el lugar correcto.

Con / if (Volume[0] > 1) return; / todo es mucho más sencillo. Aquí, como creo, todo funciona para la TF seleccionada. No sé si funciona en una demo pero no he notado errores, fallos y demás detalles a la hora de abrir órdenes.

Pero hace tiempo que no utilizo el control de apertura de órdenes en una barra nueva. Hemos conseguido construir la función de control de posiciones abiertas. Junto con las órdenes de apertura en un momento dado, no necesitamos un control de barras como tal.

El código es simplemente viejo. Al parecer, me olvidé de las limitaciones y lo introduje sin más y seguí usándolo...

 

¿Puede decirme cómo obtener el valor del precio de los niveles de Fibonacci?

Según la condición, una vez que el precio ha cruzado los niveles de Fibonacci especificados, se abre una operación de compra o venta.

Un objeto Fibonacci es dibujado por un Asesor Experto utilizando la función de Kim: https://www.mql5.com/ru/forum/107476/page107#606564

Se dibuja sin problemas. Pero entonces, ¿cómo sabemos el valor del precio del nivel especificado?

Esta función no parece funcionar:

OBJPROP_FIRSTLEVEL+n 210+n int Obtiene/establece el valor del nivel del objeto Fibonacci con índicen. El índice n puede ser de 0 a (número de niveles -1), pero no puede ser superior a 31


¿Es posible? ¿O debemos calcular los precios de cada nivel por separado a partir de OBJPROP_PRICE1 y OBJPROP_PRICE2?

Esto es una tontería. Estuve despierto la mitad de la noche devanándome los sesos... Por supuesto, la noche no es probablemente el mejor momento para buscar soluciones.

Ayuda, por favor, buena gente.

 
Lazarechek:

¿Puede decirme cómo obtener el valor del precio de los niveles de Fibonacci?

Según la condición, una vez que el precio ha cruzado los niveles de Fibonacci especificados, se abre una operación de compra o venta.

Un objeto Fibonacci es dibujado por un Asesor Experto utilizando la función de Kim: https://www.mql5.com/ru/forum/107476/page107#606564

Se dibuja sin problemas. Pero entonces, ¿cómo sabemos el valor del precio del nivel especificado?

Esta función no parece encajar:

OBJPROP_FIRSTLEVEL+n 210+n int Obtiene/establece el valor del nivel del objeto Fibonacci con índicen. El índice n puede ser de 0 a (número de niveles -1), pero no puede ser superior a 31


¿Es posible? ¿O debemos calcular los precios de cada nivel por separado a partir de OBJPROP_PRICE1 y OBJPROP_PRICE2?

Esto es una tontería. Estuve despierto la mitad de la noche devanándome los sesos... Por supuesto, la noche no es probablemente el mejor momento para buscar soluciones.

¡Ayuda, buena gente!

Ya había una pregunta similar:

Quiero obtener el precio en el nivel Fibo de 23.6%
double flevel236 = ObjectGetDouble(0, "Fibo",OBJPROP_LEVELVALUE,1); Este da 0,236, es decir, no el precio, sino el nivel.
Me pueden decir cómo obtener el precio del nivel. Gracias.

Y la respuesta también se dio:

Sólo dos operaciones aritméticas. Multiplicación (0,236 multiplicado por la diferencia entre los precios del nivel cero y del nivel uno) y, a continuación, suma (el resultado de la multiplicación se añade al precio del nivel cero).

 
Escribí un indicador, lo ejecuté, todo se congeló y el mensaje - esperar a la actualización (sin ciclos interminables). Reinicio el mt el resultado es el mismo. Está claro que puedo borrar estos indicadores antes de lanzarlos y luego insertarlos, pero cada vez para resolver el problema de esta manera no es una opción. ¿Tal vez hay una clave para iniciar desde la línea de comandos para arrancar en la interfaz por defecto?
 
artmedia70:

Ya se ha planteado una pregunta similar:

Quiero obtener el precio en el nivel Fibo de 23.6%
double flevel236 = ObjectGetDouble(0, "Fibo",OBJPROP_LEVELVALUE,1); Este da 0,236, es decir, no el precio sino el nivel.
Me pueden decir cómo obtener el precio del nivel. Gracias.

Y la respuesta también se dio:

Sólo dos operaciones aritméticas. Multiplicación (0,236 multiplicado por la diferencia entre los precios del nivel cero y del nivel uno) y, a continuación, suma (el resultado de la multiplicación se añade al precio del nivel cero).




Gracias amablemente) Eso es lo que pensé en principio)


"0,236 multiplicado por la diferencia entre los precios de cero y el primer nivel" - sólo que probablemente sería más correcto decir "entre los precios de cero y el último nivel".

Razón de la queja: