Mt4 Fim do apoio. - página 33

 
Há também um problema com a hora de início. Algo não registra o início do bar na hora certa. Descobrirei isso mais tarde.
 
Nikolai Semko:

Peter, isso também não está funcionando para mim.
Seu estilo de programação é estranho. Você pode colocar tudo isso com todas as variáveis e loops do OnInit e OnTimer em um único procedimento. Se alguém quiser usá-lo, porque este código vai atrapalhar. E se tivermos 20 ou mais procedimentos do mesmo tipo com o mesmo conteúdo? Afinal de contas, ela é implementadaaqui .


Peter não está procurando uma saída fácil...

 
Реter Konow:
Há também um problema com a hora de início. Algo não registra o início do bar no momento certo. Descobrirei isso mais tarde.

O início da barra nem sempre é cronometrado com precisão.

Às vezes as barras são puladas por completo.
 
Nikolai Semko:

Peter, isso também não funciona para mim.
Seu estilo de programação é estranho. Você pode colocar todas estas coisas com todas as variáveis e loops do OnInit e OnTimer em um único procedimento. Se alguém quiser usá-lo, porque este pacote vai atrapalhar o caminho. E se houver 20 ou mais procedimentos com o mesmo conteúdo? Afinal de contas, é aquique é implementado.

Em um minuto funciona, mas não tranca o início do bar no momento certo.

Ainda não chequei em outros prazos, porque leva muito tempo para esperar.

Quanto ao estilo, isso não importa agora. Podemos tirar tudo do temporizador e colocá-lo em uma função separada. Eu estava pensando na solução em si, não nas variantes futuras de sua integração.

 
Vladimir Pastushak:

O início do bar nem sempre é exatamente pontual.

Sim, eu notei isso, eu vou consertar mais tarde.
 
Реter Konow:

Eu estava pensando que se uma pessoa realmente tem 600 instrumentos na visão geral do mercado e em cada carrapato ele verifica a chegada de uma nova barra para cada instrumento e cada período de tempo, pode ser caro...

Eu mesmo não negocio, portanto não sei exatamente quantas vezes esta função deve ser chamada na prática.

O loop duplo em símbolos e prazos na nova função de barra pode aumentar a carga somente se o número de símbolos e prazos for muito grande e a função for chamada em cada tick de centenas de símbolos. Talvez Dmitry esteja certo então.

Eu encurtei um loop na função.

Basta esquecer.

Aqui está um exemplo da minha aula especificamente para esta ação. Claro que não é uma obra-prima, mas é minha, e ela me entende e funciona.

class CNewBar
{
protected:
  MqlRates newBarRates[];
public:
 bool newBar();
 bool newBar(ENUM_TIMEFRAMES timeframe, datetime & tOld);
};/********************************************************************/

bool CNewBar::newBar()
{
 static datetime timeLastBar;
  if(CopyRates(_Symbol, PERIOD_CURRENT, 0, 1, newBarRates) < 0)
   return(false);
  bool ret = timeLastBar != newBarRates[0].time;
   if(ret)
    timeLastBar = newBarRates[0].time;
   return(ret);
}/********************************************************************/

bool CNewBar::newBar(ENUM_TIMEFRAMES timeframe, datetime & tOld)
{
  if(CopyRates(_Symbol, timeframe, 0, 1, newBarRates) < 0)
   return(false);
    datetime tNew = newBarRates[0].time;
   bool ret = tOld != tNew;
   if(ret)
    tOld = tNew;
   return(ret);
}/********************************************************************/

Se você quiser determinar somente no TF atual, você tem que chamar a função sem parâmetros.

Assim, se for colocada em .mqh, a biblioteca deve ser anexada.

#include <путь_папка\имя_файла.mqh>
CNewBar newBar;

e é chamado em OnTick().

if(newBar.newBar())
 Print("Новый бар на текущем ТФ");

Se precisarmos definir outras TFs, declaramos variáveis para cada período e símbolo, se necessário, no nível das variáveis globais ou estáticas.

static datetime oldD1 = 0, oldH1 = 0;

if(newBar.newBar(PERIOD_H1, oldH1) && newBar.newBar(PERIOD_D1, oldD1)
 Print("Открылся новый день и новый час");

Esta abordagem é eficaz quando se trabalha na TF diferente da exigida e protege de problemas com a troca acidental do gráfico no qual o Expert Advisor trabalha.

 
Nikolai Semko:

Peter, isso também não funciona para mim. Embora o algoritmo seja bastante rápido, é uma perda de tempo. Mas ainda não está funcionando. Não há tempo para descobrir.
Você tem um estilo de programação estranho. Você pode colocar tudo isso com todas as variáveis e loops do OnInit e OnTimer em um único procedimento. Se alguém quiser usá-lo, tudo isso vai atrapalhar. E se houver 20 ou mais procedimentos com o mesmo conteúdo? Ela é implementadaaqui .


Talvez você não saiba o que significa "rápido"?

 
Alexey Viktorov:

Desembucha...

Aqui está um exemplo da minha aula especificamente para esta ação. Claro, não é uma obra-prima, mas é minha e funciona para mim.

Se você quiser determinar somente na TF atual, então a função sem parâmetros é chamada.

Assim, se for colocada em .mqh, a biblioteca deve estar conectada.

e é chamado em OnTick().

Se eu quiser determinar outras TFs, então no nível das variáveis globais ou estáticas, as variáveis são declaradas para cada período e símbolo, se necessário.

Esta abordagem é eficaz quando se trabalha na TF diferente da exigida e protege contra problemas relacionados à troca acidental do gráfico no qual o Expert Advisor opera.


Você não tem idéia da idiotice que demonstrou, é simplesmente absurdo. Mas não vou mostrar exatamente em que lugar, porque todos vocês não estão interessados na minha opinião))))

 
Alexey Viktorov:

Desembucha...

Aqui está um exemplo da minha aula especificamente para esta ação. Claro, não é uma obra-prima, mas é minha e funciona para mim.

Se você quiser determinar somente na TF atual, então a função sem parâmetros é chamada.

Assim, se for colocada em .mqh, a biblioteca deve ser anexada.

e é chamado em OnTick().

Se for necessário determinar outras TFs, então no nível das variáveis globais ou variáveis estáticas são declaradas para cada período e, se necessário, para o símbolo.

Esta abordagem é eficaz quando se trabalha na TF diferente da desejada e protege de problemas com a troca acidental do gráfico no qual o Expert Advisor trabalha.

E quanto aos outros símbolos? a tarefa era identificar a mudança de um TF em qualquer símbolo do relatório de mercado para qualquer TF .

Cumprimentos.
 
Alexey Viktorov:

Desembucha...

Aqui está um exemplo da minha aula especificamente para esta ação. Claro, não é uma obra-prima, mas é minha e funciona para mim.

Se você quiser determinar somente na TF atual, então a função sem parâmetros é chamada.

Assim, se isto for colocado em .mqh, então a biblioteca deve ser incluída

e é chamado em OnTick().

Se eu quiser determinar outros prazos, então no nível das variáveis globais ou variáveis estáticas são declaradas para cada período e símbolo, se necessário.

Esta abordagem é eficaz quando se trabalha na TF diferente da desejada e protege contra os problemas de mudança acidental do gráfico no qual o Expert Advisor trabalha.

Sua solução funciona bem? Se bem, então tudo está bem.

E o caso de centenas de instrumentos - não haverá nenhuma sobreposição?