Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 1119

 
pivomoe:
¿Puedes decirme cómo hacer una pausa de 1 milisegundo? Sleep(1) no es una opción porque hace una pausa de 0 a 50 milisegundos más o menos. Cuando se llama con el parámetro 1.
En la documentación está escrito, que en relación con los matices técnicos para recibir una pausa de menos de 16-18 milisegundos no es real. Esto está relacionado con el hardware, el sistema operativo, etc.
 
BlackTomcat:
En la documentación está escrito que, debido a matices técnicos, no es realista conseguir una pausa de menos de 16-18 milisegundos. Esto está relacionado con el hardware, el sistema operativo, etc.
Tengo alrededor de 1, a veces 2,3, dependiendo de la carga.
 
Aliaksandr Hryshyn:
Tengo alrededor de 1, a veces 2,3, dependiendo de la carga de trabajo.

? google: winds system timer, para preguntas o malentendidos por qué menos de 16ms no es posible, en resumen - winds no es un sistema en tiempo real, sólo el temporizador de winds está disponible para el software

 
Igor Makanu:

? google: winds system timer, para preguntas o malentendidos por qué menos de 16ms no es posible, en resumen - winds no es un sistema en tiempo real, sólo el temporizador de winds está disponible para el software

16 es mucho, pero soportable. Pueden ser más de 50.
 
pivomoe:
16 es mucho, pero soportable. A veces más de 50.

Una vez más, el viento no es un sistema en tiempo real, no hay suficientes recursos OS, su temporizador se retrasará, pero todavía se ejecutará, el uso de intervalos de tiempo lógico, yo no uso menos de 100 ms, y por lo general el uso de 400 ms, incluso para una llamada dll con gráficos y procesamiento de clics casillas de verificación 400 ms no se nota en absoluto, marcó 500 ms - sí es ya visible que no hay respuesta

En mi opinión, no esperaría que un temporizador garantizara menos de 100 ms.

 
Menos de 100 ms es un fastidio. 400 es mejor.
 

¿Pueden decirme cómo mostrar un mensaje de información en la pantalla sin esperar a que se pulse el botón OK?

Por supuesto, existe la función MessageBox, pero ésta espera una reacción y detiene la ejecución del programa.

 
pivomoe:

¿Pueden decirme cómo mostrar un mensaje de información en la pantalla sin esperar a que se pulse el botón OK?

Por supuesto, existe la función MessageBox, pero ésta espera una reacción y detiene la ejecución del programa.

Sí Alerta, creo. Sólo asegúrese de leer el último párrafo.

https://www.mql5.com/ru/docs/common/alert

Документация по MQL5: Общие функции / Alert
Документация по MQL5: Общие функции / Alert
  • www.mql5.com
[in]  Любые значения, разделенные запятыми. Для разделения выводимой информации на несколько строк можно использовать символ перевода строки "\n" либо "\r\n". Количество параметров не может превышать 64. Массивы нельзя передавать в функцию Alert(). Массивы должны выводиться поэлементно. Данные типа double выводятся с 8 десятичными цифрами после...
 
BlackTomcat:

Sí Alerta, creo. Sólo asegúrese de leer el último párrafo.

https://www.mql5.com/ru/docs/common/alert

Gracias. Justo lo que necesito.

 

Buenas tardes. Por favor, aconséjenme o facilítenme un enlace. Cómo organizar un indicador que muestre los cambios de saldo como un gráfico de velas en una ventana separada. He hecho lo más sencillo, el indicador copia los cambios de precio, pero ahora cómo sustituir los cambios de precio por los cambios de saldo, es decir, sustituir las matrices que utiliza el indicador.

Si tienes alguna idea, por favor compártela, te agradeceré incluso una descripción general del algoritmo, me falta experiencia, no sé por dónde empezar.

//+------------------------------------------------------------------+
//|                                                iBalans_Logic.mq5 |
//|                                              Sergei Voicehovskii |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Sergei Voicehovskii"
#property link      ""
#property version   "1.00"
//------------------------------------------------------------------
#property indicator_separate_window
#property indicator_buffers 6
#property indicator_plots   1
#property indicator_label1  "iBalans_Logic"
#property indicator_type1   DRAW_COLOR_CANDLES
#property indicator_color1  clrGray,clrDodgerBlue,clrSandyBrown
//--- indicator buffers
//--- индикаторный буфер
double opn[],hi[],lo[],cls[],clr[],lot[],type[];
//------------------------------------------------------------------
// Custom indicator initialization function
// Функция инициализации пользовательского индикатора
//------------------------------------------------------------------
int OnInit()
  {
   SetIndexBuffer(0,opn,INDICATOR_DATA);
   SetIndexBuffer(1,hi,INDICATOR_DATA);
   SetIndexBuffer(2,lo,INDICATOR_DATA);
   SetIndexBuffer(3,cls,INDICATOR_DATA);
   SetIndexBuffer(4,clr,INDICATOR_COLOR_INDEX);
   SetIndexBuffer(5,lot,INDICATOR_CALCULATIONS);
   SetIndexBuffer(6,type,INDICATOR_CALCULATIONS);
   IndicatorSetString(INDICATOR_SHORTNAME,"iBalans_Logic ("")");
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| 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[])
{
//---
Comment("-------------------------", 
        "\n rates_total        = ",rates_total,
        "\n prev_calculated = ",prev_calculated,
        "\n ---------------------- "
       ); 
//---
int i=(int)MathMax(prev_calculated-1,0);

   for(;i<rates_total && !_StopFlag; i++)
     {
     
       opn[i] = open[i];
       cls[i] = close[i];
        hi[i] = high[i];
        lo[i] = low[i];
       clr[i] = (cls[i]>opn[i])?1:(cls[i]<opn[i])?2:0;
     }
//--- return value of prev_calculated for next call
//--- возвращаемое значение соответствует моменту prev_calculated для следующего вызова
return(rates_total);
}
//+------------------------------------------------------------------+

https://charts.mql5.com/22/192/eurusd-m1-alpari-international-2.png