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

 
MakarFX:

¿Cómo puedo determinar la carga que un EA supone para el servidor?

En cada tic pregunta por el Ask, Bid, Spread, TICKVALUE

Si he entendido bien, el perfilador ayudará. Pero debemos entender que la carga no es lo mismo que la carga. Es el tiempo dedicado a la ejecución de peticiones o a la carga de la CPU. Si hay un Asesor Experto por símbolo en una ventana, está bien. Pero si hay 120 ventanas a 40 símbolos y así en 10 terminales en una máquina, la máquina podría congelarse).

 
Aleksei Stepanenko:

No sé, podrías probarlo en la batalla. ¿O quizás como opciónINT_MAX?


Sí, así es como lo calculo:

Y de fecha a fecha incluyendo los fines de semana es otra cosa.

Puntos por segundo, sí es legible. Y en los TF más bajos las velocidades son mayores y el alcance es menor.

_     ;qstr7_41;_;EURUSD;_TF_;1; Имя файла ;QstrV.csv; Локальное время ;2020.10.23 15:34:25
2020.10.23 14:34:20; [i]= ;13; VTrend[i] = ;25; SumVTrend= ;97; AbsVTrend= ;341; pos= ;8;SumVTrendPos= ;339; neg= ;7; SumVTrendNeg= ;-345
2020.10.23 14:34:20; [i]= ;2; VTrend1[i] = ;272; SumVTrend1= ;17; AbsVTrend1= ;137; pos1= ;2;SumVTrendPos1= ;-84; neg1= ;2; SumVTrendNeg1= ;-84
_     ;qstr7_41;_;EURUSD;_TF_;5; Имя файла ;QstrV.csv; Локальное время ;2020.10.23 15:34:36;
 2020.10.23 14:34:31; [i]= ;15; VTrend[i] = ;414; SumVTrend= ;47; AbsVTrend= ;124; pos= ;9;SumVTrendPos= ;160; neg= ;8; SumVTrendNeg= ;-82
2020.10.23 14:34:31; [i]= ;2; VTrend1[i] = ;-32; SumVTrend1= ;63; AbsVTrend1= ;83; pos1= ;2;SumVTrendPos1= ;37; neg1= ;2; SumVTrendNeg1= ;-32
_     ;qstr7_41;_;EURUSD;_TF_;1440; Имя файла ;QstrV.csv; Локальное время ;2020.10.26 15:42:42;
2020.10.26 14:42:42; [i]= ;14; VTrend[i] = ;-26; SumVTrend= ;3; AbsVTrend= ;9; pos= ;9;SumVTrendPos= ;9; neg= ;7; SumVTrendNeg= ;-11
2020.10.26 14:42:42; [i]= ;1; VTrend1[i] = ;-7; SumVTrend1= ;-7; AbsVTrend1= ;7; pos1= ;1;SumVTrendPos1= ;0; neg1= ;2; SumVTrendNeg1= ;-7
 
Valeriy Yastremskiy:

Si he entendido bien, un perfilador ayudará. Pero hay que entender que carga no es lo mismo que carga. Es el tiempo dedicado a la ejecución de la consulta o la carga de la CPU en la máquina. Si hay un Asesor Experto por símbolo en una ventana, está bien. Y si hay 120 ventanas a 40 símbolos y así en 10 terminales en una máquina, la máquina podría congelarse).

Ya hemos discutido si los datos del terminal de MQL4 deben ser accedidos muchas veces, entonces OrderSelecthttps://www.mql5.com/ru/forum/342989#comment_16743716

de la misma manera puedes probar a obtener el precio actual - creo que también puedes usarlo 100500 veces por tick, ya que la salida se incrementará millones de veces por segundo


Cuantos más símbolos haya en la ventana de observación del mercado, mayor será la carga en el propio terminal, y respectivamente, si llama a los datos de muchos símbolos diferentes, entonces también obtendrá retrasos

es decir, si se utiliza el terminal con sensatez, nada se congelará - en la ventana de vigilancia del mercado hay diez símbolos que se utilizan


No he comprobado cuántos gráficos puedes abrir al mismo tiempo, pero creo que si limitas el historial a 1000 barras, entonces creo que el terminal probablemente abrirá un par de docenas de ventanas de gráficos sin ningún problema

 

¡Buenos días a todos!

He empezado a estudiar mql5 (después de mql4). Hay un grupo de funciones en mql4 llamado fecha y hora. Hay el mismo grupo en cinco. Pero este grupo de funciones en cinco es mucho menor que en cuatro. No hay funciones en cinco que devuelvan los valores de la hora actual, los minutos... y otras funciones.
Por ejemplo, en cuarta existía la función Hour(), que devolvía el valor de la hora actual. El cinco no tiene esa función.
PREGUNTA

Qué funciones del cinco son análogas a Hour() y otras funciones del grupo de funciones Date and Time del cuatro que no están en el grupo similar del cinco.

Gracias por su ayuda.

 
Igor Makanu:

Ya hemos discutido si es necesario acceder repetidamente a los datos del terminal desde MQL4, entonces OrderSelecthttps://www.mql5.com/ru/forum/342989#comment_16743716

