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

 

No, no pitará todo el tiempo, es "array fuera de rango" cuando >=. ¿Por qué?

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   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(TimeCurrent()>=Input1 || TimeCurrent()>=Input2 || TimeCurrent()>=Input3)
           {
            BufferUP[i]=low[i]-10*Point;// в этой строке array out of range in 'a1.mq4' (75,28)

            Alert("__",TimeCurrent());
           }
        }
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
 
volyal:
Gracias. Sólo>= 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?

esta es la segunda parte de la pregunta y la segunda parte de la respuesta

Cuando la señal (alerta) se dispara, es necesario fijar que la señal ya se ha aplicado, se necesita una condición adicional:

 {
//---
   static bool alerton=true;
   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(alerton)
           {
            if(A>B)
              {
               if((TimeCurrent()>=Input1 || TimeCurrent()>=Input2 || TimeCurrent()>=Input3))
                 {
                  BufferUP[i]=low[i]-10*Point;
                  Alert("__",TimeCurrent());
                  alerton = false;
                 }
              }
           }
        }
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }

Usted tiene en su código condiciones claras para la activación de la alerta. Por lo general, los indicadores están pidiendo hacer una señal por barra, entonces usted necesita para "enlazar" el tiempo de la barra a una variable que almacenará el tiempo de activación de la alerta, es decir, estoy hablando de

static datetime alerton=0;

Busca ejemplos listos, creo que ahora lo entenderás.

 
Aleksey Vyazmikin:

Si muchas señales son iguales a la vez, agrúpalas y reprodúcelas como una sola. O recogerlos en matrices por tipo de señal y reproducirlos lentamente :)

Agruparlos en un array y reproducirlos en un script separado - eso está bastante claro, corresponde a tu primer consejo.

Pero agrupar y jugar como uno, no lo entiendo del todo. ¿Como un archivo de audio?

Cómo, por ejemplo, agrupar

if(Sobitie_1)

{
PlaySound("Symbol.wav");
PlaySound("Sobitie1.wav");
PlaySound("Period.wav");
}?


Como PlaySound("Símbolo Sobitie1 Period.wav");? En este caso, el número de archivos Símbolo * Sobitie * Período=3*10*7=210. Es demasiado):

Además, las señales de reproducción provienen de indicadores de diferentes TFs. Todavía no sé cómo tenerlo en cuenta.

 
Algus:

Agruparlo en un array y reproducirlo en un script separado - eso es generalmente comprensible, según tu primera sugerencia.

Pero lo de agruparse y jugar como uno, no lo entiendo del todo. ¿Como un archivo de audio?

Cómo, por ejemplo, agrupar

if(Sobitie_1)

{
PlaySound("Symbol.wav");
PlaySound("Sobitie1.wav");
PlaySound("Period.wav");
}?


As PlaySound("Símbolo Sobitie1 Period.wav");? En este caso, el número de archivos Símbolo * Sobitie * Período=3*10*7=210. Eso es mucho...):

Además, las señales de reproducción provienen de indicadores de diferentes TFs. Todavía no sé cómo tenerlo en cuenta.

Me refería a la frecuencia con la que entra la señal, es decir, según entiendo tienes el mismo y no el mismo sonido, mientras se reproduce el sonido se acumula en un buffer (puede ser en el gráfico acumular) la cola de reproducción, después de reproducir la cola se analizan y descartan aquellos sonidos que llegaron durante la reproducción del archivo y tienen el mismo sonido, es decir, no llevan en sí la nueva información. No conozco los detalles de su melófono :).

 

¡Buenas tardes!

Por favor, ayúdenme con este malentendido:

Establezco una condición para abrir una posición:

if(MathAbs(WPR1)<20.0)
        {
         if(MathAbs(WPR14)>44.0 && MathAbs(WPR14)<60.0 && op0<cl1) 
{ps2=true;ps1=false;ps3=false;ps4=false;ps5=false;ps6=false;ps7=false;ps8=false;Alert("условие ps2"); OpenSell();}
        }

Y en lugar de una posición con la banderaps2, abre dos, con las banderasps2 yps3. Y no importa lo que haya hecho, nada cambia. He comprobado todas las situaciones con alertas y nada. Qué pasa???? Parece que no hay nada malo, las banderas establecen diferentes niveles de TP. Pero aún así no es necesario un puesto extra.

Gracias.

 
novichok2018:

¡Buenas tardes!

Por favor, ayúdenme con este malentendido:

Establezco una condición para abrir una posición:

Y en lugar de una posición con la banderaps2, abre dos, con las banderasps2 yps3. Y no importa lo que haya hecho, nada cambia. He comprobado todas las situaciones con alertas y nada. Qué pasa???? Parece que no hay nada malo, las banderas establecen diferentes niveles de TP. Pero de todos modos, no necesito una posición extra.

Gracias.

Además, el registro dice que primero abrela ps3 y luegola ps2.

 
novichok2018:

¡Buenas tardes!

Por favor, ayúdenme con este malentendido:

Establezco una condición para abrir una posición:

Y en lugar de una posición con la banderaps2, abre dos, con las banderasps2 yps3. Y no importa lo que haya hecho, nada cambia. He comprobado todas las situaciones con alertas y nada. Qué pasa???? Parece que no hay nada malo, las banderas establecen diferentes niveles de TP. Pero de todos modos, no necesito una posición extra.

Gracias.

Vovochka vuelve de la escuela. Pregunta papá:

- ¿Qué nota has sacado hoy?

- Tengo una "D" en ciencias.

- ¿Por qué?

- El profesor te muestra la cola de un pájaro y te dice que adivines qué tipo de pájaro es...

Este padre va a la escuela, abre la puerta del aula y apunta con su culo hacia allí.

- ¿Quién diablos es ese...

...le pregunta al profesor...

- Adivina tú mismo.


Este es exactamente su código... ))))

 
Alexey Viktorov:

Vovochka vuelve a casa de la escuela. Pregunta papá:

- ¿Qué nota has sacado hoy?

- Tengo una "D" en ciencias.

- ¿Por qué?

- El profesor te muestra la cola de un pájaro y te dice que adivines qué tipo de pájaro es...

Este padre va a la escuela, abre la puerta del aula y apunta con su culo hacia allí.

- ¿Quién diablos es ese...

...le pregunta al profesor...

- Adivina tú mismo.


Ese es exactamente su código... ))))

Ljoshenka, de quinto curso, no acude a las primeras clases para ayudar, sino para alborotar.

Esa es exactamente su respuesta.

 
novichok2018:

Además, el registro dice que abre primerola ps3 y luegola ps2.

Eso es, lo he resuelto. Resultó ser sencillo: en las alertas con la condiciónps8 en lugar de 8 había 3. Y la condición 8 es más ancha que la condición 2 y está más alta en las líneas. Arreglado y reducido, todo está bien.

Pero no hay que mover la cola, este hilo es para novatos. Un verdadero experto sin detalles debería entender dónde está el error aproximadamente, o al menos hacer preguntas orientativas, de lo contrario no debería responder en absoluto, en lugar de hacer alarde de pseudo-torpeza.

 
Aleksey Vyazmikin:

Me refería a la frecuencia con la que entra la señal, es decir, según entiendo tienes el mismo y no el mismo sonido, mientras se reproduce el sonido se acumula en un buffer (se puede en la gráfica acumular) la cola para reproducir, después de reproducir la cola analizamos y descartamos aquellos sonidos que llegaron en el momento de reproducir el archivo y tienen el mismo sonido, es decir, no llevan la nueva información. No conozco los detalles de qué tipo de melófono tienes ahí :)

Hay un indicador que se mantiene en y todos los TFs de trabajo y las monedas. Trabajo en intradía, casi scalping, en 2-3 instrumentos. Utilizo las alertas sonoras para no perderme ningún evento y no se me caen los ojos al final del día.

De hecho, hay entre 10 y 14 indicadores que tratan sobre Windows en la actividad. Resulta que tenemos que construir la cola de los diferentes indicadores que funcionan de forma independiente, lo que no es una tarea sencilla para el terminal o su programación.

Este es el tipo de "música" que recibimos):

Razón de la queja: