Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 776

 

Buenas tardes, usuarios del foro.

Por favor, ayúdenme a organizar correctamente el sonido en el indicador. Los medios estándar de MT4 no funcionan bien.

Según tengo entendido, en el momento del inicio de la barra de diferentes gráficos hay un flujo de señales que se reproducen en Windows. No se ponen en cola sino que se juegan los últimos y el resto se pierden. De las dos funciones adyacentes PlaySound(), sólo se reproduce una. Crea un desorden en los mensajes, y la organización de los mismos provoca la carga del terminal.

La solución parece ser el uso de waveOut API o Winampa. Permite formar algún tipo de lista de reproducción en el indicador y pasar la reproducción al dispositivo externo. Debe aliviar la carga en el terminal. En general, el problema está en la organización de la cola.
Buscado en Google. No he encontrado ninguna descripción detallada para dummies, y yo mismo no puedo averiguarlo.
Si alguien ha resuelto este problema, o conoce una descripción detallada, por favor avise. Creo que esto será de interés para muchos.

 

¡¡¡¡Alguien puede ayudar !!!!

Me podéis decir cómo hacer en MT4 para que en la parte derecha del gráfico de precios, en los niveles de stop, se resalte el precio igual que en las líneas ask y bid????

Archivos adjuntos:
27c3ncf5hf2.jpg  355 kb
 
zctac:

¡¡¡¡Alguien puede ayudar !!!!

Me podéis decir cómo hacer en MT4 para que en la parte derecha del gráfico de precios, en los niveles de stop, se resalte el precio de la misma forma que las líneas ask y bid????

Muestra su línea horizontal (OBJ_HLINE) al precio de la orden de stop.

Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Типы объектов / OBJ_HLINE
Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Типы объектов / OBJ_HLINE
  • www.mql5.com
//| Создает горизонтальную линию                                     |                 price=0,                         width=1,            //| Перемещение горизонтальной линии                                 | //| Удаляет горизонтальную линию                                     |...
 
Algus:

Buenas tardes, usuarios del foro.

Por favor, ayúdenme a organizar correctamente el sonido en el indicador. Los medios estándar de MT4 no funcionan bien.

Según tengo entendido, en el momento del inicio de la barra de diferentes gráficos hay un flujo de señales que se reproducen en Windows. No se ponen en cola sino que se juegan los últimos y el resto se pierden. De las dos funciones adyacentes PlaySound(), sólo se reproduce una. Crea un desorden en los mensajes, y la organización de los mismos provoca la carga del terminal.

La solución parece ser el uso de la API waveOut o las herramientas Winampa. Esto debería aliviar la carga del terminal. En general, el problema está en la organización de la cola.
Buscado en Google. No he encontrado ninguna descripción detallada para dummies, y yo mismo no puedo averiguarlo.
Si alguien ha resuelto este problema, o conoce una descripción detallada, por favor avise. Creo que esto será de interés para muchos.

Es más fácil de hacer en el Asesor Experto o en el script de bucle, porque Sleep() funciona allí, a diferencia del indicador y entre la reproducción de melodías este deslizamiento se puede establecer para esperar hasta el final de la música.

Y llamar al indicador desde un script o un EA.
 
Aleksey Vyazmikin:

Es más fácil hacer esto en un asesor auxiliar o en un script de bucle, ya que Sleep() funciona allí, a diferencia de lo que ocurre en un indicador, y puede poner este deslizamiento entre las melodías que se reproducen para esperar hasta que la música termine.

El indicador puede ser llamado desde un script o Asesor Experto.

Gracias, lo pensaré, tal vez como una opción para salir.

El problema no es la duración, sino la cola. Los mensajes son cortos, pero mucho y al mismo tiempo. De nuevo, pone una tensión en el terminal. Me gustaría dar esto al sistema. Allí este problema parece resolverse con los medios estándar de Windows.

Aunque... tal vez.

 
Algus:

Gracias, me lo pensaré y veré si puedo solucionarlo.

El problema no es la longitud, sino la cola. Los mensajes son cortos, pero muchos a la vez. De nuevo, pone una carga en el terminal. Me gustaría dar esto al sistema. Esta tarea parece estar resuelta por los medios estándar de Windows.

Aunque. tal vez.

Si llegan muchas señales iguales a la vez, agrúpalas y reprodúcelas como una sola. O recogerlas en matrices por tipo de señal y ejecutarlas paso a paso :)

 

En una fecha y hora determinadas hay que comprobar la señal. ¿Qué ocurre?

input datetime Input1=D'23.02.2019 08:00:27';
input datetime Input2=D'08.03.2019 09:30:20';
input datetime Input3=D'01.04.2019 12:30:27';
______________________________________________

{
//---
 A=1;B=2;
   if(rates_total<2) return(0);
     {
      int limit=rates_total-prev_calculated;
      if(limit>1) 
        {
         ArrayInitialize(BufferUP,EMPTY_VALUE);
         ArrayInitialize(BufferDN,EMPTY_VALUE);
        }
      for(int i=limit; i>=0; i--) 
        {
         if(A>B&&(TimeCurrent()==Input1 || TimeCurrent()==Input2 || TimeCurrent()==Input3))
           {
            BufferUP[i]=low[i]-10*Point;
            Alert("__",TimeCurrent());
           }
        }
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
 
Artyom Trishkin:

Emite su línea horizontal (OBJ_HLINE) al precio de la orden de stop.

Gracias por su respuesta.
 
volyal:

En una fecha y hora determinadas hay que comprobar la señal. ¿Qué ocurre?

if( (A>B) && (TimeCurrent()==Input1 || TimeCurrent()==Input2 || TimeCurrent()==Input3) )

Tiene condiciones "duras", por lo que probablemente no esté acertando con el valor real de la expresión completa.

Los indicadores y los Asesores Expertos trabajan sobre la recepción del tick, pero el tick puede ocurrir un segundo después de su condición

debe tratar de escribir tales condiciones en >=

SZY: Bueno, en general, cuando escribo condiciones lógicas complejas, suelo tratar de no perder la lógica de seguir las condiciones, entonces puedo reducirlas a una forma más compacta, es más fácil encontrar errores lógicos en caso de que ocurran en la etapa de depuración

if(A>B)
{
   if(TimeCurrent()==Input1 || TimeCurrent()==Input2 || TimeCurrent()==Input3))
        {
            BufferUP[i]=low[i]-10*Point;
            Alert("__",TimeCurrent());
        }
}

pero eso es cuestión de gustos.

 
Igor Makanu:

Tienes condiciones "duras", por lo que lo más probable es que no aciertes con el verdadero valor de la expresión completa

Los indicadores y los expertos trabajan sobre la recepción de la garrapata, pero la garrapata puede llegar un segundo más tarde que su condición

debe tratar de escribir tales condiciones en >=

SZY: Bueno, en general, cuando escribo condiciones lógicas complejas, suelo tratar de no perder la lógica de seguir las condiciones, entonces puedo reducirlas a una forma más compacta, es más fácil encontrar errores lógicos en caso de que ocurran en la etapa de depuración

pero eso es cuestión de gustos.

Gracias. Simplemente>= no es posible, habrá una señal constante después de la primera fecha, es necesario establecer el rango de tiempo. ¿Cómo se fija?