creo que también es posible utilizarlo 100500 veces por tick, porque la salida se incrementará millones de veces por segundo


cuantos más símbolos haya en la ventana de observación del mercado, mayor será la carga en el propio terminal, y respectivamente, si llama a los datos de un montón de símbolos diferentes, entonces también obtendrá retrasos

es decir, si se utiliza el terminal con sensatez, nada se congelará - en la ventana de vigilancia del mercado hay diez símbolos que se utilizan


No he comprobado cuántos gráficos puedes abrir al mismo tiempo, pero creo que si limitas el historial a 1000 barras, el terminal probablemente abrirá un par de docenas de ventanas de gráficos sin problemas

(Gracias por el recordatorio))) Me refiero a que con peticiones razonables todo debería funcionar, es decir, peticiones de bajo coste (en términos de tiempo de ejecución y carga de CPU)).

 
ANDREY:

¡Buenos días a todos!

He empezado a estudiar mql5 (después de mql4). Hay un grupo de funciones en mql4 llamado fecha y hora. Hay el mismo grupo en cinco. Pero este grupo de funciones en cinco es mucho menor que en cuatro. No hay funciones en cinco que devuelvan los valores de la hora actual, los minutos... y otras funciones.
Por ejemplo, en cuarta existía la función Hour(), que devolvía el valor de la hora actual. El cinco no tiene esa función.
PREGUNTA

Qué funciones en cinco son análogas a Hour() y otras funciones del grupo de funciones de fecha y hora en cuatro que no están en el grupo similar en cinco.

Gracias por su ayuda.

utilicehttps://www.mql5.com/ru/docs/dateandtime/timecurrent

segunda versión de la llamada a la función

datetime  TimeCurrent(
   MqlDateTime&  dt_struct      // переменная типа структуры
   );
en general, eshttps://www.mql5.com/ru/docs/dateandtime/timetostruct
 
Un consejo para un 4k. Cómo devolver las coordenadas del clic del ratón en el gráfico, preferiblemente por número de barra. Sólo puedo encontrar las coordenadas donde se lanzó el script.
 
Valeriy Yastremskiy:

Gracias, eso me recuerda))) Sí, muchas cosas que no entendí en su momento) sólo quería decir que con peticiones razonables todo debería funcionar. Son peticiones baratas en coste (tiempo de ejecución y carga de CPU)).

Si el código está "sucio", puedes fastidiar cualquier sistema

y si se utiliza razonablemente, donde el acceso al precio Ask/Bid se produce incluso unas decenas de veces por tick, entonces no afectará al rendimiento del EA (máximo 1-2%)

es decir, la lógica de utilización de los recursos (o de las llamadas de las funciones del sistema/entorno del terminal) debería ser, si el algoritmo implica acceder a los precios Ask/Bid varios miles de veces por tick, entonces.... lo más probable es que deba reconsiderar el propio algoritmo, o bien, recordar los valores deAsk/Bid una vez antes de calcular el algoritmo




Valeriy Yastremskiy:
Por favor, avise para 4k. Coordenadas del clic del ratón en un gráfico cómo volver, preferiblemente por un número de barra. Encuentra sólo las coordenadas donde lanzaron el guión.

probablemente busqueChartXYToTimePrice https://docs.mql4.com/ru/chart_operations/chartxytotimeprice

sólo se habla dehttps://www.mql5.com/ru/forum/353726

aquí hay otro hilo que también habla de los clicshttps://www.mql5.com/ru/forum/344607

 
Igor Makanu:

si el algoritmo implica referirse a los precios Ask/Bid varios miles de veces por tick, entonces.... lo más probable es que deba reconsiderar el propio algoritmo, o bien, recordar los valores de Ask/Bid una vez antes de calcular el algoritmo




quizás buscarChartXYToTimePrice https://docs.mql4.com/ru/chart_operations/chartxytotimeprice

sólo se habla dehttps://www.mql5.com/ru/forum/353726

aquí hay otro hilo que también habla de los clicshttps://www.mql5.com/ru/forum/344607

En general, si tenemos precios en el tick, podemos trabajar con ellos hasta el final de OnTick, si no es crítico. Y limitadores para evitar el deslizamiento).

Quería hacer clic en una vela y escribir su valor en un archivo.

CHARTEVENT_MOUSE_MOVE

 
Valeriy Yastremskiy:

Generalmente, si tenemos precios en el tick, podemos trabajar con ellos hasta el final del OnTick, si no es crítico. Y limitadores para ayudar contra el deslizamiento)

Quiero hacer clic en una vela y guardar su valor en un archivo.

CHARTEVENT_MOUSE_MOVE

Tal vez sea así como quieres determinar el precio y la hora del bar:

void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
{
   if(id == CHARTEVENT_CLICK)
   {
      int window = 0;
      datetime time;
      double   price;
      if(ChartXYToTimePrice(0, (int)lparam, (int)dparam, window, time, price))
      {
         Print("time = ", time, " ,price = ", price);
      }
   }
}
o más bien se trata de las coordenadas del clic del ratón en los valores tiempo + precio en el gráfico, la barra debe ser definida a través deiBarShift()
Razón de la queja: