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

 
Artyom Trishkin:

Y la opción correcta es, bueno, muy simple...

¿Y qué es?

 
Andrey Sokolov:

Entonces, ¿cuál?

Así de sencillo :)

Si no hay datos, sale hasta el siguiente tick.

 
Buenas tardes, ¿es posible registrar una señal en MT4 desde una cuenta demo? Gracias.
 
Artyom Trishkin:

Así de sencillo :)

Si no hay datos, sale hasta el siguiente tick.

No, escribí que los cálculos y las visualizaciones sobre ellos son necesarios a la vez.

Si habrá problemas con la solución existente, creo que, como alternativa, se puede escribir una función de cálculo de Bollinger, no parece difícil. Pero por ahora y lo que tenemos funciona.

 
Hola! ¿Cómo puedo saber el precio futuro del objeto gráficoOBJ_TREND? Por ejemplo, tenemos un rayo a la derecha y necesitamos saber en cada nueva barra el valor de este rayo. gracias!
 
MakarFX:

Esta estructura debe ser

Lo hice y funcionó. Gracias

 
Andrey Sokolov:

No, escribí que los cálculos y las visualizaciones son necesarios inmediatamente.

Si habrá problemas con la solución existente, entonces creo que, como una opción, se puede escribir una función para calcular el bollinger, no parece complicado. Pero por ahora el existente funciona.

El indicador, si está bien diseñado, siempre calcula primero todo el historial. ¿Qué tienes?

 
Artyom Trishkin:

¿Qué tienes?

No entiendo la pregunta.

 
Chicos, ayudadme a hacer una alerta a un indicador. Quiero probar una combinación de diferentes indicadores, pero necesito una función de alerta. Necesito que la alerta se muestre sólo una vez cuando aparezca la flecha. Si no es difícil por favor ayúdame a escribir esta función, no puedo hacerlo, las alertas aparecen un minuto entero o todo el tiempo, incluso mt4 se cuelga.
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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[])
  {
//---

    int limit=rates_total-prev_calculated-2;
   if(limit<1) return(0);
   for(int i=limit;i>=0;i--)
     {
     
      // Снимем показания индикатора
     double in1b = iCustom(NULL,0,"in1",1,i); // индикатор 1 стрелка вверх
     double in1s = iCustom(NULL,0,"in1",0,i); // индикатор 1 стрелка вниз
      
     
     
     double in2b = iCustom(NULL,0,"in2",0,i); // индикатор 2 стрелка вверх
     double in2s = iCustom(NULL,0,"in2",1,i); // индикатор 2 стрелка вниз
    
    Comment("in1v = "+DoubleToString(in1b)+"\n" +"in1n = "+DoubleToString(in1s)+"\n"
    +"in2v = "+DoubleToString(in2b)+"\n" +"in2n = "+DoubleToString(in2s));
     
    if(in1b > 2147483647 && in2b > 2147483647) // индикатор стрелка вверх
           {
           Sell[i]=low[i];
                      
          
          // Alert(Symbol()+"BUY";
              
           
           
           
         
           }
   
     if(in1s > 2147483647 && in2s > 2147483647) // индикатор стрелка вниз
           {
            Buy[i]=high[i];
            
              // Alert(Symbol()+"SELL М"+Period());
              
              
           
           }
         
   
     }
   
     
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
 
jarikn:
Chicos, ayudadme a hacer una alerta para un indicador. Quiero probar una combinación de diferentes indicadores, pero necesito una función de alerta. Necesito que la alerta se muestre sólo una vez cuando aparezca la flecha. Si no es difícil por favor ayúdame a escribir esta función, no puedo hacerlo, las alertas aparecen un minuto entero o todo el tiempo, incluso mt4 se congela.

Pruebe esto, parece que funciona

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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[])
  {
//---
   datetime show_alert=time[1];
   int limit=rates_total-prev_calculated-2;
   if(limit<1) return(0);
   for(int i=limit;i>=0;i--)
     {
     
      // Снимем показания индикатора
      double in1b = iCustom(NULL,0,"in1",1,i); // индикатор 1 стрелка вверх
      double in1s = iCustom(NULL,0,"in1",0,i); // индикатор 1 стрелка вниз
      
      double in2b = iCustom(NULL,0,"in2",0,i); // индикатор 2 стрелка вверх
      double in2s = iCustom(NULL,0,"in2",1,i); // индикатор 2 стрелка вниз
    
      Comment("in1v = "+DoubleToString(in1b)+"\n" +"in1n = "+DoubleToString(in1s)+"\n"
      +"in2v = "+DoubleToString(in2b)+"\n" +"in2n = "+DoubleToString(in2s));
     
      if(in1b > 2147483647 && in2b > 2147483647) // индикатор стрелка вверх
        {
         Sell[i]=low[i];
         if(show_alert!=time[i])
           {
            Alert(Symbol()+"BUY М"+Period()); show_alert=time[i];
           }
        }
   
      if(in1s > 2147483647 && in2s > 2147483647) // индикатор стрелка вниз
        {
         Buy[i]=high[i];
         if(show_alert!=time[i])
           {
            Alert(Symbol()+"SELL М"+Period()); show_alert=time[i];
           }
        }
     }
     
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
Razón de la queja: