Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 1283

 
MakarFX:

Como posso determinar a carga que um EA coloca no servidor?

A cada tic tac que pede Ask, Bid, Spread, TICKVALUE

Se eu entendi corretamente, o perfilador ajudará. Mas devemos entender que a carga não é a mesma que a carga. É o tempo gasto na execução do pedido ou na carga da CPU. Se houver um Expert Advisor por símbolo em uma janela, tudo bem. Mas se houver 120 janelas a 40 símbolos e assim em 10 terminais em uma máquina, a máquina pode congelar).

 
Aleksei Stepanenko:

Eu não sei, você poderia tentar em batalha. Ou talvez como uma opçãoINT_MAX?


Sim, é assim que eu calculo:

E de data em data, inclusive fins de semana, é algo mais.

Pontos por segundo, sim, é legível. E nas TFs mais baixas, as velocidades são maiores e o alcance é 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:

Se eu entendi corretamente, um profiler irá ajudar. Mas você tem que entender que carga não é o mesmo que carga. Este é o tempo gasto na execução da consulta ou carga da CPU na máquina. Se houver um Expert Advisor por símbolo em uma janela, tudo bem. E se houver 120 janelas a 40 símbolos e assim em 10 terminais em uma máquina, a máquina pode congelar).

Já discutimos se os dados do terminal da MQL4 devem ser acessados muitas vezes, então OrderSelecthttps://www.mql5.com/ru/forum/342989#comment_16743716

da mesma forma que você pode testar o preço atual - acho que você pode usá-lo 100500 vezes por tick também, uma vez que a produção será aumentada milhões de vezes por segundo


quanto mais símbolos na janela de observação do mercado, maior será a carga no próprio terminal e, respectivamente, se você chamar dados de muitos símbolos diferentes, então você também receberá desfasamentos

ou seja, se você usar o terminal de forma sensata, nada irá congelar - na janela do mercado há dez símbolos que você usa


ainda não verifiquei quantos gráficos você pode abrir ao mesmo tempo, mas acho que se você limitar o histórico a 1000 barras, então acho que o terminal provavelmente abrirá algumas dezenas de janelas de gráficos sem nenhum problema

 

Bom dia a todos!

Comecei a estudar o mql5 (depois do mql4). Há um grupo de funções em mql4 chamado data e hora. Há o mesmo grupo em cinco. Mas este grupo de funções em cinco é muito menor do que em quatro. Não há funções em cinco que retornem valores da hora atual, minutos ... e outras funções.
Por exemplo, na quarta, havia a função Hora(), que retornava o valor da hora atual. Cinco não tem tal função.
PERGUNTA

Que funções em cinco são análogas a Hora() e outras funções do grupo de funções Data e Hora dos quatro que não estão no grupo semelhante em cinco.

Obrigado por sua ajuda.

 
Igor Makanu:

Já discutimos se é necessário acessar repetidamente os dados do terminal da MQL4, então OrderSelecthttps://www.mql5.com/ru/forum/342989#comment_16743716

acho que também é possível utilizá-lo 100500 vezes por segundo, porque a produção será aumentada milhões de vezes por segundo


quanto mais símbolos na janela de observação do mercado, maior será a carga no próprio terminal e, respectivamente, se você chamar dados de muitos símbolos diferentes, então você também receberá desfasamentos

ou seja, se você usar o terminal de forma sensata, nada irá congelar - na janela do mercado há dez símbolos que você usa


ainda não verifiquei quantos gráficos você pode abrir ao mesmo tempo, mas acho que se você limitar o histórico a 1000 barras, então o terminal provavelmente abrirá algumas dezenas de janelas de gráficos sem nenhum problema

(Obrigado pelo lembrete))) Quero dizer que com pedidos razoáveis tudo deve funcionar, ou seja, pedidos de baixo custo (em termos de tempo de execução e carga de CPU).

 
ANDREY:

Bom dia a todos!

