Como obter parâmetros Abertos, Baixos, Altos, Fechados em MQL5? - página 5

 
Igor Makanu:

você pode tanto classe CNewbar, ou procurar no fórum por NewBar


Você tem uma chamada do iTime em sua classe. Fui aconselhado a esquecê-lo). Além disso, onde está a garantia de que não está fazendo o mesmo trabalho que a CopyRates? Você chama isso a cada tique. De qualquer forma, eu chamo a CopyRates em cada tic e o assunto está encerrado.

 
Artyom Trishkin:

Sim, a cada tique, verificamos o tempo:

E, em poucas palavras:

apenas escrevendo de joelhos - para mostrar a idéia, não a exatidão da escrita

Não faz sentido calcular uma nova barra se o próprio cálculo envolver CopyRates ou sua contraparte. As mesmas despesas serão.

Vou ligar a cada tique. Oops.

 
Igor Makanu:

você pode tanto classe CNewbar, ou procurar no fórum por NewBar

ZS: artigo completo!https://www.mql5.com/ru/articles/159



OK, o habitual...oops, oops, oops...e não uma única linha de código ))))

Citei meu exemplo para mostrar que nem sempre é conveniente (e raramente necessário) obter uma série de OHLC consecutivos. Em problemas práticos, muitas vezes é necessário obter uma seleção de valores OHLC de diferentes barras (os indicadores não são levados em conta)

Ok, não fique doente!

Ah, vamos lá. As pessoas gordas são mais frequentemente calorosas. É por isso que você também pode usar estas comparações. Quem se importa se você precisa da OHLC... Igor disse que você deveria usar fractais, então use-os...

 
Реter Konow:

Você tem a chamada do iTime em sua classe. Fui aconselhado a esquecê-lo). Além disso, onde está a garantia de que ela, por sua vez, não faz o mesmo trabalho que a CopyRates? Você chama isso a cada tique. Em resumo, vou ligar para a CopyRates a cada tick e o assunto está encerrado.

Isto é mais longo do que chamar o CopyTime() ou iTime() uma vez por tick.

CopyRates() é chamado somente quando você precisa obter todos os valores de barra de uma só vez - no momento da nova definição da barra.

 
Реter Konow:
Não faz sentido calcular uma nova barra se o próprio cálculo envolver CopyRates ou sua contraparte. As mesmas despesas serão.

Vou ligar a cada tique. Spas.

Resposta - você está errado.

 
Artyom Trishkin:

Isto é mais longo do que chamar o CopyTime() ou iTime() uma vez por tick.

Chame CopyRates() somente quando você precisar obter todos os valores da barra de uma vez - no momento de definir uma nova barra.

Ok. Portanto, o cenário para esquecer as funções iXXX deve ser esquecido).

 
Реter Konow:

Ok. Portanto, você deve esquecer as funções iXXX)).

É claro. Nem tudo é útil para o que eles dizem. E eu posso dizer essas porcarias :)))

Mas aqui - por razões de velocidade: CopyRates() é útil quando você precisa obter vários valores de uma barra simultaneamente (seu caso). É mais lento que CopyTime() ou iTime(), mas se você chamar CopyOpen(), CopyHigh(), CopyLow() e CopyClose() + (CopyTime() se necessário), então será mais lento que oCopyRates() de chamada única, que retornará todos os valores necessários de uma só vez.

Conclusão: em cada tick trabalhamos com CopyTime() ou iTime() para determinar uma nova barra, e no momento do aparecimento de uma nova barra chamamos CopyRates() uma vez.

E não se deve levar em conta as declarações religiosas, que não são confirmadas por nada além da crença. Você mesmo pode verificar o que seria mais rápido para o seu caso de definir uma nova barra - CopyTime() ou iTime() - recentemente implementada na função MQL5, que facilita a escrita de código entre plataformas (há uma mentira - já que a MQL4 também contém funções CopyXXX, mas a portabilidade do código MQL4 na MQL5 é mais fácil - você não precisa refazer as funções iXXX)

 
Реter Konow:
Caso contrário, como você saberia se o horário de abertura do bar atual tivesse mudado?
//+------------------------------------------------------------------+
//|                                                       NewBar.mq5 |
//|                        Copyright 2019, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"

MqlDateTime time;

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
{

   EventSetMillisecondTimer(100);
   return(INIT_SUCCEEDED);
}

//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
   EventKillTimer();   
}

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
{

   
}

//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer()
{
   TimeGMT(time);   
   //TimeLocal(time);

   if(NewMinute())
   {
     Print("Я новая минута");
   }		
}

//####################################################################

//Получить новое время
int zero = 0;
bool NewMinute()
{
  int minute = time.min; //time.sec; time.hour;  time.day; 
  if(zero != minute)
  {    
    zero = minute;
    return(true);
  }
  else return(false); 
}
 
Реter Konow:

Você tem a chamada do iTime em sua classe. Fui aconselhado a esquecê-lo). Além disso, onde está a garantia de que ele, por sua vez, não faz o mesmo trabalho que o CopyRates? Você chama isso a cada tique. De qualquer forma, eu chamo a CopyRates em cada tic e o assunto está encerrado.

Você sempre escreve e não tenta ler? Eu lhe dei um link para um artigo inteiro sobre o Novo Bar! Os artigos são verificados - verificados por pessoas de competência diferente daquelas que escrevem constantemente no fórum ;)

ZS: Se você parar de escrever e começar a ler, como o artigo no meu link, você pode encontrar outra maneira (SERIES_LASTBAR_DATE ) de não usar o iXXX() - Eu disse para você não usá-los ))) - Quem relataria bugs e erros, que os desenvolvedores lançaram de má qualidade )))))

 
Igor Makanu:

Você sempre escreve e não tenta ler? Eu lhe dei um link para um artigo inteiro sobre o Novo Bar! Os artigos são verificados - verificados por pessoas de competência diferente daquelas que escrevem constantemente no fórum ;)

ZS: Se você parar de escrever e começar a ler, como o artigo no meu link, você pode encontrar outra maneira ( SERIES_LASTBAR_DATE ) de não usar o iXXX() - Eu disse para você não usá-los ))) - quem diria aos bugs e erros que os desenvolvedores lançaram o shoddy )))))

Houve alguns problemas com SERIES_LASTBAR_DATE. Foi discutido aqui em algum lugar há muito tempo. Talvez tenha sido consertado.