Comecei a estudar o mql5 (depois do mql4). Há um grupo de funções em mql4 chamado data e hora. Há o mesmo grupo em cinco. Mas este grupo de funções em cinco é muito menor do que em quatro. Não há funções em cinco que retornem valores da hora atual, minutos ... e outras funções.
Por exemplo, na quarta, havia a função Hora(), que retornava o valor da hora atual. Cinco não tem tal função.
PERGUNTA

Que funções em cinco são análogas a Hora() e outras funções do grupo de funções de data e hora em quatro que não estão no grupo semelhante em cinco.

Obrigado por sua ajuda.

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

segunda versão da chamada de função

datetime  TimeCurrent(
   MqlDateTime&  dt_struct      // переменная типа структуры
   );
em geral, éhttps://www.mql5.com/ru/docs/dateandtime/timetostruct
 
Uma dica para um 4k. Como retornar as coordenadas de clique do mouse sobre o gráfico, de preferência por número de barras. Eu só consigo encontrar as coordenadas onde o roteiro foi jogado.
 
Valeriy Yastremskiy:

Obrigado, isso me faz lembrar)))) Sim, muitas coisas que eu não entendia na época) eu só queria dizer que com pedidos razoáveis tudo deveria funcionar. Estes são pedidos baratos em custo (tempo de execução e carga de CPU).

sim

Se o código estiver "sujo", você pode estragar qualquer sistema

e se for razoavelmente utilizado, onde o acesso ao preço Ask/Bid ocorre mesmo algumas dezenas de vezes por tick, então não afetará o desempenho da EA (máximo 1-2%)

ou seja, a lógica de utilização de recursos (ou chamadas de funções do sistema / ambiente do terminal) deve ser, se o algoritmo implicar o acesso a preços Ask/Bid milhares de vezes por tick, então.... muito provavelmente você deve reconsiderar o algoritmo em si, ou, alternativamente, lembrar os valores deAsk/Bid uma vez antes de calcular o algoritmo




Valeriy Yastremskiy:
Favor aconselhar por 4k. Coordenadas do mouse clique em um gráfico como retornar, de preferência por um número de barra. Encontre apenas as coordenadas onde eles jogaram o roteiro.

provavelmente procure porChartXYToTimePrice https://docs.mql4.com/ru/chart_operations/chartxytotimeprice

discutido apenashttps://www.mql5.com/ru/forum/353726

aqui está outro tópico também discutindo os cliqueshttps://www.mql5.com/ru/forum/344607

 
Igor Makanu:

se o algoritmo implica em consultar os preços Ask/Bid vários milhares de vezes por tick, então.... muito provavelmente você deve reconsiderar o algoritmo em si, ou, alternativamente, lembrar-se uma vez dos valores Ask/Bid antes de calcular o algoritmo




talvez procure porChartXYToTimePreço https://docs.mql4.com/ru/chart_operations/chartxytotimeprice

discutido apenashttps://www.mql5.com/ru/forum/353726

aqui está outro tópico também discutindo os cliqueshttps://www.mql5.com/ru/forum/344607

Em geral, se tivermos preços no tick, podemos trabalhar com eles até o final do OnTick, se não for crítico. E limitadores para ajudar a evitar o escorregamento).

Eu queria clicar em um castiçal e escrever seu valor em um arquivo.

CHARTEVENT_MOUSE_MOVE

 
Valeriy Yastremskiy:

Geralmente, se tivermos preços no tick, podemos trabalhar com eles até o final do OnTick, se não for crítico. E limitadores para ajudar contra escorregamentos)

Eu quero clicar em uma vela e salvar seu valor em um arquivo.

CHARTEVENT_MOUSE_MOVE

Talvez seja assim que você queira determinar o preço da barra e o tempo:

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);
      }
   }
}
ou melhor, estas são coordenadas de clique do mouse nos valores tempo + preço no gráfico, a barra deve ser definida viaiBarShift()
Razão: